oracle 复制数据 覆盖,冷拷贝表空间的形式进行Oracle部分数据迁移

需求说明:用户的一套双活复制系统,主机为生产节点,备机为备份节点,但是备机中有其他应用建立的用户和数据。要求对备机的数据进行一次全同步,将主机的若干个用户的数据迁移到备机,rowid需要保持一致,不允许停机,不允许动备机其他的用户。

限制条件:1、主备机环境一致(操作系统版本,数据库版本,安装路径,字符集,数据块大小等)

2、主机表空间在exp过程中需要read-only。

方法步骤:

1、首先在主机检查表空间的自包含性

SQL> EXECUTE SYS.DBMS_TTS.TRANSPORT_SET_CHECK('USERS',TRUE);

PL/SQL procedure successfully completed.

查看结果

SQL> select * from sys.transport_set_violations;

no rows selected

如果没有数据则说明该表空间是自包含的。如果有数据那么说明不是自包含的,需要进行处理。但是,如果关联的表空间也在迁移范围内,不自包含也可以。

2、查询主机用户所在表空间

select username,default_tablespace from dba_users where username='xxx';

3、查询表空间下的datafiles

select file_name from dba_data_files where tablespace_name = 'xxx';

4、将主机表空间离线

alter tablespace XXX read only;

5、取主机当前SCN作为断点(双活复制系统使用)

select to_char(current_scn,'XXXXXXXXXXXX') from v$database;

6、执行exp脚本

exp transport_tablespace=y tablespaces=xxx,yyy,zzz file=e:\0711\45.dmp

7、将exp导出的文件和表空间对应的datafile文件拷贝到备机(此时主机表空间已经可以read write)

8、备机删除表空间和数据文件

drop tablespace XXX including contents;

如果备机没有相应的用户,那么需要进行创建

9、将datafile覆盖到备机相同路径

10、执行imp脚本

imp transport_tablespace=y datafiles='D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx','D:\app\Administrator\oradata\xxx' tablespaces=xxx,yyy,zzz file=E:\0711\45.dmp

11、最后记得将备机表空间也恢复到read write状态

alter tablespace XXXX read write

12、其他应用的相关处理

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值