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

yangtingkun發表於2009-03-13

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

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

利用RMAN遷移表空間碰到的問題(一):http://yangtingkun.itpub.net/post/468/480070

 

 

這個錯誤可能是比如容易碰到的一個錯誤:

bash-2.03$ rman target /

恢復管理器: Release 10.2.0.3.0 - Production on 星期五 1 9 01:42:22 2009

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

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

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

使用目標資料庫控制檔案替代恢復目錄
分配的通道: C1
通道 C1: sid=285 例項=testrac2 devtype=DISK

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

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

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

供自動例項使用的初始化引數:
db_name=TESTRAC
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_TESTRAC_cmja
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=/data1/backup
control_files=/data1/backup/cntrl_tspitr_TESTRAC_cmja.f


啟動自動例項 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 02:00:13 ) 失敗
RMAN-20202:
在恢復目錄中未找到表空間
RMAN-06019:
無法轉換表空間名稱"TEST"

其實這個錯誤也很簡單,就是RMAN在嘗試執行表空間及時點恢復的時候,發現還原操作所需要的表空間在當前資料庫備份中無法找到。

Oracle執行的這個表空間及時點恢復是一個資料庫級的恢復,並非只需要目標表空間的備份。

除了目標表空間的備份以外,RMAN還需要SYSTEMSYSAUX以及UNDO表空間的備份,如果任意一個表空間的備份不存在,則就會導致上面的錯誤。

所以在執行TRANSPORT TABLESPACE命令之前,應該首先檢查上面的表空間備份是否存在,如果不存在的話,應該首先執行備份操作。

其實RMAN完全可以設定的更加只能一些,因為備份對於RMAN是在簡單不過的事情,如果發現個別表空間的備份不存在,RMAN完全可以先對所需的表空間進行備份,等到所有的備份完成後,在設定恢復的SCN到當時的系統SCN,然後執行表空間及時點的恢復。

如果對於產品環境而言,資料庫的備份肯定不成問題,對於測試環境沒有備份的情況,可以考慮先備份整個資料庫,然後在執行TRANSPORT TABLESPACE命令。

 

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

相關文章