使用 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 數目。

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

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

相關內容