Oracle
如何讓 RMAN 將恢復的數據文件視為原始文件?
我正計劃將這個古老但至關重要的 Oracle 數據庫從一個 Windows Server 2003 集群遷移到另一個集群。
數據庫有許多數據文件,它們都在目標集群上獲取新路徑。唯一保持不變的路徑是備份文件。
我的遷移計劃如下:
- 使用我們的夜間 RMAN 備份腳本備份源集群上的數據庫:
run { allocate channel Channel1 type disk format 'F:\backup\folder\%d_%T_%s_%U.bak'; allocate channel Channel2 ... backup check logical ( database ); backup check logical ( archivelog all not backed up 2 times ); backup check logical ( current controlfile ); } allocate channel for maintenance device type disk; delete archivelog until time 'sysdate - 2' backed up 2 times to disk; delete obsolete device type disk;
我們在兩個集群上的 RMAN 保留策略都設置為
redundancy 2
,並且控製文件被用作恢復目錄。 2. 將備份文件複製到F:\backup\folder
目標集群上。 3. 使用此 RMAN 腳本恢復目標集群上的數據庫:run { allocate channel Channel1 type disk; allocate channel Channel2 ... set until sequence <sequence number> thread 1; SET NEWNAME FOR DATAFILE 'Old\Path\FILE01.DBF' TO 'New\Path\FILE01.DBF'; SET NEWNAME FOR DATAFILE ... restore database; }
- 更新控製文件中的數據文件路徑,將數據庫恢復到合適的順序,用
resetlogs
.這很好用,但有以下例外:
當我要求 RMAN 刪除目標集群上的過時文件時,它會將所有剛剛恢復的數據文件命名為過時的!
RMAN> delete obsolete device type disk; ... Deleting the following obsolete backups and copies: Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------- Datafile Copy 1 02-JUL-12 New\Path\FILE01.DBF ...
好吧,RMAN 將這些數據文件辨識為副本是正確的。
但是,由於這是一次數據庫遷移,這些副本旨在成為新的原件,所以我當然不希望 RMAN 在維護過程中刪除它們!
是否可以調整此遷移過程,以便 RMAN 將恢復的數據庫視為新的原始數據庫?
發出switch 到 copy,然後進行交叉檢查。