这篇文章主要介绍“怎么用冷拷贝表空间的形式进行Oracle部分数据迁移”,在日常操作中,相信很多人在怎么用冷拷贝表空间的形式进行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、其他应用的相关处理
到此,关于“怎么用冷拷贝表空间的形式进行Oracle部分数据迁移”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/205336.html