使用 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 資料庫,請使用下列其中一個選項:
-
選項 1:將資料汲取匯出的資料移至自治式 AI 資料庫目錄
使用 Oracle Data Pump 將資料匯出至您資料庫中的目錄,然後將資料從目錄移至「雲端物件存放區」。當您要將資料從自治式 AI 資料庫移至多個目標資料庫時,此方法會很有幫助。您可以只建立一次傾印檔集,然後將它用於多個目標資料庫,而不將資料匯出到多個雲端物件存放區。
若要將自治式 AI 資料庫中的資料匯出至資料庫中的目錄,請執行下列步驟:
-
將資料匯出至自治式 AI 資料庫上的目錄,然後將傾印檔集從目錄移至您的雲端物件存放區。請參閱在 Autonomous AI Database 上使用目錄匯出資料。
-
從「雲端物件存放區」下載傾印檔、將資料匯入目標資料庫,以及清除「雲端物件存放區」。請參閱下載傾印檔、執行資料汲取匯入和清除物件存放區。
-
-
選項 2:將資料汲取的資料匯出至物件存放區
透過此匯出方法,您將 Oracle Data Pump 直接匯出資料至物件存放區。Oracle Cloud Infrastructure Object Storage 與 Oracle Cloud Infrastructure Object Storage Classic 支援此匯出方法。這可避免在自治式 AI 資料庫的目錄中建立傾印檔集,然後將傾印檔集移至雲端物件存放區的負荷。當您計劃將資料移至單一目標資料庫時,此方法可節省人力並加速匯出處理程序。
若要從自治式 AI 資料庫移動資料,請執行下列步驟,將資料直接匯出至您的物件存放區:
- 將資料從自治式 AI 資料庫直接匯出至雲端物件存放區。請參閱直接將資料從自治式 AI 資料庫匯出至物件存放區。
- 從「雲端物件存放區」下載傾印檔、將資料匯入目標資料庫,以及清除「雲端物件存放區」。請參閱下載傾印檔、執行資料汲取匯入和清除物件存放區。
使用自治式 AI 資料庫上的目錄匯出資料
若要使用自治式 AI 資料庫上的目錄匯出資料,您必須先在資料庫的目錄中建立含有匯出資料的傾印檔集,然後將這些檔案從您的資料庫目錄上傳至雲端物件存放區。
使用資料汲取在自治式 AI 資料庫上建立傾印檔集
-
建立一個目錄,以儲存含有匯出資料的傾印檔。舉例而言:
CREATE DIRECTORY data_export_dir as 'data_export'; -
使用 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... -
注意:
- 若要執行完整匯出或匯出其他使用者擁有的物件,您需要
DATAPUMP_CLOUD_EXP角色。 - 您用來將傾印檔移至物件儲存的 API 支援的檔案大小上限為 50GB,因此請確定您未在 filesize 引數中指定大於該大小的大小。
- 如需詳細資訊,請參閱 Oracle Database 19c Utilities 或 Oracle Database 26ai Utilities 中的 Oracle Data Pump Export 。
從雲端物件存放區的自治式 AI 資料庫搬移傾印檔集
-
連線至您的自治式 AI 資料庫。
-
使用
DBMS_CREDENTIAL.CREATE_CREDENTIAL程序儲存您的雲端物件儲存證明資料。舉例而言:BEGIN DBMS_CREDENTIAL.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@oracle.com', password => 'password' ); END; /您為
username和password提供的值取決於您使用的雲端物件儲存服務:-
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 密碼。此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。請注意,除非您的物件存放區證明資料變更,否則此步驟只需要執行一次。儲存證明資料之後,您就可以對所有資料載入使用相同的證明資料名稱。
-
-
請撥打
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 資料庫直接匯出至雲端物件存放區。
-
連線至您的自治式 AI 資料庫。
-
使用
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 密碼。
此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。請注意,除非您的物件存放區證明資料變更,否則此步驟只需要執行一次。儲存證明資料之後,您就可以對所有資料載入使用相同的證明資料名稱。
-
-
身為
ADMIN使用者,請將您在上述步驟中定義的證明資料設為自治式 AI 資料庫的預設證明資料。舉例而言:
ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'DEF_CRED_NAME'; -
將 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 Utilities 或 Oracle 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 Utilities 或 Oracle Database 26ai Utilities 中的資料汲取匯出命令行模式中可用的參數。
-
為了獲得最佳匯出效能,請使用匯出連線的
high資料庫服務,並將parallel參數設為 ECPU 數目的 0.25 倍,或與自治式 AI 資料庫中的 OCPU 數目的相同。如需連線執行「資料汲取」匯出之資料庫服務名稱的相關資訊,請參閱自治式 AI 資料庫的預先定義資料庫服務名稱。 -
如需不同雲端物件儲存服務的傾印檔 URL 格式,請參閱雲端物件儲存 URI 格式。
如需「自治式 AI 資料庫」中不允許的物件相關資訊,請參閱使用 SQL 命令的限制。
-
-
驗證結果。
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 匯入」將傾印檔集匯入目標資料庫。然後執行任何必要的清除。
-
從「雲端物件存放區」下載傾印檔。
注意:如果您要將資料匯入其他自治式 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.dmpcURL 命令的 URL 不支援萬用字元或替代字元。您必須使用多個 cURL 命令,才能從您的「物件存放區」下載傾印檔集。或者,您也可以使用支援替代字元的命令檔,透過單一命令從物件存放區下載所有傾印檔。
-
執行「資料汲取匯入」將傾印檔集匯入目標資料庫。
注意:如果您要將資料匯入其他「自治式 AI 資料庫」,請參閱使用 Oracle Data Pump 載入資料。
如果使用 Oracle Data Pump 直接匯出至物件存放區的檔案 (如直接將資料從自治式 AI 資料庫匯出至物件存放區所示),如果您匯入的
DBMS_CLOUD程序支援值為'datapump'之format參數type的檔案,則只需要提供主要檔案名稱。支援'datapump'格式類型的程序會自動尋找並下載區塊。 -
執行匯入後清除任務。如果您完成將傾印檔匯入目標資料庫,請刪除包含該資料的儲存桶,或將傾印檔自雲端物件存放區儲存桶中移除,然後將傾印檔從下載傾印檔以執行「資料汲取匯入」的位置移除。
如需詳細資訊,請參閱 Oracle Database 19c Utilities 或 Oracle Database 26ai Utilities 中的 Parameters Available in Oracle Data Pump Import Command-Line Mode 。