amazon rds oracle 连接,在AWS RDS(Oracle)上执行数据导入

操作纲要

生成导出数据。

传输导出数据至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 password using '(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)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值