独立表空间迁移:将表空间迁移到其他数据库中或其他平台服务器中,如windows下Oracle表空间迁移到rhel下Oracle中。
逻辑:将源库的独立表空间导出metadata信息,然后将metadata信息及数据文件复制到目标机,在目标机上导入metadata信息,数据文件直接使用复制过来的数据文件。同传统数据泵相比,减少了数据泵导出、导入数据的时间,直接使用数据文件。
- 要迁移的表空间须是独立的表空间,即没有其他的依赖项,如有依赖,需要将依赖的表空间也一同迁移。
- 源数据库和目标数据库版本需要一致。
- 目标机上须创建好要使用迁移表空间的用户。
- 使用到了expdp和impdp,需要配置好相应directory。
- 检查表空间独立性
exec sys.dbms_tts.transport_set_check('mfw333',true);
select * from sys.transport_set_violations;
2.将表空间设置为只读模式
alter tablespace mfw333 read only;
3.将表空间metadata通过数据泵导出(数据本身不导出)
expdp system/oracle directory=tts_dump dumpfile=tts.dmp logfile=tts.log transport_tablespaces=mfw333 transport_full_check=y
C:\Users\Administrator>expdp system/oracle directory=tts_dump dumpfile=tts.dmp logfile=tts.log transport_tablespaces=mfw333 transport_full_check=y
Export: Release 11.2.0.4.0 - Production on 星期四 5月 13 21:04:48 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** directory=tts_dump dumpfile=tts.dmp logfile=tts.log transport_tablespaces=mfw333 transport_full_check=y 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK 处理对象类型 TRANSPORTABLE_EXPORT/TABLE 处理对象类型 TRANSPORTABLE_EXPORT/INDEX/INDEX 处理对象类型 TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT 处理对象类型 TRANSPORTABLE_EXPORT/INDEX_STATISTICS 处理对象类型 TRANSPORTABLE_EXPORT/COMMENT 处理对象类型 TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINT 处理对象类型 TRANSPORTABLE_EXPORT/TRIGGER 处理对象类型 TRANSPORTABLE_EXPORT/TABLE_STATISTICS 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK 已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" ****************************************************************************** SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为: E:\APP\ADMINISTRATOR\BACKUP\EXPDP\TTS.DMP ****************************************************************************** 可传输表空间 MFW333 所需的数据文件: E:\APP\ADMINISTRATOR\ORADATA\ORCL\MFW333.ORA 作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已于 星期四 5月 13 21:05:00 2021 elapsed 0 00:00:12 成功完成
C:\Users\Administrator> |
4.检查源数据库和目标数据库平台的endian格式(字节序),如endian格式不同,需要通过rman转换。
select tp.endian_format from v$transportable_platform tp,v$database sp where tp.platform_name=sp.platform_name;
5.传输3步骤中生成的文件及提示的数据文件到目标数据库服务器。
6.在目标数据库系统导入medadata
transport_datafiles文件位置为导入后oracle中的数据文件位置,根据需要提前放置该文件到对应位置(如oradata下)。
impdp system/oracle directory=tts_dump dumpfile=tts.dmp logfile=tts_im.log transport_datafiles='e:\app\administrator\backup\expdp\mfw333.ora' ;
如果文件位置有误,可以重新移动数据文件位置,重启数据库到mount状态:
alter database rename file 'E:\APP\ADMINISTRATOR\BACKUP\EXPDP\MFW333.ORA' to 'E:\app\Administrator\oradata\orcl\MFW333.ORA';
7.将目标表空间设置为读写模式
Alter tablespace mfw333 read write;
8.将源数据库的所有TTS不能处理的metadata的到处后导入到目标平台数据库,如角色、序号等(可选)
Expdp full=y content=metadata_only;