数据库知识:Oracle中传输表空间
yeliming
|
1#
yeliming 发表于 2006-09-16 20:28
数据库知识:Oracle中传输表空间
Oracle中的传输表空间功能,用来将一个实例中的表空间和数据文件移到另一个实例中。 执行起来方便,快捷。但是要使用该功能有一些限制:需要两个平台一致,必须有相同的字符集和多语言字符集。
要求两个实例的db block size 大小相等,如不相等则需要兼容9.0以上等。 具体步骤如下: SQL> --example表空间试验 SQL> connect sys/system as sysdba Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 Connected as SYS SQL> execute dbms_tts.transport_set_check('EXAMPLE',TRUE); PL/SQL procedure successfully completed SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS; VIOLATIONS -------------------------------------------------------------------------------- SQL> --如果上面的查询可以查到记录,则说明不适合表空间传输条件, 需要根据实际 SQL> --情况将对象移到别的表空间; SQL> C:\Documents and Settings\hawk>exp userid='sys/system as sysdba' transport_table space=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.DB F 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 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 经由常规路径由 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> |