利用RMAN遷移表空間碰到的問題(一)

yangtingkun發表於2009-03-12

嘗試10.2的新特性RMANTRANSPORT TABLESPACE進行表空間的遷移過程,其中碰到了不少問題,簡單總結一下。

這一篇介紹TRANSPORT TABLESPACE命令碰到的RMAN-5001錯誤。

 

 

在執行TRANSPORT TABLESPACE命令時,出現了這個錯誤:

RMAN> RUN
2> {
3> ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/data1/backup/%U';
4> TRANSPORT TABLESPACE "TEST" DATAPUMP DIRECTORY D_OUTPUT
5> DUMP FILE 'test_meta.dp' EXPORT LOG 'test_meta.log' IMPORT SCRIPT. 'test_import.src'
6> TABLESPACE DESTINATION '/data1/backup';
7> }

分配的通道: C1
通道 C1: sid=289 例項=testrac2 devtype=DISK

RMAN-05026: 警告: 假定以下表空間集適用於指定的時間點

表空間列表要求具有 UNDO
表空間 SYSTEM
表空間 UNDOTBS1
表空間 UNDOTBS2

使用 SID='mxak' 建立自動例項

供自動例項使用的初始化引數:
db_name=TESTRAC
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_TESTRAC_mxak
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
#No auxiliary destination in use
#Use default controlfile


啟動自動例項 TESTRAC

Oracle 例項已啟動

系統全域性區域總計     205520896 位元組

Fixed Size                     2028912 位元組
Variable Size                146803344
位元組
Database Buffers              50331648
位元組
Redo Buffers                   6356992
位元組
自動例項已建立

刪除自動例項
關閉自動例項
Oracle
例項已關閉
自動例項已刪除
釋放的通道: C1
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: tranport tablespace
命令 ( 01/09/2009 01:01:27 ) 失敗
RMAN-20202:
在恢復目錄中未找到表空間
RMAN-06019:
無法轉換表空間名稱"TEST"
RMAN-05517:
臨時檔案 +DISK/testrac/tempfile/temp.265.618591239 與目標資料庫所使用的檔案衝突
RMAN-05001:
輔助檔名 +DISK/testrac/datafile/sysaux.264.618591225 與正由目標資料庫使用的檔案發生衝突
RMAN-05001:
輔助檔名 +DISK/testrac/datafile/undotbs2.266.618591249 與正由目標資料庫使用的檔案發生衝突
RMAN-05001:
輔助檔名 +DISK/testrac/datafile/undotbs1.263.618591197 與正由目標資料庫使用的檔案發生衝突
RMAN-05001:
輔助檔名 +DISK/testrac/datafile/system.262.618591167 與正由目標資料庫使用的檔案發生衝突

RMAN> exit


恢復管理器完成。

其實造成這個錯誤的原因很簡單,就是沒有設定AUXILIARY DESTINATION

由於Oracle會建立一個輔助例項,並在這個例項上進行資料庫的及時點恢復過程,因此恢復過程會還原資料庫所有資料檔案,然後利用歸檔將資料庫恢復到某個時間點。

如果沒有設定AUXILIARY DESTINATION引數,且不透過其他手段設定輔助例項資料檔案的儲存位置的話,那麼輔助例項選擇的資料檔案位置和源資料庫一致,這也就造成了上面的錯誤。

最簡單的解決方法,就是設定AUXILIARY DESTINATION,設定了這個引數後,除了遷移表空間對應的資料檔案外(這些檔案的儲存位置由TABLESPACE DESTINATION引數確定),其他的資料檔案、控制檔案,以及引數檔案都儲存在AUXILIARY DESTINATION設定的目錄中。

除了設定AUXILIARY DESTINATION這個方法外,還可以利用SET NEWNAME來設定每個資料檔案的位置,不過這種方法相對要麻煩一些,需要具體設定每一個需要處理的資料檔案。還有一種類似的方法,透過CONFIGURE AUXNAME FOR依次設定每個資料檔案的新位置。這兩種方法都比較麻煩,需要設定每個檔案,比較容易出問題,不過好處是可以定製每個檔案的位置,對於不希望將所有檔案儲存在一個目錄下的情況,可以使用這兩種方法。

除此之外,還有一種方法,就是透過設定輔助例項啟動所需的初始化引數:SET AUXILIARY INSTANCE PARAMETER FILE。可以手工編輯一個初始化引數,並設定合適的LOG_FILE_NAME_CONVERTDB_FILE_NAME_CONVERT引數。這種方法其實也不簡單,不過需要對輔助例項進行定製的情況,可以考慮這種方法。

 

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

相關文章