Oracle

如何讓 RMAN 將恢復的數據文件視為原始文件?

  • July 3, 2012

我正計劃將這個古老但至關重要的 Oracle 數據庫從一個 Windows Server 2003 集群遷移到另一個集群。

數據庫有許多數據文件,它們都在目標集群上獲取新路徑。唯一保持不變的路徑是備份文件。

我的遷移計劃如下:

  1. 使用我們的夜間 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;
}
  1. 更新控製文件中的數據文件路徑,將數據庫恢復到合適的順序,用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,然後進行交叉檢查。

引用自:https://dba.stackexchange.com/questions/20295