在AWS RDS(Oracle)上执行数据导入
来源:互联网 发布:手机上能开淘宝店吗 编辑:程序博客网 时间:2024/05/17 08:08
操作纲要
- 生成导出数据。
- 传输导出数据至AWS RDS。
- 远程登录至AWS RDS并执行数据导入操作。
操作步骤 1:获取操作权限
操作步骤 1.1 [可选步骤] 创建数据导出目录:
为了方便管理,可将数据导出目录指定到特定文件夹,如:D:\dump_dir
.
创建导出目录:
create or replace directory DUMP_DIR as 'D:\dump_dir';
确认创建是否成功:
select * from dba_directories where directory_name='DUMP_DIR';
需要注意的地方:
目录D:\dump_dir
需要在文件系统上真实存在,因为Oracle不会替用户在文件系统中创建这个目录。
操作步骤 1.2 [可选步骤] 为导出任务单独创建一个用户:
create user data_operator_001 identified by password_of_data_operator_001 default tablespace users;
操作步骤 1.3 为执行数据导出操作的用户添加相应权限:
赋予基本操作权限
grant create session, create table, exp_full_database to data_operator_001;alter user data_operator_001 quota 100m on users;grant read, write on directory dump_dir to data_operator_001;grant execute on dbms_datapump to data_operator_001;
需要注意的地方:
- 赋予用户exp_full_database权限是为了让其能够导出其他用户的数据库信息。
- 修改用户在默认表空间users的额度是为了能让
DBMS_DATAPUMP.open
能够创建Jobs,否则会出现job不存在错误。 - 赋予用户dbms_datapump 的执行权限是为了下一步能通过
DBMS_DATAPUMP
包API导出数据。
检查权限:
操作步骤 2:生成导出数据
这一步骤主要使用DBMS_DATAPUMP
包API完成.
数据导出脚本:
DECLARE dp_handle NUMBER;BEGIN --sepcified operation,job mode dp_handle := DBMS_DATAPUMP.open(operation => 'EXPORT', job_mode => 'SCHEMA', remote_link => NULL, job_name => 'Dump_Database_data_operator_001', version => 'LATEST'); --specified dumpfile and dump directory DBMS_DATAPUMP.ADD_FILE(handle => dp_handle, filename => 'data_operator_001.dmp', directory => 'DUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); --specified log file and dump directory DBMS_DATAPUMP.ADD_FILE(handle => dp_handle, filename => 'exp.log', directory => 'DUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); --specified fliter for schema DBMS_DATAPUMP.METADATA_FILTER(dp_handle, 'SCHEMA_EXPR', 'IN (''need_to_export_schema'')'); DBMS_DATAPUMP.start_job(dp_handle); DBMS_DATAPUMP.detach(dp_handle);END;
操作步骤 3:传输导出数据至AWS RDS
这一步利用 DBMS_FILE_TRANSFER 工具包完成。
操作脚本:
BEGIN DBMS_FILE_TRANSFER.PUT_FILE(source_directory_object => 'DUMP_DIR', source_file_name => 'data_operator_001.dmp', destination_directory_object => 'DATA_PUMP_DIR', destination_file_name => 'data_operator_001.dmp', destination_database => 'AWS_RDS');END;
需要注意的地方:
- source_directory_object、source_file_name 的值需要与上步对应,否则 DBMS_FILE_TRANSFER 无法找到导出的数据文件。
- destination_directory_object设置成DATA_PUMP_DIR,原因就是我们无法在AWS RDS上创建文件系统目录(如果发现怎么创建请告知我,谢谢!),所以就用Oracle的默认值:DATA_PUMP_DIR。
- destination_database 的值需要通过如下方式创建,其定义了一个远程Oracle实例。
创建远程Oracle实例链接:
create database link AWS_RDS connect to user_on_AWS_RDS identified by passwordusing '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxx.xxxxx.ap-southeast-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))'
操作步骤 4:远程登录至AWS RDS并执行数据导入操作
这个步骤使用的工具:impdp
导入命令:
impdp user_on_AWS_RDS/password@AWS_ORACLE remap_schema=source_schema:destination_schema remap_tablespace=source_space:destination_space DUMPFILE=data_operator_001.dmp directory=DATA_PUMP_DIR table_exists_action=replace
需要注意的地方:
- 命令中的AWS_ORACLE 为TNS(Transparent Network Substrate)节点名,这个需要事先在Oracle安装目录下的NETWORK\ADMIN\tnsnames.ora文件中添加。以下附了一个连接AWS RDS的TNS节点名示例。
- 命令中destination_schema一般跟登录名相同。
- 命令中的destination_space需要事先在AWS RDS上创建。
- table_exists_action=replace为导入时的策略,请根据自己实际情况添加修改。
tnsnames.ora文件内容示例:
AWS_ORACLE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxx.xxxxx.ap-southeast-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))
References:
1. 使用 Oracle Datapump API 实现数据导出: http://blog.csdn.net/leshami/article/details/7195849
2. DBMS_DATAPUMP Usage: http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_datpmp.htm#i997806
3. Oracle Data Pump 工具系列:Data Pump 使用权限配置详解: http://blog.csdn.net/xiangsir/article/details/8627354
4. Importing Data Into Oracle on Amazon RDS: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.html
0 0
- 在AWS RDS(Oracle)上执行数据导入
- 在阿里云Rds上采用MySQLdump工具对数据进行导出导入
- 在阿里云Rds上采用MySQLdump工具对数据进行导出导入
- AWS RDS Oracle DB remote connection
- 亚马逊AWS学习——为oracle类型的RDS数据库部署数据
- AWS RDS 介绍 三)创建 RDS 实例
- AWS RDS上创建、连接、备份、删除mysql实例
- AWS RDS MySQL 从外部 数据库同步数据到RDS slave环境搭建
- AWS RDS 介绍 一)相关产品 二). 用户手册
- AWS RDS Rename DataBase - RDS重命名数据库
- 00032.Oracle按向导执行数据导入
- 在64bit机的Sql Agent上执行SSIS包导入Excel数据
- 在AWS上配置CodeCommit
- aws的rds导出问题
- linux上导入导出oracle数据
- 阿里rds导入大于100m的数据
- [AWS] 记录在AWS上部署WordPress遇到的问题
- 存储过程中执行bcp命令将数据导入 并在其他文件服务器上生成log文件
- Java引用类型
- 点击ImageButton进行页面跳转
- 第34讲项目2——麻烦的累加涨功夫
- App性能瓶颈优化 总结
- 内核源码解读基础
- 在AWS RDS(Oracle)上执行数据导入
- Java之冒泡排序的实现
- Ros_OpenCV_cascade分类器检测程序
- Python爬虫_简单获取百度贴吧图片
- C++扬帆远航——8(张三李四,等差数列)
- zabbix监控邮件报警功能二次开发(自定义媒体)
- go语言channel关注点
- 微信和qq默认表情代码对照表及表情文件下载
- 康托展开(哈希方法)