使用 Oracle Data Pump 載入資料

Oracle Data Pump 在 Oracle 資料庫與 Autonomous Database on Dedicated Exadata Infrastructure 之間提供非常快速的大量資料和描述資料移動。

「資料汲取」匯入可讓您從位於 Oracle Cloud Infrastructure Object StorageOracle Cloud Infrastructure Object Storage Classic 的「資料汲取」檔案匯入資料。您可以將資料儲存至雲端物件存放區,並使用 Oracle Data Pump 將資料載入至 Autonomous Database

附註:

如需閱讀下列主題的「試用」替代方案,請前往 Oracle Autonomous Database Dedicated for Fleet Administrators Workshop 中的 Lab 9:Migrate with Data Pump 進行移轉。

從現有的 Oracle Database 匯出資料

首先,使用 Oracle Data Pump 匯出來匯出現有的 Oracle Database 綱要。然後,使用 Oracle Data Pump 匯入將它們移轉至 Autonomous Database

Oracle 建議使用下列「資料汲取匯出」參數,以便更快速輕鬆地移轉至 Autonomous Database

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

Oracle Data Pump 匯出提供數種匯出模式,Oracle 建議使用綱要模式來移轉至 Autonomous Database 。您可以使用綱要參數列出要匯出的綱要。

為了加快移轉速度,請將綱要匯出成多個「資料汲取」檔案,並使用併行執行。您可以指定要與 dumpfile 參數搭配使用的傾印檔案名稱格式。請將 parallel 參數設為至少您的 Autonomous Database CPU 數目。

excludedata_options 參數可確保不會匯出 Autonomous Database 中無法使用的物件類型,並將表格分割區分組在一起,從而可以更快速地匯入至 Autonomous Database

附註:

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

下列範例會將 SH 綱要從來源 Oracle Database 匯出,以移轉至 16 個 CPU 的 Autonomous Database

expdp sh/sh@orcl \
exclude=cluster, db_link \
parallel=16 \
schemas=sh \
dumpfile=export%l.dmp \
encryption_pwd_prompt=yes
「資料汲取」參數的注意事項:
  • 使用 expdp 進行匯出時,如果使用 encryption_pwd_prompt=yes 參數,請一併使用 encryption_pwd_prompt=yes 進行匯入,然後在 impdp 提示輸入相同的密碼來解密傾印檔案 (請記住匯出時提供的密碼)。加密密碼的長度上限為 128 個位元組。

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

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

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

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

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

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

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

  1. 登入您的 Oracle Cloud 帳戶,網址為:cloud.oracle.com

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

  3. 選擇區間以建立儲存的儲存桶。

  4. 按一下建立儲存桶

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

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

  7. 在「物件」方塊中,按一下上傳物件

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

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

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

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

使用 Oracle Data Pump 匯入資料

Oracle 建議使用最新的 Oracle Data Pump 版本將資料從「資料汲取」檔案匯入至您的 Autonomous Database ,因為其中包含增強功能並修正,以獲得更好的體驗。

Oracle Instant Client 下載,為您的平台下載最新版本的 Oracle Instant Client 基本套件與工具套件 (包含 Oracle Data Pump)。請參閱平台安裝下載頁面上的安裝說明,以取得下載 Oracle Instant Client 後所需的安裝步驟。

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

「資料汲取」匯入版本 12.2.0.1 和更舊版本沒有 credential 參數。如果您使用的是舊版「資料汲取匯入」,則需要定義 Autonomous Database 的預設證明資料特性,並在 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 或更舊版本,則必須將證明資料設為 ADMIN 使用者之 Autonomous Database 的預設證明資料。舉例而言:
    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 提示輸入相同的密碼。

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

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

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

    • 為了達到最佳匯入效能,請使用 high 資料庫服務進行匯入連線,並將 parallel 參數設為您資料庫擁有的 CPU 數目。

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

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

    如需 Autonomous Database 中不允許之物件的資訊,請參閱使用 SQL 命令的限制

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

存取資料汲取匯入的日誌檔

「資料汲取匯入」作業的日誌檔是儲存在您使用資料汲取 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 是儲存桶名稱。請參閱瞭解 Object Storage 命名空間瞭解詳細資訊。

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