Oracle中的传输表空间功能,用来将一个实例中的表空间和数据文件移到另一个实例中。 执行起来方便,快捷。但是要使用该功能有一些限制:需要两个平台一致,必须有相同的字符集和多语言字符集。 要求两个实例的db block size 大小相等,如不相等则需要兼容9.0以上等。 具体步骤如下:
SQL> --example表空间试验SQL> connect sys/system as sysdbaConnected to Oracle Database 10g EnterPRise Edition Release 10.1.0.2.0 Connected as SYSSQL> execute dbms_tts.transport_set_check('EXAMPLE',TRUE);PL/SQL procedure sUCcessfully completedSQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;VIOLATIONS--------------------------------------------------------------------------------SQL> --假如上面的查询可以查到记录,则说明不适合表空间传输条件, 需要根据实际SQL> --情况将对象移到别的表空间;SQL> C:/Documents and Settings/hawk>eXP userid='sys/system as sysdba' transport_tablespace=y tablespaces=EXAMPLE file ='d:/a.dmp';Export: Release 10.1.0.2.0 - Production on 星期三 7月 12 14:46:27 2006 Copyright (c) 1982, 2004, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 注: 将不导出表数据 (行) 即将导出可传输的表空间元数据... 对于表空间 EXAMPLE... . 正在导出簇定义. 正在导出表定义. . 正在导出表 REGIONS. . 正在导出表 COUNTRIES. . 正在导出表 LOCATIONS. . 正在导出表 DEPARTMENTS. . 正在导出表 JOBS. . 正在导出表 EMPLOYEES. . 正在导出表 JOB_HISTORY. . 正在导出表 CUSTOMERS. . 正在导出表 WAREHOUSES. . 正在导出表 ORDER_ITEMS. . 正在导出表 ORDERS. . 正在导出表 INVENTORIES. . 正在导出表 PRODUCT_INFORMATION. . 正在导出表 PRODUCT_DESCRipTIONS. . 正在导出表 PROMOTIONS. . 正在导出表 ORDERS_QUEUETABLE. . 正在导出表 AQ$_ORDERS_QUEUETABLE_S. . 正在导出表 AQ$_ORDERS_QUEUETABLE_T. . 正在导出表 AQ$_ORDERS_QUEUETABLE_H. . 正在导出表 AQ$_ORDERS_QUEUETABLE_G. . 正在导出表 AQ$_ORDERS_QUEUETABLE_I. . 正在导出表 STREAMS_QUEUE_TABLE. . 正在导出表 AQ$_STREAMS_QUEUE_TABLE_S. . 正在导出表 AQ$_STREAMS_QUEUE_TABLE_T. . 正在导出表 AQ$_STREAMS_QUEUE_TABLE_H. . 正在导出表 AQ$_STREAMS_QUEUE_TABLE_G. . 正在导出表 AQ$_STREAMS_QUEUE_TABLE_I. . 正在导出表 TIMES. . 正在导出表 PRODUCTS. . 正在导出表 CHANNELS. . 正在导出表 PROMOTIONS. . 正在导出表 CUSTOMERS
. . 正在导出表 COUNTRIES. . 正在导出表 SUPPLEMENTARY_DEMOGRAPHICS. . 正在导出表 CAL_MONTH_SALES_MV. . 正在导出表 FWEEK_PSCAT_SALES_MV. . 正在导出表 SALES. . 正在导出表 COSTS. . 正在导出表 MVIEW$_EXCEPTIONS. . 正在导出表 ONLINE_MEDIA. . 正在导出表 PRINT_MEDIA. 正在导出引用完整性约束条件. 正在导出触发器 . 结束导出可传输的表空间元数据 成功终止导出, 没有出现警告。 C:/Documents and Settings/hawk>C:/Documents and Settings/hawk>C:/Documents and Settings/hawk>copy D:/system/ora10g/oradata/ora10g/EXAMPLE01.DBF d:/EXAMPLE01.DBF 已复制 1 个文件。 C:/Documents and Settings/hawk>imp userid='sys/system as sysdba' file='d:/a.dmp' transport_tablespace=y datafiles='d:/EXAMPLE01.DBF'Import: Release 10.1.0.2.0 - Production on 星期三 7月 12 15:00:31 2006Copyright (c) 1982, 2004, Oracle. All rights reserved.连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options 经由常规路径由 EXPORT:V10.01.00 创建的导出文件 即将导入可传输的表空间元数据... 已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入 . 正在将 SYS 的对象导入到 SYS IMP-00017: 由于 ORACLE 错误 29349, 以下语句失败: "BEGIN sys.dbms_plugts.beginImpTablespace('EXAMPLE',6,'SYS',1,0,8192,1,438" "998,1,2147483645,8,128,8,0,1,0,8,3914340468,1,33,320552,NULL,0,334814,NULL," "NULL); END;" IMP-00003: 碰到 ORACLE 错误 29349 ORA-29349: 表空间 'EXAMPLE' 已存在 ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1728 ORA-06512: 在 line 1 IMP-00000: 未成功终止导入 --因为测试是在同一个实例中进行,所以出现上面的表空间已存在错误. SQL> alter tablespace example read write; Tablespace altered C:/Documents and Settings/hawk>