oracle 如何使用DATA_DATA导出到S3存储桶?

2hh7jdfx  于 2023-10-16  发布在  Oracle
关注(0)|答案(4)|浏览(148)

我们有RDS(Oracle)示例,我需要导出特定的模式到转储文件。导出作品并将转储文件复制到DATA_DATA_DATA中。问题是RDS没有文件目录访问权限。
我需要在S3或复制到另一个EC2示例上导出的EC2文件。
文章:LINK讨论在两个RDS示例之间复制数据转储文件,但不复制到S3或EC2。

oalqel3c

oalqel3c1#

第三个选项我正在使用它。

1.看看alexandria-plsql-utils项目,特别是看看:amazon_aws_auth_pkgamazon_aws_s3_pkgftp_util_pkg封装。
1.安装所需的包和依赖项。
1.执行转储,然后使用下面的示例代码,您可以将文件从Amazon RDS Oracle复制到S3存储桶中。

declare
   b_blob blob;
begin
   b_blob := file_util_pkg.get_blob_from_file ('DATA_PUMP_DIR', 'my_dump.dmp');
   amazon_aws_auth_pkg.init ('aws_key_id','aws_secret', p_gmt_offset => 0);
   amazon_aws_s3_pkg.new_object('my-bucket-name', 'my_dump.dmp', b_blob, 'application/octet-stream');
 end;

`

wvyml7n5

wvyml7n52#

有几种方法可以解决这个问题。第一个选项。
1.在EC2示例上安装Oracle XE版本的免费数据库版本(非常简单和快速)
1.将架构从RDS示例导出到DATA_DATA_DATA目录。使用DBMS_DATAPUMP包或在EC2上运行expdp user/pass@rds来创建转储文件。
1.在RDS DB和Oracle XE DB之间的RDS示例上创建数据库链接。
如果要在同一个VPC或对等VPC内的两个DB示例之间创建数据库链接,则这两个DB示例之间应具有有效的路由。调整数据库链接以在VPC中与DB连接使用
1.通过数据库链接使用DBMS_FILE_TRANSFER.PUT_FILE将转储文件从RDS示例复制到EC2上的Oracle XE DB
1.将文件从EC2示例上的DATA_PUMP_DIR目录Oracle XE复制到S3。

**第二个选项。**使用过时的实用程序exp导出。它对某些类型的数据的导出有限制,并且速度较慢。

1.在EC2示例上运行exp user/password@rds
1.将文件从EC2示例上的Oracle XE目录复制到S3
从Oracle Database 11g开始,不再支持原始导出以供一般使用。在11g中,原始导出的唯一支持用途是将XMLType数据向后迁移到数据库版本10g release 2(10.2)或更早版本。因此,Oracle建议您使用新的数据泵导出和导入实用程序,但以下需要原始导出和导入的情况除外:原始出口和进口

olhwl3o2

olhwl3o23#

现在可以直接从Oracle数据库访问S3存储桶。请查看以下文档:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
这里的官方消息,这是支持:https://aws.amazon.com/about-aws/whats-new/2019/02/Amazon-RDS-for-Oracle-Now-Supports-Amazon-S3-Integration/?nc1=h_ls
看来第一篇文章是有点早得到这个消息。但无论如何,这篇文章列出了更好的解决方案,如数据库链接。

wtlkbnrh

wtlkbnrh4#

一旦数据泵导出驻留在Oracle DIRECTORY中,就可以很容易地将其推送到S3!
用途:rdsadmin.rdsadmin_s3_tasks
类似的方法是先将数据泵文件拉到oracle DIRECTORY,然后使用数据泵导入它。DBMS_DATAPUMP或impdp都可以引用目录中的文件。

相关问题