本文演示了如何使用该impdp实用程序将数据导入 Oracle 云上的自治数据仓库 (ADW) 或自治事务处理 (ATP) 服务。
本文中的示例基于自治数据仓库 (ADW),但相同的方法也适用于自动事务处理 (ATP) 服务。
导出现有数据
我们TEST在 Oracle 数据库云服务 (DBaaS) 上的 Oracle 18c 实例中调用了一个模式。该架构有两个表(EMP 和 DEPT),我们希望将它们传输到自治数据仓库 (ADW) 或自治事务处理 (ATP)。
创建目录对象。
conn / as sysdba
ALTER SESSION SET CONTAINER = pdb1;
CREATE OR REPLACE DIRECTORY temp_dir AS '/tmp/';
GRANT READ, WRITE ON DIRECTORY temp_dir TO test;
导出架构。ADW 文档在下面的示例中建议了EXCLUDE和DATA_OPTIONS选项。这些选项对于 ATP 服务不是必需的。对于这么小的导入,使用PARALLEL子句是愚蠢的,但我们想要生成多个转储文件。
expdp test/test@pdb1 \ schemas=test \ parallel=2 \ version=12.2 \ directory=temp_dir dumpfile=emp_dept%u.dmp logfile=expdp_emp_dept.log \ exclude=index, cluster, indextype, materialized_view, materialized_view_log, materialized_zonemap, db_link \ data_options=group_partition_table_data
这导致了以下转储文件。
/tmp/emp_dept01.dmp /tmp/emp_dept02.dmp
这些转储文件已上传到 AWS S3 存储桶。
我发现我必须version=12.2在导出期间设置该选项,否则在导入 ADW 和 ATP 期间会收到以下错误。
Connected to: Oracle Database 18c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
ORA-39002: invalid operation
ORA-39358: Export dump file version 18.0.0 not compatible with target version 12.2.0
用于 ADW 的 18c 版本似乎有些有趣。
对象存储凭证
我们需要创建一个凭据,其中包含用于连接到对象存储的用户名和密码。如果您是 AWS S3 存储桶,则用户名和密码如下。
- 用户名:AWS 访问密钥
- 密码:AWS 秘密访问密钥
凭据分别使用包的DROP_CREDENTIAL和CREATE_CREDENTIAL过程删除和创建DBMS_CLOUD。
BEGIN
DBMS_CLOUD.drop_credential(credential_name => 'OBJ_STORE_CRED');
END;
/
BEGIN
DBMS_CLOUD.create_credential (
credential_name => 'OBJ_STORE_CRED',
username => 'my AWS access key',
password => 'my AWS secret access key'
) ;
END;
/
从 S3 导入数据
要使导入工作,您必须建立从 Oracle 客户端到 ADW 数据库的连接。您可以在此处查看执行此操作所需的设置。
我们可以从 18c 客户端发出以下类型的导入。该CREDENTIAL选项指定要用于导入的对象库凭据。该DUMPFILE选项指定对象存储中转储文件的 URI。在TRANSFORM和EXCLUDE选项是ADW文档中推荐的设置,但不是必需的ATP服务。在本例中,我们使用REMAP_SCHEMA将对象放入 ADW 上名为 MY_USER 的模式中。
impdp admin/MyPassword123@obadw_high \
directory=data_pump_dir \
credential=obj_store_cred \
dumpfile=https://s3-eu-west-1.amazonaws.com/my-sh-data-bucket/emp_dept01.dmp,https://s3-eu-west-1.amazonaws.com/my-sh-data-bucket/emp_dept02.dmp \
parallel=2 \
remap_schema=test:my_user \
partition_options=merge \
transform=segment_attributes:n \
transform=dwcs_cvt_iots:y transform=constraint_use_default_index:y \
exclude=index, cluster, indextype, materialized_view, materialized_view_log, materialized_zonemap, db_link
对于 12.2 或更早版本的客户端,我们需要为 ADW 上的数据库设置默认凭据。
ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.OBJ_STORE_CRED';
我们可以发出以下类型的导入。CREDENTIAL不使用该选项,而是在每个对象存储 URI 之前使用“default_credential:”前缀。其余参数与前面的示例相同。
impdp admin/MyPassword123@obadw_high \
directory=data_pump_dir \
dumpfile=default_credential:https://s3-eu-west-1.amazonaws.com/my-sh-data-bucket/emp_dept01.dmp,default_credential:https://s3-eu-west-1.amazonaws.com/my-sh-data-bucket/emp_dept02.dmp \
parallel=2 \
remap_schema=test:my_user \
partition_options=merge \
transform=segment_attributes:n \
transform=dwcs_cvt_iots:y transform=constraint_use_default_index:y \
exclude=index, cluster, indextype, materialized_view, materialized_view_log, materialized_zonemap, db_link
我在 DBaaS 服务上从 18c 客户端运行了这两个导入,但请记住,它是在 ADW 数据库上启动导入过程。
获取日志文件
如果我们想读取impdp日志文件的内容,我们可以使用PUT_OBJECT命令将其推送到对象存储。
BEGIN
DBMS_CLOUD.put_object(
credential_name => 'obj_store_cred',
object_uri => 'https://s3-eu-west-1.amazonaws.com/my-sh-data-bucket/import.log',
directory_name => 'DATA_PUMP_DIR',
file_name => 'import.log');
END;
/
然后可以从对象存储中下载它。
自治事务处理 (ATP)
从对象存储中的转储文件导入数据的方法对于自治事务处理 (ATP) 服务与自治数据仓库 (ADW) 服务相同。
请记住,您可以在 ATP 中创建在 ADW 中无法创建的各种访问结构。




