使用 Oracle Data Pump 匯出資料

Oracle Data Pump 在 Autonomous Database 和其他 Oracle 資料庫之間提供非常快速的大量資料和描述資料移動。

Oracle 建議使用最新的 Oracle Data Pump 版本將資料從 Autonomous Database 匯出至其他 Oracle 資料庫,因為它包含增強功能和修正,以獲得更好的體驗。從 Oracle Instant Client 下載,下載最新版本的 Oracle Instant Client 並為您的平台下載包含 Oracle Data Pump 的工具套裝程式。請參閱平台安裝下載頁面上的安裝說明,瞭解下載 Oracle Instant Client 和 Tools Package 後所需的安裝步驟。

若要使用 Oracle Data Pump 將資料從 Autonomous Database 移至其他 Oracle 資料庫,請使用下列其中一個選項:
  • 選項 1:將資料汲取匯出的資料移至 Autonomous Database 目錄

    使用 Oracle Data Pump 將資料匯出至您資料庫的目錄,然後將資料從目錄移至「雲端物件存放區」。當您要將資料從 Autonomous Database 移至多個目標資料庫時,此方法非常有用。您不必將資料匯出至多個雲端物件存放區,而是可以建立一次傾印檔集,並將它用於多個目標資料庫。

    執行下列步驟,將資料匯出至資料庫上的目錄,以從 Autonomous Database 移動資料:
    1. 將資料匯出至 Autonomous Database 上的目錄,並將傾印檔集從目錄移至您的雲端物件存放區。請參閱使用 Autonomous Database 上的目錄匯出資料
    2. 從雲端物件存放區下載傾印檔、將資料匯入目標資料庫,以及清除雲端物件存放區。請參閱下載傾印檔、執行資料汲取匯入以及清除物件存放區
  • 選項 2:使用資料汲取將資料匯出移至物件存放區

    使用此匯出方法,您就可以使用 Oracle Data Pump 將資料直接匯出至物件存放區。Oracle Cloud Infrastructure Object Storage 和 Oracle Cloud Infrastructure Object Storage Classic 支援此匯出方法。這可避免在 Autonomous Database 的目錄中建立傾印檔集,然後將傾印檔集移至雲端物件存放區的額外負荷。當您計劃將資料移至單一目標資料庫時,此方法可節省人力並加速匯出處理程序。

    執行下列步驟,將資料直接匯出至您的物件存放區,以從 Autonomous Database 移動資料:
    1. 將資料從 Autonomous Database 直接匯出至雲端物件存放區。請參閱直接將資料從 Autonomous Database 匯出至物件存放區
    2. 從雲端物件存放區下載傾印檔、將資料匯入目標資料庫,以及清除雲端物件存放區。請參閱下載傾印檔、執行資料汲取匯入以及清除物件存放區

使用 Autonomous Database 上的目錄匯出資料

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

使用資料汲取在 Autonomous Database 上建立傾印檔集

  1. 建立一個目錄,用於儲存包含匯出資料的傾印檔。舉例而言:
    CREATE DIRECTORY data_export_dir as 'data_export';
  2. 使用 dumpfile 參數集、 filesize 參數集小於 50G,以及 directory 參數集執行「資料汲取」匯出。例如,下列顯示如何在 Autonomous Database 中匯出名為 SALES 且具有 64 個 ECPU 的綱要:ATPC1
    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 個位元組。

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

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

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

    匯出完成後,您可以執行如下的查詢來查看產生的傾印檔:
    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...
    

注意事項:

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

  • 您用來將傾印檔移動至物件儲存的 API 支援的檔案大小上限為 50GB,因此請確定您指定的大小未高於 filesize 引數中的大小。

  • 如需詳細資訊,請參閱 Oracle Database 19c UtilitiesOracle Database 23ai Utilities 中的 Oracle Data Pump Export

將傾印檔集從 Autonomous Database 移至您的雲端物件存放區

  1. 連線至您的 Autonomous Database

  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 Storageusername 是您的 Oracle Cloud Infrastructure 使用者名稱,而 password 是您的 Oracle Cloud Infrastructure 認證權杖。請參閱使用認證權杖

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

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

  3. 呼叫 DBMS_CLOUD.PUT_OBJECT,將傾印檔從 Autonomous Database 移至您的雲端物件存放區。

    舉例而言:
    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 程序

直接將資料從 Autonomous Database 匯出至物件存放區

顯示如何使用 Oracle Data Pump 將資料從 Autonomous Database 直接匯出至雲端物件存放區。

  1. 連線到您的 Autonomous Database
  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 使用者身分,將您在上述步驟中定義的證明資料設為 Autonomous Database 的預設證明資料。
    舉例而言:
    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 Export 只會壓縮描述資料,然後寫入傾印檔集。您可以將 compression 參數設為 ALL,先壓縮描述資料和資料,再寫入傾印檔集。請參閱 Oracle Database 19c 公用程式中的 COMPRESSIONOracle Database 23ai Utilities 以瞭解詳細資訊。

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

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

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

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

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

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

  5. 驗證結果。
    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 (如捲軸) 的工具,並提供您的使用者登入和 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. 從雲端物件存放區下載傾印檔。

    附註:

    如果您將資料匯入至另一個 Autonomous Database ,則不需要此步驟。
    如果您使用 Oracle Data Pump 直接匯出至物件存放區 (如直接將資料從 Autonomous Database 匯出至物件存放區所示),則物件存放區上的傾印檔會顯示大小 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 (如捲軸) 的工具,並提供您的使用者登入和 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 命令,才能從物件存放區下載傾印檔集。或者,您也可以使用支援替代字元的命令檔,以單一命令從物件存放區下載所有傾印檔。如需範例,請參閱 How To:使用 cURL 從匯出至 Autonomous Database 中的物件儲存工作下載所有檔案

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

    附註:

    如果您正在將資料匯入另一個 Autonomous Database ,請參閱使用 Oracle Data Pump 載入資料

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

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

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