使用 Oracle Data Pump 匯出資料

Oracle Data Pump 在自治式 AI 資料庫與其他 Oracle 資料庫之間提供非常快速的大量資料和描述資料移動。

Oracle 建議使用最新的 Oracle Data Pump 版本,將資料從 Autonomous AI 資料庫匯出至其他 Oracle 資料庫,因為其中包含增強功能和修正,以提供更好的體驗。下載最新版本的 Oracle Instant Client,並從 Oracle Instant Client 下載下載平台適用的工具套件 (包含 Oracle Data Pump)。如需下載 Oracle Instant Client 與 Tools 套件後所需的安裝步驟,請參閱平台安裝下載頁面上的安裝說明。

若要使用 Oracle Data Pump 將資料從自治式 AI 資料庫移至其他 Oracle 資料庫,請使用下列其中一個選項:

使用自治式 AI 資料庫上的目錄匯出資料

若要使用自治式 AI 資料庫上的目錄匯出資料,您必須先在資料庫的目錄中建立含有匯出資料的傾印檔集,然後將這些檔案從您的資料庫目錄上傳至雲端物件存放區。

使用資料汲取在自治式 AI 資料庫上建立傾印檔集

  1. 建立一個目錄,以儲存含有匯出資料的傾印檔。舉例而言:

     CREATE DIRECTORY data_export_dir as 'data_export';
    
  2. 使用 dumpfile 參數集、 filesize 參數集小於 50G,以及 directory 參數集執行「資料汲取」匯出。例如,下列顯示如何在名為 ATPC1 且具有 64 個 ECPU 的自治式 AI 資料庫中匯出名為 SALES 的綱要:

     expdp sales/password@ATPC1_high
     directory=data_export_dir
     dumpfile=exp%L.dmp
     parallel=16
     encryption_pwd_prompt=yes
     filesize=1G
     logfile=export.log
    

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

    • 若為 ECPU,則 parallel 必須設為 ECPU 數目的 0.25 倍。因此,在上述具有 64 個 ECPU 的範例中,parallel 設為 0.25 x 64,亦即 16 與 expdp

    • 如果是 OCPU,則必須將 parallel 設為與 OCPU 數目相同的值。在上述 16 個 OCPU 的範例中,parallel 將設為 16,其中包含 expdp

    • 如果您使用 expdp 進行匯出時使用 encryption_pwd_prompt=yes 參數,則必須將 encryption_pwd_prompt=yes 與您的匯入搭配使用,並在 impdp 提示輸入相同的密碼以解密傾印檔案 (請記住您匯出時所提供的密碼)。加密密碼的長度上限為 128 個位元組。

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

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

    若要獲得最佳匯出效能,請使用匯出連線的 HIGH 資料庫服務,並將 PARALLEL 參數設為資料庫中的 CPU 數目。如需連線執行「資料汲取」匯出之資料庫服務名稱的相關資訊,請參閱自治式 AI 資料庫的預先定義資料庫服務名稱

    匯出完成後,您可以執行如下查詢,查看產生的傾印檔:

     SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_EXPORT_DIR');
    

    例如,此查詢的輸出顯示產生的傾印檔和匯出日誌檔:

     OBJECT_NAME                 BYTES  CHECKSUM                   CREATED          LAST_MODIFIED
    
     ---------------------- ---------- --------- ------------------------------- --------------------
     exp01.dmp                   12288               12-NOV-19 06.10.47.0 PM GMT       12-NOV-19...
     exp02.dmp                    8192               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
     exp03.dmp                 1171456               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
     exp04.dmp                  348160               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
     export.log                   1663               12-NOV-19 06.10.50.0 PM GMT       12-NOV-19...
    

注意:

從雲端物件存放區的自治式 AI 資料庫搬移傾印檔集

  1. 連線至您的自治式 AI 資料庫。

  2. 使用 DBMS_CREDENTIAL.CREATE_CREDENTIAL 程序儲存您的雲端物件儲存證明資料。舉例而言:

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

    您為 usernamepassword 提供的值取決於您使用的雲端物件儲存服務:

    • Oracle Cloud Infrastructure Object Storage:username 是您的 Oracle Cloud Infrastructure 使用者名稱,password 是您的 Oracle Cloud Infrastructure 認證權杖。請參閱使用認證權杖

    • Oracle Cloud Infrastructure Object Storage Classic:username 是您的 Oracle Cloud Infrastructure Classic 使用者名稱,而 password 是您的 Oracle Cloud Infrastructure Classic 密碼。

      此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。請注意,除非您的物件存放區證明資料變更,否則此步驟只需要執行一次。儲存證明資料之後,您就可以對所有資料載入使用相同的證明資料名稱。

  3. 請撥打 DBMS_CLOUD.PUT_OBJECT,將傾印檔從自治式 AI 資料庫移至您的雲端物件存放區。

    舉例而言:

     BEGIN
        DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
          object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp01.dmp',
          directory_name => 'DATA_EXPORT_DIR',
          file_name => 'exp01.dmp');
        DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
          object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp02.dmp',
          directory_name => 'DATA_EXPORT_DIR',
          file_name => 'exp02.dmp');
        DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
          object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp03.dmp',
          directory_name => 'DATA_EXPORT_DIR',
          file_name => 'exp03.dmp');
        DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
          object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp04.dmp',
          directory_name => 'DATA_EXPORT_DIR',
          file_name => 'exp04.dmp');
     END;
     /
    

    請參閱 PUT_OBJECT 程序,瞭解 PUT_OBJECT 的相關資訊。

直接將資料從自治式 AI 資料庫匯出至物件存放區

顯示如何使用 Oracle Data Pump 將資料從自治式 AI 資料庫直接匯出至雲端物件存放區。

  1. 連線至您的自治式 AI 資料庫。

  2. 使用 DBMS_CREDENTIAL.CREATE_CREDENTIAL 程序儲存您的雲端物件儲存證明資料。舉例而言:

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

    您提供的使用者名稱和密碼值取決於您使用的雲端物件儲存服務:

    • Oracle Cloud Infrastructure Object Storage:username 是您的 Oracle Cloud Infrastructure 使用者名稱,password 是您的 Oracle Cloud Infrastructure 認證權杖。請參閱使用認證權杖

    • Oracle Cloud Infrastructure Object Storage Classic:username 是您的 Oracle Cloud Infrastructure Classic 使用者名稱,而 password 是您的 Oracle Cloud Infrastructure Classic 密碼。

    此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。請注意,除非您的物件存放區證明資料變更,否則此步驟只需要執行一次。儲存證明資料之後,您就可以對所有資料載入使用相同的證明資料名稱。

  3. 身為 ADMIN 使用者,請將您在上述步驟中定義的證明資料設為自治式 AI 資料庫的預設證明資料。

    舉例而言:

     ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'DEF_CRED_NAME';
    
  4. dumpfile 參數設為您雲端物件儲存上現有儲存桶的 URL (以檔案名稱或具有替代變數的檔案名稱作為結尾,例如 exp%U.dmp) 執行「資料汲取」匯出。

    • Oracle Data Pump 版本 19.9 或更新版本:

      credential 參數設為您在步驟 2 中建立的證明資料名稱。舉例而言:

      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      credential=DEF_CRED_NAME \
      dumpfile=https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index
      

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

    • 19.9 之前的 Oracle Data Pump 版本:

      使用 default_credential 關鍵字和冒號開始 dumpfile 參數的值。舉例而言:

      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      dumpfile=DEF_CRED_NAME:https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index
      

      在此範例中,需要 dumpfile 參數中的 default_credential 關鍵字。

    Oracle Data Pump 參數注意事項:

    • 依照預設,「Oracle Data Pump 匯出」只會壓縮描述資料,然後再寫入傾印檔集。您可以在寫入傾印檔集之前,將 compression 參數設為 ALL 來壓縮描述資料和資料。請參閱 Oracle Database 19c UtilitiesOracle Database 26ai Utilities 中的 COMPRESSION 瞭解詳細資訊。

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

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

      如需詳細資訊,請參閱 Oracle Database 19c UtilitiesOracle Database 26ai Utilities 中的資料汲取匯出命令行模式中可用的參數

    • 為了獲得最佳匯出效能,請使用匯出連線的 high 資料庫服務,並將 parallel 參數設為 ECPU 數目的 0.25 倍,或與自治式 AI 資料庫中的 OCPU 數目的相同。如需連線執行「資料汲取」匯出之資料庫服務名稱的相關資訊,請參閱自治式 AI 資料庫的預先定義資料庫服務名稱

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

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

  5. 驗證結果。

    Oracle Data Pump 會將每個傾印檔部分分割成較小的區塊,以加快上傳速度。Oracle Cloud Infrastructure Object Storage 主控台會針對您匯出的每個傾印檔部分顯示多個檔案。實際傾印檔的大小將顯示為零 (0),而其相關檔案區塊則顯示為 10 MB 以下。舉例而言:

     exp01.dmp
     exp01.dmp_aaaaaa
     exp02.dmp
     exp02.dmp_aaaaaa
    

    注意:

    從主控台下載零位元組傾印檔或使用 CLI 將不會提供完整傾印檔。若要從物件存放區下載完整傾印檔,請使用支援 Swift (例如 curl) 的工具,並提供您的使用者登入和 Swift 認證權杖。舉例而言:

       curl -O -v -X GET -u 'user1@example.com:auth_token' \
        https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/export01.dmp
    

下載傾印檔、執行資料汲取匯入以及清除物件存放區

如有需要,請從「雲端物件存放區」下載傾印檔,然後使用「Oracle Data Pump 匯入」將傾印檔集匯入目標資料庫。然後執行任何必要的清除。

  1. 從「雲端物件存放區」下載傾印檔。

    注意:如果您要將資料匯入其他自治式 AI 資料庫,就不需要執行此步驟。

    如果您使用 Oracle Data Pump 直接匯出至物件存放區,如直接將資料從自治式 AI 資料庫匯出至物件存放區所示,則物件存放區上的傾印檔會顯示大小為 0。Oracle Data Pump 會將每個傾印檔部分分割成較小的區塊,以加快上傳速度。Oracle Cloud Infrastructure Object Storage 主控台會針對您匯出的每個傾印檔部分顯示多個檔案。實際傾印檔的大小將顯示為零 (0),而其相關檔案區塊則顯示為 10 MB 以下。舉例而言:

    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    

    從 Oracle Cloud Infrastructure 主控台下載零位元組傾印檔或使用 Oracle Cloud Infrastructure CLI 將不會提供完整的傾印檔。若要從物件存放區下載完整傾印檔,請使用支援 Swift (例如 curl) 的工具,並提供您的使用者登入和 Swift 認證權杖。舉例而言:

    curl -O -v -X GET -u 'user1@example.com:auth_token' \
    https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp
    

    cURL 命令的 URL 不支援萬用字元或替代字元。您必須使用多個 cURL 命令,才能從您的「物件存放區」下載傾印檔集。或者,您也可以使用支援替代字元的命令檔,透過單一命令從物件存放區下載所有傾印檔。

  2. 執行「資料汲取匯入」將傾印檔集匯入目標資料庫。

    注意:如果您要將資料匯入其他「自治式 AI 資料庫」,請參閱使用 Oracle Data Pump 載入資料

    如果使用 Oracle Data Pump 直接匯出至物件存放區的檔案 (如直接將資料從自治式 AI 資料庫匯出至物件存放區所示),如果您匯入的 DBMS_CLOUD 程序支援值為 'datapump'format 參數 type 的檔案,則只需要提供主要檔案名稱。支援 'datapump' 格式類型的程序會自動尋找並下載區塊。

  3. 執行匯入後清除任務。如果您完成將傾印檔匯入目標資料庫,請刪除包含該資料的儲存桶,或將傾印檔自雲端物件存放區儲存桶中移除,然後將傾印檔從下載傾印檔以執行「資料汲取匯入」的位置移除。

如需詳細資訊,請參閱 Oracle Database 19c UtilitiesOracle Database 26ai Utilities 中的 Parameters Available in Oracle Data Pump Import Command-Line Mode