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>