使用 Oracle Data Pump 导出数据
Oracle Data Pump 在 Autonomous Database 和其他 Oracle 数据库之间提供了非常快的批量数据和元数据移动。
Oracle 建议使用最新 Oracle Data Pump 版本将数据从 Autonomous Database 导出到其他 Oracle 数据库,因为它包含增强功能和修复程序,以获得更好的体验。从 Oracle Instant Client 下载,下载适用于您平台的工具包(包括 Oracle Data Pump)。有关下载 Oracle Instant Client 和工具包后所需的安装步骤,请参见平台安装下载页面上的安装说明。
-
选项 1:将数据与数据泵导出一起移动到 Autonomous Database 目录
使用 Oracle Data Pump 将数据导出到数据库上的某个目录,然后将数据从该目录移动到 Cloud Object Store。当希望将数据从 Autonomous Database 移动到多个目标数据库时,此方法非常有用。您可以创建一次转储文件集并将其用于多个目标数据库,而不是将数据导出到多个云对象存储。
通过将数据导出到数据库上的目录,执行以下步骤从 Autonomous Database 移动数据:- 将数据导出到 Autonomous Database 上的目录,并将转储文件集从该目录移动到云对象存储。请参阅使用 Autonomous Database 上的目录导出数据。
- 从云对象存储下载转储文件,将数据导入目标数据库,然后清除云对象存储。请参见 Download Dump Files,Run Data Pump Import,and Clean Up Object Store 。
-
选项 2:将数据泵导出到对象存储
使用此导出方法,可以使用 Oracle Data Pump 将数据直接导出到对象存储。Oracle Cloud Infrastructure 对象存储和 Oracle Cloud Infrastructure 经典对象存储支持此导出方法。这样可以避免在 Autonomous Database 的目录中创建转储文件集,然后将转储文件集移动到云对象存储的开销。当您计划将数据移动到单个目标数据库时,此方法可以节省工作量并加快导出过程。
通过将数据直接导出到对象存储,执行以下步骤从 Autonomous Database 移动数据:- 直接将数据从 Autonomous Database 导出到云对象存储。请参阅将数据从 Autonomous Database 直接导出到对象存储。
- 从云对象存储下载转储文件,将数据导入目标数据库,然后清除云对象存储。请参见 Download Dump Files,Run Data Pump Import,and Clean Up Object Store 。
使用 Autonomous Database 上的目录导出数据
使用数据泵在 Autonomous Database 上创建转储文件集
-
创建一个目录,用于存储包含导出数据的转储文件。例如:
CREATE DIRECTORY data_export_dir as 'data_export';
-
在设置了 dumpfile 参数、将 filesize 参数设置为小于 50G 以及设置了 directory 参数的情况下运行数据泵导出。例如,下面显示了如何在名为
ATPC1
的 Autonomous Database 中导出名为SALES
的方案,该方案具有 64 个 ECPU: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,即具有expdp
的 16。 -
对于 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 位至 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 Utilities 或 Oracle Database 23ai Utilities 中的 Oracle Data Pump Export 。
将转储文件集从 Autonomous Database 移至云对象存储
-
连接到 Autonomous Database 。
-
使用
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 验证令牌。请参见 Working with Auth Tokens 。 -
Oracle Cloud Infrastructure Object Storage Classic :
username
是您的 Oracle Cloud Infrastructure Classic 用户名,password
是您的 Oracle Cloud Infrastructure Classic 密码。此操作以加密格式将身份证明存储在数据库中。您可以使用身份证明名称的任何名称。请注意,除非对象存储身份证明发生更改,否则此步骤仅需要一次。存储身份证明后,可以对所有数据加载使用相同的身份证明名称。
-
-
通过调用
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 Procedure 。
直接将数据从 Autonomous Database 导出到对象存储
显示如何使用 Oracle Data Pump 将数据从 Autonomous Database 直接导出到 Cloud Object Store。
下载转储文件、运行数据泵导入和清理对象存储
如果需要,请从云对象存储下载转储文件,并使用 Oracle Data Pump 导入将转储文件集导入到目标数据库。然后执行任何所需的清理。
有关详细信息,请参阅 Oracle Database 19c Utilities 或 Oracle Database 23ai Utilities 中的 Parameters Available in Oracle Data Pump Import Command-Line Mode 。