본문 바로가기
4. 데이터분석

OCI Data Catalog - LiveLabs!

by Unemployed 2024. 8. 18.

OCI 에 무료 기능은 Data Catalog 에 대해서, Oracle Live Labs 로 수행하는 방법을 알아보자.

 

오라클 LiveLabs 는 누구나 무료로, 본인의 환경(Run on Your  Tenancy) 혹은 실습환경 (Run On LiveLabs Sandbox) 로 사용할 수 있다. 

 

실습의 주제는 " Access the Data Lake using Autonomous Database and Data Catalog " 이다. 

 

(라이브 랩스 선택 링크) 

Access the Data Lake using Autonomous Database and Data Catalog (oracle.com) 

 

(한글번역 링크) 

https://oracle-livelabs.github.io/adb/shared/data-catalog/dcat-adb-integrate/workshops/freetier/index.html 

 

\해당 화면에서 Start 버튼을 클릭하고, Run On LiveLabs Sandbox 를 클릭하자.  (로그인 필요) 

 

 

 

이후 샌드박스 환경을 예약 한다. Submit Reservation 클릭 

 

본인 메일로 샌드박스 안내 메일이 전송되며, 해당 내역은 My Reservation Menu 애서 확인할 수 있다. 

아래와 같이 해당 환경이 준비 되었으며 4시간 54분 사용 가능하다는 안내 문구를 받을  수 있다. 

 

 

My Reservation Menu 에서 Launch Workshop버튼을 누른다. 

 

 

화면이 전화되며, 좌측에 목차가 메인에 내용이 표기된다. 여기에서 좌상단에 View Login Info 를 클릭한다. 

 

나의 Sandbox 정보가 표기되며, 리전, 데넌시, 유져, 암호 등이 나온다. 

우상단 검은색의 Launch OCI 버튼을 클릭한다. (신규 탭으로 OCI Console 접속 로그인 화면이로 이동한다. ) 

 

테넌시를 확인하고 다음을 클릭한다.  이후 쿠키를 모두 승인하고, 해당 User/pass 로 접속한다. 

비밀번호 재설정 안내가 나오면 신규 비밀번호로 재 설정한다. 

 

자 이제 해당 테넌시의 OCI Console 에 접속이 완료되었다. 

 

해당 테넌시에러 LiveLabs 가이드에 따라 하나하나 따라해 볼 수 있다. 

 

 

Introduction

About this Workshop

이 워크숍에서는 Autonomouse Database(ADB) 와 OCI Data Catalog서비스를 활용하여 ADB 와 Data Catalog 의 싱크를 맞추고 Object Storage 를 연동하여, ADB 에서 쿼리를 해보는 실습을 진행 할 예정이다 

 

OCI Data Catalog 는 기업 데이터를 위한 완전 관리형 셀프 서비스 데이터 검색 및 거버넌스 솔루션임. Data Catalog를 사용하면 기술, 비즈니스 및 운영 메타데이터를 관리할 수 있는 단일 협업 환경을 제공받게 됩니다. 이 메타데이터를 수집, 조직, 검색, 액세스, 이해, 강화 및 활성화할 수 있다

 

Lab 1: Review the Workshop Environment Setup (Optional)

이번 워크숍은 이미 만들어진 환경에서 진행하기 때문에 모든 환경이 미리 셋팅되어 있다. (데이터 및 권한)

 

나에게 할당된 Compartment  로 들어가면 이미 DB 하나가 아래와 같이 띄어 져 있는 것을 확인 할 수 있다. 

 

* 위 셋팅는 이미 필요 환경이 구성완료된 셋팅이며, 하나하나  환경 설정을 만드는 셋팅은 Run on your Tenency 로 선택하면 해당 부분을 확인 가능하다. 대략적인 내용은 아래와 같다. 

  • (Optional) Create a compartment for your Data Catalog resources.
allow group catalog-admins to manage data-catalog-family in compartment x​

 = 위 명령은 아래의 명령을 각각 준 것과  동일 합니다. 

allow group catalog-admins to manage data-catalogs in compartment x
allow group catalog-admins to manage data-catalog-private-endpoints in compartment x
allow group catalog-admins to manage data-catalog-metastores in compartment x
allow group catalog-admins to manage data-catalog-data-assets in compartment x
allow group catalog-admins to manage data-catalog-glossaries in compartment x
allow group catalog-admins to manage data-catalog-namespaces in compartment x

 

  • Create a dynamic group policy to allow Data Catalog to manage the Data Catalog resources
Any {resource.id = 'ocid.datacatalog.oc1..<unique_ID>'}
  • Create the access policy to allow the dynamic group to access Oracle Cloud Infrastructure services such as Data Catalog, ADB, and optionally Oracle Object Storage buckets.  (*Dynamic Group 에 Data Catalog 을 넣고 해당 DG 가 다른리소스에 접근할 수있는 권한을 부여합니다. )
allow dynamic group <dynamic-group-name> to read object-family in compartment id <compartment_ocid>
where any {target.bucket.name='bucketA', target.bucket.name='bucketB'}
  • Create a Data Catalog instance.
  • Import a Glossary into your Data Catalog instance.
  • Create an Autonomous Database instance.
Any {resource.id = 'ocid.datacatalog.oc1..<unique_ID>'}

 

* 참조 Policy Link(https://docs.oracle.com/en-us/iaas/data-catalog/using/policies.htm, https://docs.oracle.com/en-us/iaas/data-catalog/using/policy-examples.htm). 

 (특정 그룹은 특정 에셋만 접근하게 하는 권한등의 상세 설정 참조)

Lab 2: Harvest Technical Metadata from Oracle Object Storage

하베스팅은 데이터 자산에서 기술 메타데이터를 추출하여 Data Catalog 저장소에 넣는 과정입니다. 데이터 자산(Asset) 은 데이터베이스, 객체 저장소, 파일 또는 문서 저장소, 메시지 큐, 애플리케이션 같은 데이터 소스를 의미합니다. 이 실습에서는 Oracle Object Storage 데이터 자산(Asset) 을 만들고, 새로운 데이터 자산에 기본 연결을 추가하며, 파일 이름 패턴을 만들어 데이터 자산에 할당한 다음, 데이터 자산을 하베스팅하고 하베스팅된 데이터 엔티티를 보는 단계를 안내합니다.

아래와 같이 이미 만들어진 Data Catalog 가 내 Compartment 에 보여 집니다. 
 

위와 같이 미리 만들어진 Data Catalog Service 를 통해 워크숍을 각자 수행합니다. 

 

Lab 2 : Task 2: 비즈니스 글로서리를 만듭니다. 

 

Lab 2 : Task 3:  데이터 에셋을 만듭니다. Object Storage Bucket 으로 만듭니다. . 

 

 

 

Lab 2 : Task 4:  3개의 커넥션을 등록합니다. 

 

Lab 2 : Task 5:  파일네임 패턴을 등록하고 이를 자산(Asset) 과 연동합니다. 

 

아래와 같이 여러개의 파일이 규칙에 따라 동일 로직컬 엔티티로 등록이 됩니다. 

 

 

Lab 2 : Task 8:  각각  Harvest 이후 이렇게 로지컬 엔티티로 여러개 파일이 등록되어 있는 것을 확인 합니다 

 

Lab 3 : Task 5:  ADB 에서 Data Catalogy metadata 를 통해 External Table을 만들고 이를 조회합니다. 

 

ADB Admin 접속 

 

참조  SQL 

-- Resource Principal 활성화 

EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL();


-- Resource Principal 확인 
SELECT * FROM all_credentials 

-- Data Catalog Credential 생성 
BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => 'OCI_KEY_CRED_DC_ADM',
       user_ocid       => 'ocid1.user.oc***pgfvwvyqouydzsbwqejunxuiuug62qo2qpf2uhlibly56tq',
       tenancy_ocid    => 'ocid1.tenancy.***aastu36qjyawpq44pvsyf6qqhdmzmnudiyzwyfvudd35tyxrdgcena',
       private_key     => 'MIIEvQIBADA*MN1NCZ9eoRfwctcHMs
3iZDHJQyk1n4+cicpV8CbYNSsbgNLhf5s4FsxtRsWCILDh0nz26hTxR3cQKBgHcR
0CShRKAGqoPEQW3/EmUQN3wsZ7mHU1N8ammP9zJ+OzPf3j0ekyZx4S7gm+OIQ2TD
KNWJsE1KGTrHrqYByYbwsd8gwvhdqR7fbhQOcsOHofXUOXQ6KJB6Ocjshpg6H4NG
1b31mBliQM+csjjwwGrQTUsgio0NbxsXTx2YxPPZAoGAR28UQddCR0+Oi08xogtf
W+bGq/RXuRi6erSQpM/Y4KcptkyNKfw7Ywkmbq/tGY4pPQeQHVDSln9Qu3Dtz5aq
+cD/kc4GicxwASeT5EOL+gcIJs1m9VEpnm6Ocx/Z25gVS/f0UjAyPJan8eIs75CG
pimZuHOZnthFdiCOE4Zdwck=',
       fingerprint     => 'b2:e9:d0:ed:c***1:94:0a:2a:55:ae');
END;
/

-- 변수 선언 (크레덴셜 할당용)
define dcat_credential ='OCI_KEY_CRED_DC_ADM'

-- 크레덴셀 할당 

exec dbms_dcat.set_data_catalog_credential(credential_name => '&dcat_credential');
exec dbms_dcat.set_object_store_credential(credential_name => 'OCI$RESOURCE_PRINCIPAL');

-- 크레덴셜을 사용하여 조회 가능 Data Catalog 조회 

select *
from all_dcat_global_accessible_catalogs;

-- 변수 선언 

define dcat_region='ap-seoul-1'
define dcat_ocid = 'ocid1.datacatalog.oc
888-1.amaaaaaa7ratczia3jpmbk23n6rvki7hj2kb4wbpoycs7veage7mk42zfpvq'

-- Data Catalog 연결 
begin
dbms_dcat.set_data_catalog_conn (
region => '&dcat_region',
catalog_id => '&dcat_ocid');
end;
/

-- 연결 확인 

select *
from all_dcat_connections;

describe all_dcat_connections;

select *
from all_dcat_assets;

select *
from all_dcat_folders;

describe all_dcat_folders;

select *
from all_dcat_entities;

-- 데이터 에셋 조회 
select path, display_name, key as folder_key, data_asset_key
from all_dcat_folders
-- where display_name='BY_DS_MOUNT_BUCKETS';


-- 해당 특정 에셋과  Sync  (he synchronization process creates schemas and external tables based on the Data Catalog data assets and logical entities)

begin
dbms_dcat.run_sync(synced_objects =>
    '{"asset_list": [
        {
            "asset_id":"ff6c7084-8c38-4807-93e2-885cb043cd13",
            "folder_list":["a033f20b-d527-4cf5-af23-e2fbffbf2548"]
        }
    ]}', grant_read => 'dwrole');
end;
/


-- Sync table 확인 

select oracle_schema_name, oracle_table_name
from dcat_entities;

-- Table Data 확인 
select *
from DCAT$DATA_LAKE_ASHBUN_GOLD.GENRE
where rownum < 10;

 

DW role 이 있는 타 유저도 조회가능 

 

아래와 같이 특정 스키마 및 테이블로 조회 가능 

 

시각화 예시 

 

 

작성자: 장재석 (coolguy81@gmail.com) / Cloud Engineer

개인의 시간을 할애하여 작성된 글로서 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

댓글