外部カタログ
Oracle AI Data Platform以外の場所からデータをソーシングするための外部カタログを作成します。
外部カタログは、AI Data PlatformをOracle Autonomous AI Lakehouse、Oracle AI Database、Oracle Autonomous AI Transaction Processingなどの外部データ・ソース、およびSnowflake、Azure SQL、MySQLなどのサードパーティ・ストアに接続します。AIデータ・プラットフォームは、これらのソースからメタデータを検出してマスター・カタログに同期するため、ユーザーは、基礎となるデータを複製せずにリモート・スキーマおよび表を参照および問合せできます。
外部カタログは、外部カタログの作成時に提供された資格証明を使用して、外部ソースを問い合せます。データ・ソースの詳細は、内部ソースを参照してください。
For example, if you create an external catalog for an Autonomous AI Lakehouse instance where the Autonomous AI Lakehouse user credentials used have access to schema1 but not schema2, only schema1 appears in the external catalog. 外部カタログに対する権限を持つユーザーは、Autonomous AI Lakehouseユーザーがアクセスできるスキーマのみを問い合せることができます。
ノート:
AIデータ・プラットフォームでは、プラガブル・データベース(PDB)間で共有されるスキーマおよび表から、またはOracle管理スキーマおよび表からデータを収集することはサポートされません。Autonomous AI LakehouseおよびAutonomous AI Transaction Processingに必要な権限
- CREATE SESSION: データベースに接続する
- 最小権限の付与または専用の読取りロールによる、必要なオブジェクト(表/ビュー/外部表)に対するSELECTアクセス
- READ、WRITE on DIRECTORY DATA_PUMP_DIR
制限事項
UPDATE操作は、外部カタログではサポートされていません。検出および問合せアクセスには、外部カタログ表を使用します。
外部カタログの作成に使用された資格証明にDDL文を実行する権限がある場合でも、DDLはサポートされていません。
- 表名を大文字で指定すると、表は大文字を使用して作成され、Autonomous AI Lakehouseでのデフォルトの大/小文字を区別しない動作に従います。
- 表名を小文字で指定すると、その表はAutonomous AI Lakehouseで大/小文字が区別されるように作成されます。Autonomous AI Lakehouseで作成された表の列名は、常に大/小文字が区別されます。
- 外部カタログの取込みおよびリフレッシュ中、ソース列のコメントは256 UTF-8バイトに制限されます。制限は文字ではなくバイト単位で測定されるため、マルチバイト文字を含むコメントが256文字以下の場合、制限を超えることがあります。制限を超えると、メタデータの取込みまたはリフレッシュが失敗する可能性があります。ソース列のコメントを256 UTF-8バイト以下に減らしてから再試行してください。
Oracle Autonomous AI Database on Exadata Cloud@CustomerをOracle AI Data Platformに接続する方法
Oracle Autonomous AI Transaction Processing、Oracle Autonomous AI DatabaseまたはOracle Autonomous AI Lakehouseデータベースの外部カタログは、Oracle Autonomous AI Database on Exadata Cloud@Customerで実行できます。データベースにプライベート・ネットワークを介してのみアクセスできる場合は、プライベート・ネットワーク・アクセスおよびデータベースSCAN詳細を使用してAI Data Platformワークスペースを構成します。
接続は、クライアント資格証明ウォレットとともにTLSを使用します。
要件
- データベースがプロビジョニングされ、使用可能になります。
- データベース・クライアント資格証明ウォレットをダウンロードしました。
- データベースSCAN完全修飾ドメイン名およびTLSリスナー・ポートがわかります。
- SCAN名は、AIデータ・プラットフォーム・ワークスペースで使用されるプライベート・ネットワークから解決できます。
- ネットワーク・ルートおよびセキュリティ・ルールにより、ワークスペース・ネットワークからデータベース・リスナー・ポートへのトラフィックが許可されます。
- 必要なVCN、サブネットおよびネットワーク・セキュリティ・グループを検査する権限があります。
- データベース・ユーザーには、外部カタログを介して公開するスキーマおよびオブジェクトに対するCREATE SESSION権限およびSELECT権限があります。
- データベース・ユーザーには、意図した読取りまたは書込み操作に必要な追加の権限があります。
プライベート接続のあるワークスペースの作成
- Oracle Exadata Cloud@Customer環境への接続を提供するVCNおよびサブネットを指定します。
- 「拡張ネットワーク・オプション」で、「My data sources require access through a SCAN proxy」を選択します。
- データベースSCAN完全修飾ドメイン名を入力します。
- データベースTLSリスナー・ポートを入力します。
外部カタログの作成
- 「外部ソース・タイプ」で、「Oracle Autonomous AI Transaction Processing」を選択します。
- 「接続方法」で、「Wallet」を選択します。
- データベースからダウンロードしたクライアント資格証明ウォレットをアップロードします。
- ウォレットから必要なデータベース・サービスを選択します。
- 必要に応じて、ウォレット・パスワードを指定します。
- データベース・ネットワークおよびSCANアドレスにアクセスできる上で構成されたワークスペースを選択します。
- 接続をテストして、すべてが正しく構成されていることを確認します。
接続の検証
- 必要なスキーマおよび表が外部カタログに表示されることを確認します。
- プライベート・ワークスペースでコンピュート・クラスタを起動または選択します。
- 3つの部分からなる名前を使用して、検出された表を問い合せます。
SELECT *
FROM <catalog_name>.<schema_name>.<table_name>;SQLを使用した外部カタログのリフレッシュ
SQL文法を使用して、外部カタログとそのスキーマおよび表のメタデータをリフレッシュし、コンテンツを外部ソースと同期できます。
外部カタログをリフレッシュするには、ノートブックで次のSQLコマンドを使用します:
REFRESH EXTERNAL CATALOG <<catalog_name>>外部カタログのスキーマをリフレッシュするには、次を使用します。
REFRESH SCHEMA IN EXTERNAL CATALOG <<catalog_name.schema_name>>外部カタログのスキーマ内の表をリフレッシュするには、次を使用します。
REFRESH TABLE IN EXTERNAL CATALOG <<catalog_name.schema_name.table_name>>詳細は、SQL文法を参照してください。
外部カタログのパスワードの変更
外部カタログに必要なパスワードを更新して、ソースに引き続きアクセスできるようにします。
- 左側のナビゲーション・ペインで、
「マスター・カタログ」をクリックします。 - 「カタログ」タブで、カタログを見つけて
「アクション」をクリックし、「パスワードの変更」をクリックします。 - 外部カタログの新しいパスワードを入力し、「保存」をクリックします。
外部カタログ内の表からのデータの削除
プッシュダウンSQL DELETEをサポートするようにカタログおよび表が構成されている場合、Spark書込みパスを使用して外部カタログ表から行を削除できます。
カタログIDを使用した表データの削除: Pythonの例
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
カタログIDを使用した表データの削除: Scalaの例
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
表データを削除するための取込みスタイルのサンプル: Pythonの例
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()表データを削除するための取込みスタイルのサンプル: Scalaの例
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()


