Oracle中跨平臺傳輸表空間

 

Oracle中的傳輸表空間功能, 用來將一個實例中的表空間和數據文件移到另一個實例中. 執行起來方便, 快捷.
但是要使用該功能有一些限制:
需要兩個平臺一致.
必須有相同的字符集和多語言字符集.
要求兩個實例的db block size 大小相等, 如不相等則需要兼容9.0以上等.


具體步驟如下:

SQL> alter tablespace example read only;

Tablespace altered

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 個文件。

 --平臺轉換

當需要在不同的平臺上傳輸表空間時, 需要執行平臺轉換.

RMAN> convert tablespace example
2> to platform 'Microsoft Windows IA (32-bit)'
3> format 'd:/d1';

啓動 backup 於 12-7月 -06
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 啓動數據文件轉換
輸入數據文件 fno=00005 name=D:/SYSTEM/ORA10G/ORADATA/ORA10G/EXAMPLE01.DBF
已轉換的數據文件 = D:/D1
通道 ORA_DISK_1: 數據文件轉換完畢, 經過時間: 00:00:25
完成 backup 於 12-7月 -06

RMAN> convert datafile 'd:/d1' db_file_name_convert 'd:/d1' 'e:/d.dbf'
2> ;

啓動 backup 於 12-7月 -06
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 啓動數據文件轉換
輸出文件名=D:/D1
已轉換的數據文件 = E:/D.DBF
通道 ORA_DISK_1: 數據文件轉換完畢, 經過時間: 00:00:37
完成 backup 於 12-7月 -06

RMAN>

--在不同的平臺上進行傳輸表空間, 則使用上面的e:/d.dbf 文件.

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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章