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パッケージを使用してカタログをマウントすることで、Autonomous AI Databaseの外部データにアクセスできます。
次の例は、外部Iceberg RESTカタログをマウントする方法を示しています。これを使用するには、3つの情報が必要です。
- Iceberg REST Catalogエンドポイント
- このエンドポイントのコールに使用される資格証明(ベアラー・トークンなど)
- 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データベース内のカタログを管理するための包括的なプロシージャ、ファンクションおよびタイプのセットを提供します。カタログのマウントおよびアンマウント、カタログ・プロパティの管理、資格証明の処理、表、スキーマ、オブジェクトなどのカタログ・エンティティの操作などの操作をサポートします。このパッケージは、外部データ・ソースを統合し、セキュアで効率的な方法でメタデータを管理するために不可欠です。
セキュリティ・モデル
DBMS_CATALOGパッケージは、AUTHID CURRENT_USERモデルで動作します。つまり、現行のユーザーの権限で実行されます。カタログのマウント、プロパティの更新、資格証明の管理などの操作を実行するには、適切な権限が必要です。
Autonomous AI Databaseが外部インターネット・リソースに接続するために必要なカタログはほとんどありません。したがって、関連するデータベース・ユーザーのアクセス制御リストに、関連する外部アドレスを追加する必要があります。たとえば、AzureでDatabricks Unity Icebergカタログへのアクセスを有効にする場合、Iceberg REST APIにアクセスするためのアドレスと、基礎となるデータへのアクセスをユーザーが要求するアドレスという2つのアドレスをホワイトリストに登録する必要があります。
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 Databasesからのデータのロード」を参照してください。
CATALOG_TYPE_VIRTUAL: 物理データ・ソースに対する抽象化を提供する仮想カタログを表します。仮想カタログはデータ自体を格納しませんが、データ仮想化プラットフォームで作成された仮想ビューなど、異なるデータ・ソースを問い合せるための統合インタフェースを提供します。CATALOG_TYPE_ICEBERG: Icebergカタログを表し、Apache 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このプロパティは、カタログが問合せおよび検索に対して現在有効になっているかどうかを決定します。
有効な値::-
YES: カタログはData Studio UI検索ダイアログに表示され、データベース・リンク構文を使用してSQL問合せで使用できます(all_users@catalogからユーザー名を選択するなど)。
-
NO: カタログは
ALL_MOUNTED_CATALOGSビューにリストされますが、Data Studio UI検索には含まれず、データベース・リンク構文では使用できません。
PROP_CACHE_ENABLEDCACHE_ENABLEDこのプロパティは、パフォーマンスを向上させるために、リモート・スキーマのメタデータをローカル・データベースにキャッシュするかどうかを決定します。
有効値
- はいメタデータは初回アクセス時にキャッシュされ、
PROP_CACHE_DURATIONで指定された期間キャッシュに残ります。 - いいえ:
メタデータはキャッシュされません。カタログ内のオブジェクトにアクセスするすべての試行は、問合せ時にリモート・メタデータ・ソースに到達します。
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データ・カタログ・インスタンス上に定義されます。
ノート
このプロパティは読取り専用です。PROP_CUSTOMCUSTOMカスタム・プロパティは、カタログ、スキーマ、表またはその他のオブジェクトをカタログ内でユーザーが関連付けた名前と値のペアです。
カスタム・プロパティを指定するには、2つの方法があります。- コンポジット・プロパティ名'
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に条件パラメータを指定して、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を含めることができます。メタデータはオブジェクトとともに格納され、取得できますが、検索語として使用されません。
カスタム・メタデータを指定するには、2つの方法があります。- プロパティ名「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パッケージには、カタログ関連情報を管理するための様々なカスタム・データ型が導入されています。これらは次のとおりです。
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サブプログラムについて説明します。