Oracle

RMAN 重命名歸檔日誌中創建的數據文件

  • March 14, 2014

我正在嘗試將 Oracle 數據庫 (11.2.0.4.0) 還原到具有不同文件佈局的測試系統。正在使用 RMAN 備份生產數據庫,沒有目錄。我們在周日(最後一個是 3 月 9 日)對所有數據文件進行完整備份,然後僅在一周中的每晚備份歸檔日誌。

3/9 我們有 11 個數據文件。3/12 我創建了一個新的表空間/數據文件。今天進行還原時,我的一般過程是:

  1. 僅安裝 Oracle 軟體,不安裝初始數據庫
  2. 從 3/9 備份中將 SPFILE 還原為 PFILE 並對其進行編輯。這是我在測試伺服器上更改 DB_DOMAIN 和控製文件的新位置的地方。
  3. 使用新的 PFILE 啟動 nomount。
  4. 從 3/9 備份中恢復控製文件。
  5. 掛載數據庫。使用 sqlplus 我將重做日誌重命名為它們的新位置。
  6. 由於恢復的控製文件不知道 3/10 - 3/14 的備份片段,我在每個缺失的日子執行這個:CATALOG BACKUPPIECE '/path/to/backuppiece.bkp'
  7. 最後我執行這個 RMAN 命令來恢復/恢復數據庫(從 獲取 SCN LIST BACKUPSET):
RUN
{
SET UNTIL SCN 426265698;
SET NEWNAME FOR DATAFILE 1 TO '/var/oracle/data/orcl/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/var/oracle/data/orcl/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/var/oracle/data/orcl/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 4 TO '/var/oracle/data/orcl/users01.dbf';
SET NEWNAME FOR DATAFILE 5 TO '/var/oracle/data/orcl/foo01.dbf';
SET NEWNAME FOR DATAFILE 6 TO '/var/oracle/data/orcl/foo02.dbf';
SET NEWNAME FOR DATAFILE 7 TO '/var/oracle/data/orcl/foo03.dbf';
SET NEWNAME FOR DATAFILE 8 TO '/var/oracle/data/orcl/foo04.dbf';
SET NEWNAME FOR DATAFILE 9 TO '/var/oracle/data/orcl/foo05.dbf';
SET NEWNAME FOR DATAFILE 10 TO '/var/oracle/data/orcl/foo06.dbf';
SET NEWNAME FOR DATAFILE 11 TO '/var/oracle/data/orcl/foo07.dbf';
SET NEWNAME FOR DATAFILE 12 TO '/var/oracle/data/orcl/foo08.dbf';
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}

所以這個過程通常執行良好;3/9 備份中存在的數據文件恢復到它們的新位置。問題是我在 3/12 創建的表空間。當恢復過程達到這一點時,RMAN 輸出:

creating datafile file number=12 name=/opt/oracle/oradata/orcl/foo08.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/14/2014 13:24:41
RMAN-20505: create datafile during recovery
ORA-01119: error in creating database file '/opt/oracle/oradata/orcl/foo08.dbf'
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 2: No such file or directory

現在,我知道我可以通過在舊位置創建目錄、讓 RMAN 恢復到其中並稍後移動數據文件來解決這個問題。但我想了解為什麼我的最後一個重命名命令不起作用,或者在恢復歸檔日誌時我需要更改哪些內容才能重命名。

SET NEWNAME 適用於 RESTORE 和 SWITCH,但不適用於 RECOVER。在恢復開始之前,數據文件已被重命名和切換。

但是,您的流程存在缺陷,上述問題是其副作用:

從 3/9 備份中恢復控製文件。

為什麼?您進行了幾乎完全的恢復以盡可能接近目前狀態,而不是 3/9 上的狀態。從 3 月 14 日的最新備份中恢復控製文件。

由於恢復的控製文件不知道 3/10 - 3/14 的備份片段,我為每個

如果您使用最新的控製文件,則無需執行此步驟。

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