首页 > 数据库 > Oracle > Oracle 表空间迁移
平台必须支持表空间迁移(v$transportable_platform)
convert tablespace只能在源端执行
convert datafile : 只要能连接到源端就可以
convert database :必须在源端,且源端数据库必须出于read only,此为源端和目标端endian format必须一致。
convert :不会传输用户自定义类型
前提:
目标库安装好数据库软件及实例。
源库oracle版本低于或等于目标库。
源库和目标库字符集限制
SQL> exec sys.dbms_tts.transport_set_check('TEST_TB',true);
SQL> select * from sys.transport_set_violations;
no rows selected
--如果查询不到数据,则该表空间支持表空间迁移,否则不支持。
比如有一个table在表空间A里,其上的一个index在表空间B里。
那么对于表空间A,其中的对象不依赖表空间外的对象,所以是个自包含,但是表空间以外的index却依赖表空间内的对象,不是一个完全自包含。再表空间迁移表空间可以完全,但是index在表空间迁移会丢失,反过来,对于表空间B,表空间里的对象INDEX是依赖表空间A里的TABLE对象的。所以这里不满足自包含条件。表空间迁移也就会出现问题。
SQL> select platform_name,endian_format from v$transportable_platform;
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name ;
如果2端平台字节顺序不一致,则在传输时需要转换字节顺序。
SQL> alter tablespace test_tb read only;
SQL> create directory dmp as '/home/oracle/dir_dmp/';
SQL> grant read ,write on directory dmp to test;
[oracle@db ~]$ expdp \'sys/310012 as sysdba\' directory=dmp dumpfile=test_tb.dmp logfile=test_tb.log transport_tablespaces=test_tb
注意:如果字节顺序一致,可跳过此步。
[oracle@db ~]$ rman
target /
RMAN> convert
tablespace test_tb to platform 'Microsoft Windows IA (64-bit)' format
'/home/oracle/backup/%U';
操作系统拷贝文件(可使用scp或者ftp)
SQL> create directory dmp as '/OracleBackup/dir_dmp/';
创建表空间所需要附加到的用户
create user u1 identified by u1;
[oracle@zytk35 ~]$ impdp \'sys/310012 as sysdba\' directory=dmp dumpfile=test_tb.dmp transport_datafiles=/OracleBackup/dir_dmp/test_tb.266.887909987,/OracleBackup/dir_dmp/test_tb.267.887913297 remap_schema=test:u1
注意:数据文件名称和路径即为这边的文件名,这边可通过RMAN进行修改调整
SQL> select owner,segment_name,segment_type,tablespace_name from dba_segments where tablespace_name = 'TEST_TB';
SQL> select owner,segment_name,segment_type,tablespace_name from dba_segments where owner = 'TEST';
分析源库和目标库中表的数据
由于:T1表的索引对象再表空间USERS中,表空间迁移后丢失了索引对象,需要重建。
SQL> alter tablespace test_tb read write;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9515241/viewspace-1807661/ ,如需转载,请注明出处,否则将追究法律责任。