日期:2014-05-16  浏览次数:20453 次

传输表空间学习实例

很久以前做的实例,现在重新整理一下。

 

假设我们要传输下面的表空间:

Tablespace

Datafile

licz_1

/oradata/orcl/licz01.dbf

licz_2

/oradata/orcl/licz02.dbf

 

步骤1:确定系统是否支持和字节串是支持传输表空间

这个步骤适应于不于系统间的表空间的传输,如果是相同系统平台则不需要这步,否则用下面的查询判断表空间传输是否支持:

 

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
------------------------------- --------------
Microsoft Windows IA (
32-bit)    Little

 

注意:我们看到查询结果是两个系统PLATFORM_NAME和ENDIAN_FORMAT的bit和ENDIAN_FORMAT是相同,所以这两个平台间可以相互表空间传输,不需要转换表空间集,否则要需要转换表空间集。

 

步骤2:选择一个独立的表空间集

在这可传输集的外面可能存在逻辑或物理对象信赖,你只能传输一个独立的表空间集,下面情况是违反表空间集的独立性的:

l         一个索引在这个表空间里而这个表在表空间的外部,注意:如果表空间中的表相应的索引在表空间的外面,这不违例

l         分区表的一部分在表空间集里

l         一个参照完整性约束在表上。当在传输表空间集时,你可以选择是否包括完整性约束,如果你不考虑传输约束,这表空间的独立性不受影响,否则这是违例的

l         在表空间中有指向外部的lob字段

l         An XML DB schema (*.xsd) that was registered by user A imports a global schema that was registered by user B, and the following is true: the default tablespace for user A is tablespace A, the default tablespace for user B is tablespace B, and only tablespace A is included in the set of tablespaces.

<