使用 Oracle Data Pump 載入資料

Oracle Data Pump 可在 Oracle 資料庫與專用 Exadata 基礎架構上的自治式 AI 資料庫之間,提供非常快速的大量資料和描述資料移動。

「資料汲取」匯入可讓您從位於 Oracle Cloud Infrastructure Object Storage 和 Oracle Cloud Infrastructure Object Storage Classic 的「資料汲取」檔案匯入資料。您可以將資料儲存至雲端物件存放區,然後使用 Oracle Data Pump 將資料載入至自治式 AI 資料庫。

備註:如需閱讀下列主題的「試用」替代方案,您可以前往 Oracle Autonomous AI Database Dedicated for Fleet Administrators 工作坊中的第 9 實驗室:使用資料汲取移轉。

從現有的 Oracle Database 匯出資料

首先,使用「Oracle Data Pump 匯出」匯出現有的 Oracle Database 綱要。接著,使用「Oracle Data Pump 匯入」將它們移轉至「自治式 AI 資料庫」。

Oracle 建議使用下列資料汲取匯出參數,以便更快、更輕鬆地移轉至自治式 AI 資料庫:

exclude=cluster, db_link
parallel=n
schemas=schema name
dumpfile=export%l.dmp

Oracle Data Pump 匯出提供數種匯出模式,Oracle 建議使用綱要模式移轉至自治式 AI 資料庫。您可以使用綱要參數來列出要匯出的綱要。

若要加快移轉速度,請將您的綱要匯出成多個「資料汲取」檔案,並使用平行程度。您可以指定要與 dumpfile 參數搭配使用的傾印檔案名稱格式。請將平行參數至少設為您自治式 AI 資料庫中的 CPU 數目。

exclude 和 data_options 參數可確保不會匯出 Autonomous AI Database 中無法使用的物件類型,並將表格分割區分組在一起,以便更快速地將它們匯入至 Autonomous AI Database。

注意:Oracle 建議您先收集最新的統計資料,再執行 expdp 命令。dbms_stats 套裝軟體提供多個收集最新統計資料的程序。統計資料會自動新增至匯出傾印檔,並可協助判斷物件大小,以及在匯入期間將平行程度最佳化。如需詳細資訊,請參閱 Oracle Database 19c PL/SQL Packages and Types Reference 和 Oracle Database 26ai PL/SQL Packages and Types References 中的 DBMS_STATS Operational Notes 。

下列範例會從來源 Oracle Database 匯出 SH 綱要,以移轉至具有 16 個 CPU 的自治式 AI 資料庫:

expdp sh/sh@orcl \
exclude=cluster, db_link \
parallel=16 \
schemas=sh \
dumpfile=export%l.dmp \
encryption_pwd_prompt=yes

「資料汲取」參數注意事項:

您可以視需求使用其他「資料汲取」匯出參數,例如 compression。如需詳細資訊,請參閱 Oracle Database 19c Utilities 或 Oracle Database 26ai Utilities 中的 Oracle Data Pump Export 。

將匯出檔案上傳至雲端物件儲存

您必須先將匯出檔案上傳至雲端物件儲存,才能匯入從來源 Oracle Database 匯出的資料。

您可以將匯出檔案上傳至 Oracle Cloud Infrastructure Object Storage 中的現有儲存的儲存桶,或 Oracle Cloud Infrastructure Object Storage Classic 中的現有儲存容器。或者,您可以使用下列程序建立新的儲存的儲存桶,然後將匯出檔案上傳至該儲存桶。

  1. 請以 cloud.oracle.com 身分登入您的 Oracle Cloud 帳戶。

  2. 從 Oracle Cloud Infrastructure 左側導覽清單中,選擇物件儲存,然後從子清單中選擇物件儲存。

  3. 選擇要在其中建立儲存的儲存桶的區間。

  4. 按一下建立儲存桶 (Bucket) 。

  5. 在「建立儲存桶」對話方塊中,為儲存桶指定名稱,然後按一下建立儲存桶。

  6. 建立儲存桶之後,請在儲存桶清單中按一下其名稱,以顯示其「儲存桶詳細資訊」頁面。

  7. 按一下「物件」方塊中的上傳物件。

  8. 在「上傳物件」對話方塊中,按一下「從您的電腦選擇檔案」方塊中的選取檔案連結。

  9. 在檔案瀏覽器中,瀏覽並選取匯出檔案。然後,按一下開啟。

  10. 在「上傳物件」對話方塊中,按一下上傳物件以開始上傳您選取的檔案。

  11. 上傳完成後,請關閉「上傳物件」對話方塊。

使用 Oracle Data Pump 匯入數據

Oracle 建議使用最新的 Oracle Data Pump 版本,將資料從「資料汲取」檔案匯入至您的自治式 AI 資料庫,因為其中包含增強功能和修正,提供更好的體驗。

請從 Oracle Instant Client Downloads 下載適用於您平台的最新版本的 Oracle Instant Client Basic Package 和 Tools Package (包含 Oracle Data Pump)。如需下載 Oracle Instant Client 後所需的安裝步驟,請參閱平台安裝下載頁面上的安裝說明。

在 Oracle Data Pump 18.3 和更新版本的 credential 引數中,會將「資料汲取」認證為您來源檔案所使用的雲端物件儲存服務。dumpfile 引數是以逗號分隔的「資料汲取」檔案 URL 清單。

「資料汲取」匯入版本 12.2.0.1 和更舊版本沒有 credential 參數。如果您使用舊版的資料汲取匯入,則必須定義自治式 AI 資料庫的預設證明資料特性,並在 dumpfile 參數中使用 default_credential 關鍵字。

在 Oracle Data Pump 中,如果您的來源檔案位於 Oracle Cloud Infrastructure Object Storage 中,則可以使用 Oracle Cloud Infrastructure 原生 URI 或 Swift URI。如需這些 URI 格式的詳細資訊,請參閱雲端物件儲存 URI 格式。

  1. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 程序儲存您的雲端物件儲存證明資料。

    「資料汲取」匯入支援以 Oracle Cloud Infrastructure 認證權杖為基礎的證明資料和以 Oracle Cloud Infrastructure 簽署金鑰為基礎的證明資料。

    範例 1 :建立 Oracle Cloud Infrastructure 認證權杖證明資料:

    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
      credential_name => 'DEF_CRED_NAME',
      username => 'adb_user@oracle.com',
      password => '*password*'
      );
    END;
    /

    範例 2 :建立以 Oracle Cloud Infrastructure 簽署金鑰為基礎的證明資料:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'DEF_CRED_NAME',
        user_ocid       => 'ocid1.user.oc1..unique_ID',
        tenancy_ocid    => 'ocid1.tenancy.oc1..unique_ID',
        private_key     => 'MIIEogIBAAKCAQEAtUnxbmre.....wtnNpESQQQ0QLGPD8NM//JEBg=',
        fingerprint     => 'fingerprint value'
      );
    END;
    /

    如需有關 Oracle Cloud Infrastructure Cloud Object Storage 證明資料類型的詳細資訊,請參閱 CREATE_CREDENTIAL 程序。

  2. 如果您使用 Oracle Data Pump 12.2.0.1 或更舊版本,則必須將證明資料設為「自治式 AI 資料庫」的預設證明資料作為 ADMIN 使用者。舉例而言:

    alter database property set default_credential = 'ADMIN.DEF_CRED_NAME'
  3. 使用設為您雲端物件儲存上檔案 URL 清單的 dumpfile 參數執行「資料汲取匯入」。

    • Oracle Data Pump 18.3 或更新版本:將 credential 參數設為您在步驟 1 中建立的證明資料名稱。舉例而言:

      impdp admin/password@ATPC1_high \
        credential=def_cred_name \
        dumpfile= https://namespace-string.objectstorage.us-ashburn-1.oci.customer-oci.com/n/namespace-string/b/bucketname/o/export%l.dmp \
        parallel=16 \
        transform=segment_attributes:n \
        exclude=cluster, db_link

      在此範例中,dumpfile 是 Oracle Cloud Infrastructure Swift URI,指定名稱與 us-phoenix-1 區域中 mybucket 儲存桶 export<number>.dmp 相符的所有檔案。(idthydc0kinr 是儲存桶所在的物件儲存命名空間。)

    • Oracle Data Pump 版本 12.2.0.1 或更舊版本:使用 default_credential 關鍵字和冒號來啟動 dumpfile 參數的值。舉例而言:

      impdp admin/password@ATPC1_high \
        dumpfile=default_credential:https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/export%l.dmp \
        parallel=16 \
        transform=segment_attributes:n \
        exclude=cluster, db_link

    資料汲取匯入的注意事項

    • 如果您在匯出時使用 expdp,則使用 encryption_pwd_prompt=yes 參數,然後使用 encryption_pwd_prompt=yes,並在匯出期間指定的 impdp 提示輸入相同的密碼。

    • 除了傳統的 %U 和 %u 萬用字元之外,dumpfile 參數也支援 %L 和 %l 萬用字元。例如,dumpfile=export%L.dmp。

      使用 %L 或 %l 萬用字元從 Oracle Database 版本 12.2 和更新版本匯出。此萬用字元會將傾印檔檔案名稱擴充為 3 位數的可變寬度增量整數,從 100 開始,結束於 2147483646。

      在 12.2 版之前,使用舊版的 %U 或 %u 萬用字元從 Oracle Database 匯出。如果使用此選項,且需要 99 個以上的傾印檔,則必須指定多個傾印檔名稱,每個傾印檔均具有 %U 或 %u 參數。

    • 若要獲得最佳匯入效能,請使用匯入連線的 high 資料庫服務,並將 parallel 參數設為資料庫擁有的 CPU 數目。

    • 如需不同雲端物件儲存服務的傾印檔 URL 格式,請參閱雲端物件儲存 URI 格式。

    • 若要執行完整匯入或匯入其他使用者擁有的物件,您需要 DATAPUMP_CLOUD_IMP 角色。

    如需「自治式 AI 資料庫」中不允許的物件相關資訊,請參閱使用 SQL 命令的限制。

    如需匯入參數的詳細資訊,請參閱 Oracle Database 19c Utilities 或 Oracle Database 26ai Utilities 中的 Oracle Data Pump 匯入。

存取資料檔以進行資料汲取匯入

「資料汲取匯入」作業的日誌檔是儲存在您使用資料汲取 impdp directory 參數指定的目錄中。

若要存取日誌檔,您必須使用 DBMS_CLOUD.PUT_OBJECT 程序,將日誌檔移至您的雲端物件儲存。例如,下列 PL/SQL 區塊會將 import.log 檔案移至您的雲端物件儲存:

BEGIN
  DBMS_CLOUD.PUT_OBJECT(
    credential_name => 'DEF_CRED_NAME',
    object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/*namespace-string*/b/*bucketname*/o/import.log',
    directory_name  => 'DATA_PUMP_DIR',
    file_name => 'import.log');
END;
/

在此範例中,*namespace-string* 是 Oracle Cloud Infrastructure 物件儲存命名空間,而 bucketname 是儲存桶名稱。請參閱瞭解物件儲存命名空間以瞭解詳細資訊。

如需詳細資訊,請參閱 DBMS_CLOUD for Objects and Files 。