外部目錄
建立外部目錄,從 Oracle AI Data Platform 以外的位置取得資料。
外部目錄可將 AI Data Platform 連線至外部資料來源 (例如 Oracle Autonomous AI Lakehouse 、Oracle AI Database 和 Oracle Autonomous AI Transaction Processing),以及第三方存放區 (例如 Snowflake、Azure SQL 和 MySQL)。AI Data Platform 可從這些來源尋找中繼資料並將其同步至主目錄,讓使用者無須複製基礎資料即可瀏覽和查詢遠端綱要和表格。
外部目錄會使用建立外部目錄時所提供的證明資料來查詢外部來源。如需資料來源的詳細資訊,請參閱內部來源。
例如,如果您為 Autonomous AI Lakehouse 執行個體建立外部目錄,其中所使用的 Autonomous AI Lakehouse 使用者憑證可以存取 schema1 而不能存取 schema2 ,則外部目錄中只會顯示 schema1 。具備外部目錄權限的使用者只能查詢 Autonomous AI Lakehouse 使用者可存取的綱要。
附註:
AI Data Platform 不支援從跨可插拔資料庫 (PDB) 或 Oracle 維護的綱要和表格共用的綱要和表格收集資料。Autonomous AI Lakehouse 和 Autonomous AI Transaction Processing 的必要權限
- CREATE SESSION 連線至資料庫
- 透過最低權限授權或專用讀取角色選取必要物件 (表格 / 視觀表 / 外部表格) 的存取權
- 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 Database on Exadata Cloud@Customer 上執行的 Oracle Autonomous AI Transaction Processing 、Oracle Autonomous AI Database 或 Oracle Autonomous AI Lakehouse 資料庫建立外部目錄。當資料庫只能透過專用網路存取時,請設定具有專用網路存取的 AI Data Platform 工作區,以及資料庫 SCAN 詳細資訊。
此連線使用 TLS 與從屬端證明資料公事包。
需求
- 資料庫已啟動設定且可供使用。
- 您已下載資料庫從屬端證明資料公事包。
- 您知道資料庫 SCAN 完整網域名稱和 TLS 監聽器連接埠。
- SCAN 名稱可以從 AI 資料平台工作區使用的專用網路解析。
- 網路路由和安全規則允許從工作區網路到資料庫監聽器連接埠的流量。
- 您有權檢查必要的 VCN、子網路以及網路安全群組。
- 資料庫使用者具有您要透過外部目錄公開之綱要和物件的 CREATE SESSION 和 SELECT 權限。
- 資料庫使用者具備進行預期讀取或寫入作業所需的任何其他權限。
建立具有專用連線的工作區
- 提供 VCN 和子網路,以連線至您的 Oracle Exadata Cloud@Customer 環境。
- 在進階網路選項下,選取我的資料來源需要透過 SCAN 代理主機存取。
- 輸入資料庫 SCAN 完整網域名稱。
- 輸入資料庫 TLS 監聽器連接埠。
建立外部目錄
- 對於外部來源類型,請選取 Oracle Autonomous AI Transaction Processing 。
- 針對連線方法,選取公事包。
- 上傳從資料庫下載的從屬端證明資料公事包。
- 從公事包選取必要的資料庫服務。
- 視需要提供公事包密碼。
- 選取上面設定的工作區,以存取資料庫網路和 SCAN 位址。
- 測試連線以確認所有項目都已正確設定。
驗證連線
- 確認預期的綱要和表格會顯示在外部目錄中。
- 啟動或選取專用工作區中的運算叢集。
- 請使用找到的表格的三個部分名稱來查詢:
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 Grammar 。
變更外部目錄的密碼
您可以更新外部目錄的必要密碼,以便繼續存取來源。
- 在左側導覽窗格中,按一下
主目錄。 - 在「目錄」頁籤中,找出您的目錄並按一下
動作,然後按一下變更密碼。 - 輸入外部目錄的新密碼,然後按一下儲存。
從外部目錄內的表格刪除資料
當目錄和表格設定為支援下推式 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()


