1.首先验证数据库版本和平台是否支持,字节顺序
select d.name,d.platform_name,i.version,t.endian_format
from v$database d,v$instance i,v$transportable_platform. t
where t.platform_name=d.platform_name and d.name=upper(i.instance_name) ;
2.验证表空间是否自包含,可以使用dbms_tts包检查
DBMS_TTS.TRANSPORT_SET_CHECK(‘tablespace_name’,bool);
3.再检查视图TRANSPORT_SET_VIOLATIONS
Select * from transport_set_violation 是否返回行
4.生成可传输表空间集,使用data dump导出表空间元数据,导出元数据必须将表空间置为只读状态
Alter tablespace ts_name read only;
Expdp sysname/password dumpfile=’file1.dmp’ directory=%%% transport_tablespace= %% nologfile=%%%
Select file_name,tablespace_name from dba_data_files;
5.复制传输表空间对应数据文件file_name和元数据file1.dmp到目地数据库
并将传输的并空间置为读写状态
Alter tablespace ts_name read write;
6.检查传输表空间block_size的大小,相应调整db_nK_cache_size的大小
Alter system set db_nK_cache_size=’nM’;
7.导入元数据和将数据文件移动到相应位置,并将对应的表空间置为读写状态
使用RMAN传输表空间
使用rman实现表空间的传输与用户命令的传输的原理不同,rman传输表空间使用备份集中的数据构建,其中传输过程中会构建一个辅助实例,duplicate数据库时也要使用辅助实例(auxiliary instance),所以不需要将表空间置为只读
Transport tablespace t1,t2
Tablespace destination ‘%%%%%’
Auxiliary destination ‘%%%%%’
Until scn/time/restore point ‘%%%%’
Datadump directory %%%%%
Data file ‘%%%%’
Import script. ‘%%%%’
Export log ‘%%%%’;
表空间元数据 Export log存入Datadump directory 对应的路径
Import script等传输集相关文件和表空间数据文件 存入对应的路径Tablespace destination
辅助实例的system undo 等文件存入Auxiliary destination中,完成后自动删除
Import script不指定是默认自动生成impscrpt.Sql脚本,导入时也可以自己写脚本
生成传输集后移动到目标平台
执行导入即可,
并将表空间置为读写状态
PS:表空间传输可以简述为导入导出元数据外加数据文件
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24890594/viewspace-677734/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24890594/viewspace-677734/