我们有RDS(Oracle)示例,我需要导出特定的模式到转储文件。导出作品并将转储文件复制到DATA_DATA_DATA中。问题是RDS没有文件目录访问权限。我需要在S3或复制到另一个EC2示例上导出的EC2文件。文章:LINK讨论在两个RDS示例之间复制数据转储文件,但不复制到S3或EC2。
oalqel3c1#
第三个选项我正在使用它。
1.看看alexandria-plsql-utils项目,特别是看看:amazon_aws_auth_pkg、amazon_aws_s3_pkg和ftp_util_pkg封装。1.安装所需的包和依赖项。1.执行转储,然后使用下面的示例代码,您可以将文件从Amazon RDS Oracle复制到S3存储桶中。
amazon_aws_auth_pkg
amazon_aws_s3_pkg
ftp_util_pkg
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;
`
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 DB1.将文件从EC2示例上的DATA_PUMP_DIR目录Oracle XE复制到S3。
DBMS_DATAPUMP
expdp user/pass@rds
DBMS_FILE_TRANSFER.PUT_FILE
DATA_PUMP_DIR
**第二个选项。**使用过时的实用程序exp导出。它对某些类型的数据的导出有限制,并且速度较慢。
exp
1.在EC2示例上运行exp user/password@rds。1.将文件从EC2示例上的Oracle XE目录复制到S3从Oracle Database 11g开始,不再支持原始导出以供一般使用。在11g中,原始导出的唯一支持用途是将XMLType数据向后迁移到数据库版本10g release 2(10.2)或更早版本。因此,Oracle建议您使用新的数据泵导出和导入实用程序,但以下需要原始导出和导入的情况除外:原始出口和进口
exp user/password@rds
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看来第一篇文章是有点早得到这个消息。但无论如何,这篇文章列出了更好的解决方案,如数据库链接。
wtlkbnrh4#
一旦数据泵导出驻留在Oracle DIRECTORY中,就可以很容易地将其推送到S3!用途:rdsadmin.rdsadmin_s3_tasks类似的方法是先将数据泵文件拉到oracle DIRECTORY,然后使用数据泵导入它。DBMS_DATAPUMP或impdp都可以引用目录中的文件。
4条答案
按热度按时间oalqel3c1#
第三个选项我正在使用它。
1.看看alexandria-plsql-utils项目,特别是看看:
amazon_aws_auth_pkg
、amazon_aws_s3_pkg
和ftp_util_pkg
封装。1.安装所需的包和依赖项。
1.执行转储,然后使用下面的示例代码,您可以将文件从Amazon RDS Oracle复制到S3存储桶中。
`
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 DB1.将文件从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建议您使用新的数据泵导出和导入实用程序,但以下需要原始导出和导入的情况除外:原始出口和进口
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
看来第一篇文章是有点早得到这个消息。但无论如何,这篇文章列出了更好的解决方案,如数据库链接。
wtlkbnrh4#
一旦数据泵导出驻留在Oracle DIRECTORY中,就可以很容易地将其推送到S3!
用途:rdsadmin.rdsadmin_s3_tasks
类似的方法是先将数据泵文件拉到oracle DIRECTORY,然后使用数据泵导入它。DBMS_DATAPUMP或impdp都可以引用目录中的文件。