首页 > 数据库 > Oracle > Oracle传输表空间学习
1、确定是否平台支持表空间传输、以及平台字节顺序(endianness)
|
SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME; |
|
--源端 PLATFORM_NAME ENDIAN_FORMAT --------------------- -------------- Linux IA (32-bit) Little |
|
--目标端 PLATFORM_NAME ENDIAN_FORMAT ---------------------------------- -------------- Solaris[tm] OE (32-bit) Big |
|
:说明源端、目标端都支持表空间传输,且endian不同,需要conversion。 |
|
注:如索引、分区、引用完整性约束、LOB字段等不在同一表空间下的情况。 |
|
--查看表空间sales_1、sales_2的自包含情况 EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('sales_1,sales_2', TRUE); SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
VIOLATIONS --------------------------------------------------------------------------- Constraint DEPT_FK between table JIM.EMP in tablespace SALES_1 and table JIM.DEPT in tablespace OTHER Partitioned table JIM.SALES is partially contained in the transportable set |
|
:即不满足自包含关系,完整性约束DEPT_FK也存在在OTHER表空间中。(可以考虑绕过这个约束,不导出) |
|
1)修改表空间read only SQL> ALTER TABLESPACE sales_1 READ ONLY; SQL> ALTER TABLESPACE sales_2 READ ONLY; 2)expdp导出 $ expdp system/oracle dumpfile=expdat.dmp directory=data_pump_dir transport_tablespaces=sales_1,sales_2 logfile=tts_export.log
|
注:transport_full_check=y 严格的包含检查 |
3)Convert(跨平台,且平台endianness不同时需convert)
|
$ RMAN TARGET / RMAN> CONVERT TABLESPACE sales_1,sales_2 TO PLATFORM 'Microsoft Windows IA (32-bit)' FORMAT '/tmp/%U'; |
Starting conversion at source at 30-SEP-08
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input datafile file number=00007 name=/u01/app/oracle/oradata/salesdb/sales_101.dbf
converted datafile=/tmp/data_D-SALESDB_I-1192614013_TS-SALES_1_FNO-7_03jru08s
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting datafile conversion
input datafile file number=00008 name=/u01/app/oracle/oradata/salesdb/sales_201.dbf
converted datafile=/tmp/data_D-SALESDB_I-1192614013_TS-SALES_2_FNO-8_04jru0aa
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:25
Finished conversion at source at 30-SEP-08
|
|
可以使用copy、ftp、rman、DBMS_FILE_TRANSFER 包等方法传输。(裸设备可使用dd命令) |
|
--convert数据文件目录及名称(如果前面没有转换endianness,可以在此步转换) $ RMAN TARGET / RMAN> CONVERT DATAFILE 'C:\Temp\sales_101.dbf', 'C:\Temp\sales_201.dbf' TO PLATFORM="Microsoft Windows IA (32-bit)" FROM PLATFORM="Solaris[tm] OE (32-bit)" DB_FILE_NAME_CONVERT= 'C:\Temp\', 'C:\app\orauser\oradata\orawin\' PARALLELISM=4; |
ALTER TABLESPACE sales_1 READ WRITE;
ALTER TABLESPACE sales_2 READ WRITE;
|
impdp system dumpfile=expdat.dmp directory=data_pump_dir
transport_datafiles=
c:\app\orauser\oradata\orawin\sales_101.dbf,
c:\app\orauser\oradata\orawin\sales_201.dbf
remap_schema=sales1:crm1 remap_schema=sales2:crm2
logfile=tts_import.log
Password: password
|
此时可使表空间read write模式。 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27126919/viewspace-1685810/ ,如需转载,请注明出处,否则将追究法律责任。