暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译文] Oracle 云:自治数据库(ADW 或 ATP) - 从对象存储 (impdp) 导入数据

原创 Tim Hall 2021-09-13
2450

本文演示了如何使用该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 中无法创建的各种访问结构。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论