如何使用 Oracle Instant Client 來執行 Amazon RDS for Oracle 資料庫執行個體的 Data Pump 匯入或匯出?
我想要使用 impdp 和 expdp 公用程式來執行 Amazon Relational Database Service (Amazon RDS) for Oracle 資料庫執行個體的匯出和匯入。
簡短描述
有幾種方法可以執行 Amazon RDS for Oracle 資料庫執行個體的匯出或匯入。
在設定環境後,您可以:
- 將表格從來源 Oracle RDS 執行個體匯入目標 Oracle RDS 執行個體。
- 從 Oracle RDS 執行個體匯出資料,並在 Amazon Elastic Compute Cloud (EC2) 執行個體或遠端主機的本機上建立傾印檔案。
- 從 Oracle RDS 執行個體匯出資料,並將傾印檔案儲存至 RDS 主機上。
- 匯入位於 RDS 主機上的傾印檔案。
- 使用 S3 整合選項,在 RDS for Oracle 資料庫執行個體和 Amazon Simple Storage Service (Amazon S3) 儲存貯體之間傳輸傾印檔案。
解決方案
為提供受管服務體驗,系統不允許會利用 RDS 主機上 impdp 和 expdp 公用程式的主機層級存取行為。替代方案是使用 Data Pump API (DBMS_DATAPUMP) 來執行匯入或匯出。但是,您可以使用遠端主機上的 Data Pump 公用程式來執行此工作。
Oracle Instant Client 是輕量型的用戶端,可安裝至電腦或 Amazon EC2 執行個體上。Oracle Instant Client 包括 impdp 和 expdp 公用程式,您可以使用這些公用程式從命令列執行匯出和匯入作業。
先決條件
使用 Oracle Instant Client 之前,請執行下列操作:
- 檢閱文件 ID 553337.1 以檢查您正在下載的二進位檔案是否相容於來源和目標版本。通常支援從具有相同版本或更新版本的用戶端匯出。支援使用與目標 Amazon RDS 主要版本相同的用戶端版本進行匯入。例如,如果來源執行個體的版本為 12.2,而目標執行個體的版本為 19c,則您可以安裝最新 19c 版本的 Oracle Instant Client。
- 若要使用 Data Pump,請在「基本」套件的基礎上安裝「工具」套件。若要安裝套件,請參閱 Oracle Instant Client 文件。
- 請確保目標 RDS 執行個體的日光節約時間 (DST) 版本等於或晚於來源執行個體的日光節約時間 (DST) 版本。否則在執行匯入時,您會收到下列錯誤:ORA-39405。使用下列查詢來檢查執行個體的目前 DST 版本。若要將 DST 版本更新為 Oracle RDS 執行個體中最新的可用版本,請使用 TIMEZONE_FILE_AUTOUPGRADE 選項。
SELECT * FROM V$TIMEZONE_FILE;
若要使用 Oracle Instant Client 從資料庫連結來測試 Data Pump 匯入或匯出,請執行下列操作:
1. 使用 Amazon Linux 2 作業系統建立測試 Amazon EC2 執行個體。
2. 下載基本 (RPM) 套件、工具 (RPM) 套件,以及 SQL*Plus (RPM) 套件。在本文中,下列 RPM 是最新的可用下載選項:
- oracle-instantclient19.16-basic-19.16.0.0.0-1.x86_64.rpm
- oracle-instantclient19.16-tools-19.16.0.0.0-1.x86_64.rpm
- oracle-instantclient19.16-sqlplus-19.16.0.0.0-1.x86_64.rpm
3. 將二進位檔案傳輸至 EC2 執行個體。如需詳細資訊,請參閱使用 SCP 用戶端將檔案傳輸到 Linux 執行個體。
4. 請遵循 Oracle 文件中的指示,以便使用 RPM 安裝 Oracle Instant Client。此處理程序會在預設位置 /usr/lib/oracle/example-client-version/client64 安裝二進位檔案。例如,如果您下載 19.16 版的二進位檔案,則安裝的預設二進位檔案位置是 /usr/lib/oracle/19.16/client64/bin。
5. 安裝 SQL*Plus Package (RPM) 套件。SQL*Plus 可用來測試 EC2 執行個體與 RDS 執行個體之間的連線。
範例:
sudo yum install oracle-instantclient19.16-sqlplus-19.16.0.0.0-1.x86_64.rpm
6. 設定或更新下列環境變數,如下列範例所示:
export PATH=$PATH:/usr/lib/oracle/19.16/client64/bin export LD_LIBRARY_PATH=/usr/lib/oracle/19.16/client64/lib
7. 在下列位置建立您的設定檔 (例如 tnsnames.ora 和 sqlnet.ora):/usr/lib/oracle/ example-client-version/client64/lib/network/admin。在此範例中,該位置將會是:/usr/lib/oracle/19.16/client64/lib/network/admin。
設定環境
1. 在 tnsnames.ora 檔案中新增 Data Pump 匯入或匯出所需的 TNS 項目。
tnsnames.ora 檔案中的項目範例:
target = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = xxxx.rxrxrmwt1x471wi.eu-central-1.rds.amazonaws.com) (PORT = 1521)))(CONNECT_DATA = (SID = orcl)))
如需詳細資訊,請參閱設定 SQL*Plus 以使用 SSL 連接 Oracle 資料庫執行個體。
2.更新來源和目標 RDS 執行個體安全群組的傳入規則,以允許來自 EC2 執行個體的連線。
3.在來源 RDS 執行個體中建立測試資料表,藉由執行類似下列的查詢來執行匯出:
CREATE TABLE TEST1 AS SELECT * FROM DBA_TABLES; CREATE TABLE TEST2 AS SELECT * FROM DBA_OBJECTS; CREATE TABLE TEST3 AS SELECT * FROM DBA_DATA_FILES;
將表格從來源 Oracle RDS 執行個體匯入目標 Oracle RDS 執行個體
若要將表格從來源 Oracle RDS 執行個體匯入目標 Oracle RDS 執行個體,請執行下列操作:
1. 執行類似於下列範例的查詢,在來源資料庫和目標資料庫之間建立資料庫連結。這要搭配網路連結參數使用:
CREATE DATABASE LINK sample_conn CONNECT TO example-username IDENTIFIED BY example-password USING '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = example-hostname)(PORT = example-port)))(CONNECT_DATA =(SERVICE_NAME = example-service-name)))';
將目標執行個體連線至來源執行個體的資料庫連結,具有允許目標執行個體連線的輸入規則。
2. 執行 impdp 命令之前,請先完成本文所述的必要條件和設定。
3. 登入包含 Oracle Instant Client 的 EC2 執行個體。
4. 若要將資料從來源執行個體匯入至目標執行個體,請執行類似下列的命令:
impdp admin@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn
範例輸出:
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Starting "ADMIN"."SYS_IMPORT_TABLE_01": admin/********@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 3.625 MB Processing object type TABLE_EXPORT/TABLE/TABLE . . imported "ADMIN"."TEST2" 20634 rows . . imported "ADMIN"."TEST1" 1537 rows . . imported "ADMIN"."TEST3" 6 rows Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Job "ADMIN"."SYS_IMPORT_TABLE_01" successfully completed at Wed Oct 14 23:57:28 2020 elapsed 0 00:01:06
從 Oracle RDS 執行個體匯出資料,並在遠端主機的本機上建立傾印檔案
若要從 Oracle RDS 執行個體匯出資料並在本機建立傾印檔案,請執行下列操作:
- 在 EC2 執行個體或遠端主機上安裝 Oracle 資料庫。在下列範例中,Oracle XE 是安裝在 Windows EC2 執行個體上。如需 Oracle XE 的詳細資訊,請參閱 Oracle Database XE Quick Start (Oracle 資料庫 XE 快速入門)。
- 更新來源 RDS 執行個體安全群組的傳入規則,以允許來自 EC2 執行個體的連線。
1. 使用 Oracle 用戶端 (例如 SQL*Plus) 登入 XE 資料庫。然後,在 Oracle XE 資料庫上建立一個目錄。此目錄將參照您要在 EC2 執行個體上建立傾印檔案的目錄。執行類似下列內容的查詢:
create directory exp_dir as 'C:\TEMP\';
2. 在 XE 資料庫上,使用類似下列範例的命令,建立連線至來源 RDS 資料庫的資料庫連結:
CREATE DATABASE LINK exp_rds CONNECT TO admin identified by example_password USING '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = example-hostname)(PORT=example-port)))(CONNECT_DATA =(SERVICE_NAME = example-service-name)))';
3. 測試類似下列內容的資料庫連結:
select sysdate from dual@exp_rds;
4. 若要在 EC2 執行個體上建立傾印檔案,請執行類似下列的命令:
expdp system network_link=exp_rds directory=exp_dir dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3
範例輸出:
Connected to: Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Warning: Oracle Data Pump operations are not typically needed when connected to the root or seed of a container database. Starting "SYSTEM"."SYS_EXPORT_TABLE_01": system/******** network_link=exp_rds directory=exp_dir dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Processing object type TABLE_EXPORT/TABLE/TABLE . . exported "ADMIN"."TEST2" 2.713 MB 23814 rows. . exported "ADMIN"."TEST1" 677.1 KB 1814 rows. . exported "ADMIN"."TEST3" 15.98 KB 5 rows Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is: C:\TEMP\TABLE_DUMP.DMP Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at Wed Aug 24 18:15:25 2022 elapsed 0 00:00:18
從 Oracle RDS 執行個體匯出資料,並將傾印檔案儲存在 RDS 主機上
若要從 Oracle RDS 執行個體匯出資料,並將傾印檔案儲存在 RDS 主機上,請執行下列操作:
1. 執行 expdp 命令之前,請先完成本文所述的必要條件和設定。
2. 登入包含 Oracle Instant Client 的 EC2 執行個體。
3. 執行類似下列內容的命令,以在 RDS 執行個體上建立傾印檔案:
expdp admin@target dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3
範例輸出:
Export: Release 19.0.0.0.0 - Production on Wed Aug 24 16:18:58 2022 Version 19.16.0.0.0 Copyright (c) 1982, 2022, Oracle and/or its affiliates. All rights reserved. Password: Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Starting "ADMIN"."SYS_EXPORT_TABLE_01": admin/********@target dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Processing object type TABLE_EXPORT/TABLE/TABLE . . exported "ADMIN"."TEST2" 2.713 MB 23814 rows . . exported "ADMIN"."TEST1" 677.1 KB 1814 rows . . exported "ADMIN"."TEST3" 15.98 KB 5 rows Master table "ADMIN"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for ADMIN.SYS_EXPORT_TABLE_01 is: /rdsdbdata/datapump/table_dump.dmp Job "ADMIN"."SYS_EXPORT_TABLE_01" successfully completed at Wed Aug 24 16:19:20 2022 elapsed 0 00:00:15
匯入位於 RDS 主機上的傾印檔案
若要匯入儲存在 RDS 主機上的傾印檔案,請執行下列操作:
備註:在此範例中,資料位於 RDS 主機上的 DATA_PUMP_DIR 中。
1. 執行 impdp 命令之前,請先完成本文所述的必要條件和設定。
2. 登入包含 Instant Client 的 EC2 執行個體。
3. 在 EC2 執行個體上執行類似下列的命令,以匯入位於 RDS 主機上的傾印檔案。
注意:在此範例中,表格會在匯入資料之前截斷。
impdp admin@target directory=DATA_PUMP_DIR dumpfile=table_dump.dmp logfile=impdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 table_exists_action=truncate
範例輸出:
import: Release 19.0.0.0.0 - Production on Thu Sep 8 13:24:44 2022 Version 19.16.0.0.0 Copyright (c) 1982, 2022, Oracle and/or its affiliates. All rights reserved. Password: Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Master table "ADMIN"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded Starting "ADMIN"."SYS_IMPORT_TABLE_01": admin/********@target directory=DATA_PUMP_DIR dumpfile=table_dump.dmp logfile=impdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 table_exists_action=truncate Processing object type TABLE_EXPORT/TABLE/TABLE Table "ADMIN"."TEST2" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate Table "ADMIN"."TEST3" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate Table "ADMIN"."TEST1" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "ADMIN"."TEST2" 2.749 MB 24059 rows . . imported "ADMIN"."TEST1" 677.2 KB 1814 rows . . imported "ADMIN"."TEST3" 15.98 KB 5 rows Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Job "ADMIN"."SYS_IMPORT_TABLE_01" successfully completed at Thu Sep 8 13:24:54 2022 elapsed 0 00:00:06
在 RDS for Oracle 資料庫執行個體和 Amazon S3 儲存貯體之間傳輸傾印檔案
若要在 RDS Oracle 資料庫執行個體和 Amazon S3 儲存貯體之間傳輸傾印檔案,您可以使用 S3 整合選項。如需詳細資訊,請參閱在 Amazon RDS for Oracle 和 Amazon S3 儲存貯體之間傳輸檔案。
相關資訊
相關內容
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 8 個月前lg...
- AWS 官方已更新 3 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前