Oracle使用impdp的network_link迁移数据库
可以采用impdp的方式
不同于以往,这次采用了network_link,在源数据库和目标数据库都没有文件的存留,并且过程更加简化.
源数据库
172.16.1.38
目标数据库
192.168.16.114
1.首先,在目标数据库创建dblink
创建源数据库的TNS
SOURCE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.38)(PORT = 3025))
)
(CONNECT_DATA =
(SERVICE_NAME = mvbox)
)
)
创建源数据库的DBLink
create public database link source connect to mvbox_space identified by 123456 using ‘source‘;
关闭所有的应用服务器,然后停止Oracle监听器,检查是否还有活动的数据库连接
select ‘alter system kill session ‘‘‘||sid||‘,‘||serial#||‘‘‘ immediate;‘ sql from v$session where username in(‘MVBOX_DB‘);
3.目标数据库创建用户
create or replace directory test as ‘F:\\‘;
create user mvbox_db identified by "654321";
grant resource,connect,unlimited tablespace to mvbox_db;
GRANT CREATE MATERIALIZED VIEW TO mvbox_db;
grant read,write on directory test to mvbox_db;
因为源数据库有物化视图,所以在目标数据库需要授予CREATE MATERIALIZED VIEW权限.
4.目标数据库上执行导入
impdp ‘mvbox_db/"654321"‘ network_link=source directory=test schemas=mvbox_db PARALLEL=8
在生产数据库上,使用这种方式跨机房迁移数据库,停机时间大致5分钟,数据量在500M左右
(没有必要迁移的日志数据等,已经提前删除)
遇到的问题.
1.目标数据库的用户角色不能高于源数据库.
假设源数据库只有connect,resource角色,而目标数据库直接给予dba解决,导入时会报错.
这是基于安全的一个考虑吧.
2.ORA-39129错误
可能出现以下错误.
ORA-39129: Object type TABLE:"MVBOX_DB"."SYS_IMPORT_SCHEMA_01 not imported. Name conflicts with the master table
ORA-39129: Object type TABLE:"MVBOX_DB"."SYS_EXPORT_SCHEMA_01 not imported. Name conflicts with the master table
因为源数据库一直在使用expdp做备份,如果导出失败,则这次导出的日志表(SYS_EXPORT_SCHEMA_01)就不会删除.
导入也是同样.所以源数据库有一些系统表
而在目标数据库执行导入的时候,也会创建同名的表,导致冲突.可以直接在源数据库删除这些系统表即可.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。