DBMS_CATALOG를 사용하여 카탈로그 관리
DBMS_CATALOG 패키지는 Oracle Autonomous AI Database용 데이터베이스 카탈로그 관리를 위한 포괄적인 프로시저, 함수 및 유형을 제공합니다.
카탈로그란?
- 데이터베이스 링크를 통해 사용할 수 있는 객체 집합
- DBMS_SHARE(예: 델타 공유)를 통해 사용 가능한 공유 객체 집합
- Iceberg REST 카탈로그에서 관리하는 Iceberg 테이블 세트;
- Amazon Glue, Databricks Unity Catalog 또는 Snowflakes Polaris와 같은 타사 제품에서 정의한 객체 세트
- Oracle OCI Data Catalog Service에서 정의한 객체 집합입니다.
- 카탈로그는 특정 업무 목적을 위해 함께 그룹화된 객체 집합인 "도메인" 또는 "데이터 제품"으로 간주할 수도 있습니다.
Data Studio 도구 모음의 카탈로그 도구에 대한 자세한 내용은 카탈로그 도구를 참조하십시오.
운영 체제에서는 파일 시스템 마운트를 통해 외부 데이터 파일에 액세스할 수 있습니다. 유사하게 DBMS_CATALOG 패키지를 사용하여 카탈로그를 마운트하여 자율운영 AI 데이터베이스에서 외부 데이터에 액세스할 수 있습니다.
다음 예에서는 외부 Iceberg REST 카탈로그를 마운트하는 방법을 보여줍니다. 이를 사용하려면 세 가지 정보가 필요합니다.
- Iceberg REST 카탈로그 엔드포인트;
- 이 끝점을 호출하는 데 사용되는 인증서(예: Bearer 토큰)입니다.
- Iceberg 데이터 파일이 저장된 버킷에 액세스하는 데 사용되는 인증서(예: 사용자 이름/비밀번호)입니다.
BEGIN
-- Create a credential capable of accessing an external Iceberg REST catalog
dbms_cloud.create_credential('ICEBERG_CATALOG_CRED', ...);
-- Create a credential capable of accessing the bucket where the
-- Iceberg data files are stored.
dbms_cloud.create_credential('ICEBERG_STORAGE_CRED', ...);
-- Mount the iceberg catalog
dbms_catalog.mount_iceberg(
catalog_name => 'ICEBERG_CAT',
endpoint => 'https://...',
catalog_credential => 'ICEBERG_CATALOG_CRED',
data_storage_credential => 'ICEBERG_STORAGE_CRED',
catalog_type => 'ICEBERG_UNITY');
END;
/
-- List tables in the iceberg catalog
SELECT owner, table_name
FROM all_tables@iceberg_cat;
-- Read data from an iceberg table
SELECT *
FROM a_schema.a_table@iceberg_cat;DBMS_CATALOG는 카탈로그와 관련된 작업을 정의하고 처리하는 데 사용됩니다.
Oracle Autonomous Database 내에서 카탈로그를 관리하기 위한 포괄적인 절차, 기능 및 유형을 제공합니다. 카탈로그 마운트 및 마운트 해제, 카탈로그 속성 관리, 자격 증명 처리, 테이블, 스키마 및 객체와 같은 카탈로그 엔티티 작업과 같은 작업을 지원합니다. 이 패키지는 외부 데이터 소스를 통합하고 안전하고 효율적인 방식으로 메타데이터를 관리하는 데 필수적입니다.
보안 모델
DBMS_CATALOG 패키지는 AUTHID CURRENT_USER 모델에서 작동합니다. 즉, 현재 사용자의 권한으로 실행됩니다. 카탈로그 마운트, 등록 정보 업데이트 또는 자격 증명 관리와 같은 작업을 수행하려면 적절한 권한이 있어야 합니다.
주:
외부 인터넷 리소스에 접속하기 위해 자율운영 AI 데이터베이스가 필요한 카탈로그는 거의 없습니다. 따라서 연관된 데이터베이스 유저의 액세스 제어 리스트에 관련 외부 주소를 추가해야 합니다. 예를 들어, Azure에서 Databricks Unity Iceberg 카탈로그에 대한 액세스를 사용으로 설정하는 경우 두 주소 즉, Iceberg REST API에 액세스하기 위한 주소와 기본 데이터에 대한 액세스가 필요한 경우 주소를 허용 목록에 추가해야 할 수 있습니다.BEGIN
dbms_network_acl_admin.append_host_ace(
host => '*.azuredatabricks.net',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'DBUSER',
principal_type => xs_acl.ptype_db));
dbms_network_acl_admin.append_host_ace(
host => '*.blob.core.windows.net',
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'DBUSER',
principal_type => xs_acl.ptype_db));
END;
/DBMS_CATALOG 메소드를 실행하려면 DWROLE가 있어야 합니다.
DWROLE을 부여합니다.GRANT DWROLE TO MY_USER;카탈로그 유형 및 상수
이 절에서는 패키지에 정의된 카탈로그 유형 및 주요 상수에 대한 개요를 제공합니다. 다양한 카탈로그 소스를 구성하는 데 사용되는 여러 카탈로그 범주에 대해 설명하고 카탈로그 속성 및 동작을 구성하고 관리하기 위한 필수 상수를 개략적으로 설명합니다.
카탈로그 유형입니다.
CATALOG_TYPE_SHARE:시스템 또는 사용자 간에 데이터를 공유하기 위해 주로 설계된 공유 기반 카탈로그를 나타냅니다. 예를 들어, Data Studio의 데이터 공유와 같은 데이터 공유 서비스는 공유 기반 카탈로그를 사용하여 데이터를 안전하게 배포합니다.
CATALOG_TYPE_DATA_CATALOG: AWS Glue 또는 OCI Data Catalog와 같은 외부 데이터 카탈로그를 나타냅니다. 이러한 카탈로그는 데이터 집합에 대한 메타데이터의 중앙화된 저장소 역할을 합니다. 예를 들어, AWS Glue Data Catalog는 S3 및 Redshift와 같은 AWS 서비스 전반에서 데이터 소스의 메타데이터를 자동으로 검색 및 관리하여 원활한 데이터 통합 및 쿼리를 지원합니다.CATALOG_TYPE_DB_LINK: 데이터베이스 링크에서 작성된 카탈로그의 범주를 나타냅니다. 이러한 유형의 카탈로그를 사용하면 메타 데이터 및 원격 또는 외부 데이터베이스에 상주하는 객체를 액세스 및 구성하여 설정된 데이터베이스를 통해 연결할 수 있습니다.자세한 내용은 데이터베이스 링크를 사용하여 Oracle 및 비Oracle 데이터베이스에서 데이터 로드를 참조하십시오.
CATALOG_TYPE_VIRTUAL: 물리적 데이터 소스에 대한 추상화 기능을 제공하는 가상 카탈로그를 나타냅니다. 가상 카탈로그는 데이터 자체를 저장하지 않고 데이터 가상화 플랫폼에서 생성된 가상 뷰와 같이 서로 다른 데이터 소스를 쿼리하기 위한 통합 인터페이스를 제공합니다.CATALOG_TYPE_ICEBERG: Apache Iceberg 형식으로 저장된 테이블의 메타데이터를 관리하는 Iceberg 카탈로그를 나타냅니다. Iceberg는 대규모 분석 데이터 세트를 위해 설계된 테이블 형식으로, 스키마 진화 및 시간 이동과 같은 기능을 지원합니다.자세한 내용은 카탈로그 관리를 참조하십시오.
상수
TYPE_CATALOG및NS_CATALOG: 카탈로그 유형 및 네임스페이스를CATALOG로 정의합니다.DEFAULT_CATALOG:LOCAL로 설정된 기본 카탈로그 이름입니다.- 카탈로그 동작 및 메타데이터 캐싱 관리를 위해
PROP_IS_ENABLED,PROP_IS_SYNCHRONIZED,PROP_CACHE_ENABLED,PROP_CACHE_DURATION등의 등록정보 상수입니다.상수명 값 설명 PROP_IS_ENABLEDIS_ENABLED이 속성은 카탈로그가 현재 질의 및 검색에 대해 사용으로 설정되었는지 여부를 결정합니다.
적합한 값:-
예: 카탈로그가 Data Studio UI 검색 대화상자에 나타나며 데이터베이스 링크 구문을 사용하여 SQL 질의에 사용할 수 있습니다(예: all_users@catalog에서 사용자 이름 선택).
-
아니오: 카탈로그가
ALL_MOUNTED_CATALOGS뷰에 나열되지만 Data Studio UI 검색에 포함되지 않으며 데이터베이스 링크 구문에 사용할 수 없습니다.
PROP_CACHE_ENABLEDCACHE_ENABLED이 속성은 성능 향상을 위해 원격 스키마의 메타데이터를 로컬 데이터베이스에 캐시해야 하는지 여부를 결정합니다.
적합한 값
- 예 메타데이터는 첫번째 액세스 시 캐시되고
PROP_CACHE_DURATION에서 지정한 기간 동안 캐시에 유지됩니다. - 아니오:
메타데이터가 캐시되지 않습니다. 카탈로그 내의 객체에 액세스하려는 모든 시도는 query 시에 원격 메타 데이터 소스에 연결됩니다.
PROP_CACHE_DURATIONCACHE_DURATION메타데이터가 오래되기 전에 캐시에 보관해야 하는 시간(초)입니다. 기본값은 3600초(1시간)입니다.
사용자는 언제든지
DBMS_CATALOG.FLUSH_CATALOG_CACHE를 호출하여 캐시를 수동으로 비울 수 있습니다.사용자는 언제든지
DBMS_CATALOG.PREFILL_CATALOG_CACHE를 호출하여 캐시를 새로 고칠 수 있습니다.PROP_CACHE_ASYNC'CACHE_ASYNC'이 필드는 비동기 작업을 사용하여 캐시를 채울 경우 표시됩니다.
적합한 값
- 예:
메타데이터는 사용자가 메타데이터를 처음 요청할 때 생성되는 DBMS_SCHEDULER 작업을 사용하여 캐시에 저장됩니다.
- 아니오:
메타 데이터는 유저에게 메타 데이터를 요청하는 유저의 데이터베이스 세션을 캐시합니다.
PROP_DEFAULT_SCHEMADEFAULT_SCHEMA사용자가 폼 질의를 실행하는 경우 기본적으로 선택될 원격 스키마의 이름:
기본 스키마는 로컬 데이터베이스에서 사용자의 고유 스키마와 동일한 역할을 합니다.select * from table@catalogPROP_DCAT_TYPEDATA_CATALOG_TYPEDBMS_CATALOG.MOUNT_DATA_CATALOG로 마운트된 카탈로그의 유형입니다.적합한 값
- AWS_GLUE: 카탈로그는 원격 AWS Glue 저장소 위에 정의됩니다.
- OCI_DCAT: 카탈로그는 OCI Data Catalog 인스턴스 위에 정의됩니다.
주:
이것은 읽기 전용 등록 정보입니다.PROP_CUSTOMCUSTOM사용자 정의 속성은 카탈로그, 스키마, 테이블 또는 카탈로그 내의 다른 객체와 연관된 이름/값 쌍입니다.
사용자 정의 등록 정보를 지정하는 두 가지 방법이 있습니다.- 임의의 문자열 값과 함께 조합 속성 이름 '
CUSTOM:MY_PROP'을 지정하여 단일 사용자정의 속성 "MY_PROP"을 설정할 수 있습니다.DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'CUSTOM:MY_PROP', new_value => 'Property Value'); - 이름 값 쌍을 포함하는 JSON 객체와 함께 단순 속성 이름 'CUSTOM'을 지정하여 고객 속성 그룹을 지정할 수 있습니다.
DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'CUSTOM', new_value => '{"Property1" : "Value 1", "Property2" : "Value 2", ...}');주:
사용자 정의 등록 정보 이름은 대소문자를 구분하므로CUSTOM:MY_PROP는CUSTOM:My_Prop와 구분됩니다.사용자 정의 등록 정보를 제거하려면 값을 NULL로 설정합니다.
사용자정의 속성은 Data Studio UI에서 검색어로 사용할 수 있습니다. 예를 들어,DBMS_CATALOG.GET_TABLES에서 conditions 파라미터를 지정하면 MY_PROP 속성이 있는 모든 테이블을 찾을 수 있습니다.SELECT table_name FROM DBMS_CATALOG.GET_TABLES( catalog_name => 'some_catalog', conditions => '#MY_PROP');특정 값을 검색할 수도 있습니다.
SELECT table_name FROM DBMS_CATALOG.GET_TABLES( catalog_name => 'some_catalog', conditions => '#MY_PROP="Property Value"');
PROP_METADATAMETADATA사용자정의 메타데이터는 사용자정의 속성과 유사하지만 자유 형식 JSON을 포함할 수 있습니다. 메타데이터는 객체와 함께 저장되며 검색할 수 있지만 검색어로 사용되지는 않습니다.
사용자 정의 메타데이터를 지정하는 두 가지 방법이 있습니다.- 속성 이름 'METADATA'를 사용하여 전체 메타데이터를 JSON으로 설정할 수 있습니다.
DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'METADATA', new_value => '{"subObject":{"propName":"abc"}}'); - 조합 속성 이름 'METADATA:path'를 사용하여 메타데이터의 하위 구성요소를 업데이트할 수 있습니다. 여기서 경로는 일부 상대 JSON 경로입니다.
DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'METADATA:subObject.propName', new_value => 'xyz');
PROP_CONFIGURATIONCONFIGURATION구성 속성은 Iceberg 카탈로그에 대한 특정 구성 속성을 업데이트하는 데 사용됩니다. CUSTOM 속성과 비슷한 방식으로 작동합니다.
BEGIN dbms_catalog.update_catalog_property( 'iceberg_cat', 'CONFIGURATION:IS_CASE_SENSITIVE', 'YES'); END; / -
데이터 유형
DBMS_CATALOG 패키지에는 카탈로그 관련 정보를 관리하기 위한 다양한 사용자 정의 데이터 유형이 도입되었습니다. URL은 다음과 같습니다.
credential_info및credential_info_map: 인증서 정보를 저장하고 매핑하기 위한 구조입니다.catalog_table및catalog_tables: 자세한 테이블 메타데이터(예: 소유자, 이름, 설명, 상태)를 저장하기 위한 레코드 및 테이블입니다.catalog_schema및catalog_schemas: 스키마 메타데이터에 대한 레코드 및 테이블입니다.catalog_object및catalog_objects: 카탈로그 내 객체 메타데이터에 대한 레코드 및 테이블입니다.
- DBMS_CATALOG 패키지
DBMS_CATALOG패키지에는 기능별로 그룹화된 카탈로그 관리를 위한 광범위한 서브 프로그램이 포함되어 있습니다. - DBMS_CATALOG 요약
이 섹션에서는 Oracle Autonomous AI Database와 함께 제공되는DBMS_CATALOG하위 프로그램을 다룹니다.
상위 항목: 카탈로그 툴