ITPub博客

首页 > 数据库 > Oracle > Oracle传输表空间学习

Oracle传输表空间学习

原创 Oracle 作者:shytodear 时间:2015-06-04 16:24:37 0 删除 编辑

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。

 

2、选择一个自包含表空间集

注:如索引、分区、引用完整性约束、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表空间中。(可以考虑绕过这个约束,不导出)

 

 

3、导出表空间metadata

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

 

 

 

4、传输datafiles和dump files

可以使用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;

 

 

5、恢复源端表空间read write模式

ALTER TABLESPACE sales_1 READ WRITE;
ALTER TABLESPACE sales_2 READ WRITE;

 

 

6、impdp表空间metadata

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-11-05

  • 博文量
    66
  • 访问量
    238108