Oracle
RMAN 重命名歸檔日誌中創建的數據文件
我正在嘗試將 Oracle 數據庫 (11.2.0.4.0) 還原到具有不同文件佈局的測試系統。正在使用 RMAN 備份生產數據庫,沒有目錄。我們在周日(最後一個是 3 月 9 日)對所有數據文件進行完整備份,然後僅在一周中的每晚備份歸檔日誌。
3/9 我們有 11 個數據文件。3/12 我創建了一個新的表空間/數據文件。今天進行還原時,我的一般過程是:
- 僅安裝 Oracle 軟體,不安裝初始數據庫
- 從 3/9 備份中將 SPFILE 還原為 PFILE 並對其進行編輯。這是我在測試伺服器上更改 DB_DOMAIN 和控製文件的新位置的地方。
- 使用新的 PFILE 啟動 nomount。
- 從 3/9 備份中恢復控製文件。
- 掛載數據庫。使用 sqlplus 我將重做日誌重命名為它們的新位置。
- 由於恢復的控製文件不知道 3/10 - 3/14 的備份片段,我在每個缺失的日子執行這個:
CATALOG BACKUPPIECE '/path/to/backuppiece.bkp'
- 最後我執行這個 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 的備份片段,我為每個
如果您使用最新的控製文件,則無需執行此步驟。