Oracle10g新增CONVERT語法

yangtingkun發表於2009-05-04

10g開始,RMAN新增了CONVERT的語法,使得資料庫檔案可以跨版本複製,從這個特性開始,作業系統以及平臺不再是資料庫物理檔案的限制了。

 

 

Oracle支援的可轉換的平臺可以在V$TRANSPORTABLE_PLATFORM檢視中查詢:

SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;

PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT
----------- ---------------------------------------- --------------
          1 Solaris[tm] OE (32-bit)                  Big
          2 Solaris[tm] OE (64-bit)                  Big
          7 Microsoft Windows IA (32-bit)            Little
         10 Linux IA (32-bit)                        Little
          6 AIX-Based Systems (64-bit)               Big
          3 HP-UX (64-bit)                           Big
          5 HP Tru64 UNIX                            Little
          4 HP-UX IA (64-bit)                        Big
         11 Linux IA (64-bit)                        Little
         15 HP Open VMS                              Little
          8 Microsoft Windows IA (64-bit)            Little
          9 IBM zSeries Based Linux                  Big
         13 Linux 64-bit for AMD                     Little
         16 Apple Mac OS                             Big
         12 Microsoft Windows 64-bit for AMD         Little
         17 Solaris Operating System (x86)           Little
         18 IBM Power Based Linux                    Big
         20 Solaris Operating System (AMD64)         Little
         19 HP IA Open VMS                           Little

已選擇19行。

Oracle支援將資料檔案轉換為這些平臺上的資料檔案格式。

SQL> host
$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期四 3 5 01:36:55 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

連線到目標資料庫: TESTRAC (DBID=4291216984)

RMAN> convert tablespace 'TEST' to platform. 'Linux 64-bit for AMD'   
2> format '/data/backup/%T_%n_%N.dbf';

啟動 backup 05-3 -09
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=310 例項=testrac1 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=292 例項=testrac2 devtype=DISK
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup
命令 ( 03/05/2009 01:40:55 ) 失敗
RMAN-06599:
表空間 TEST 不是隻讀的

CONVERT要求目標表空間是隻讀的:

SQL> host
$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期四 3 5 01:42:20 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

連線到目標資料庫: TESTRAC (DBID=4291216984)

RMAN> convert tablespace 'TEST'
2> to platform. 'Linux 64-bit for AMD'
3> format '/data1/backup/%T_%n_%N.dbf';

啟動 backup 05-3 -09
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00008 name=+DISK/testrac/datafile/test01.dbf
已轉換的資料檔案 = /data1/backup/20090305_TESTRACx_TEST.dbf
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:07
完成 backup 05-3 -09

這個生成的檔案20090305_TESTRACx_TEST.dbf檔案就可以在Linux X86 for 64環境中進行遷移表空間的匯入,或者指向備份恢復操作。

當然CONVERT語法遠遠不止上面提到的,可以進行資料檔案、表空間甚至資料庫的轉換,同時各種限制條件也遠遠不只上面提到的,比如CONVERT資料庫就不能直接跨越不同的編碼方式。

在文件中提到CONVERT語法還有一個功能,由於絕大部分作業系統命令都無法直接訪問ASM中的資料檔案,因此可以利用CONVERTASM中的檔案複製的作業系統中:

RMAN> convert tablespace 'TEST'
2> format '/data1/backup/test01.dbf';

啟動 backup 05-3 -09
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00008 name=+DISK/testrac/datafile/test01.dbf
已轉換的資料檔案 = /data1/backup/test01.dbf
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:03
完成 backup 05-3 -09

不過這種方式其實還不如直接使用RMANCOPY命令,因為COPY命令沒有將表空間置於只讀狀態的限制。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-592573/,如需轉載,請註明出處,否則將追究法律責任。

相關文章