如何對不打亂正常備份週期的 Oracle 數據庫進行備份?
目標
我想將數據庫從伺服器 A 移動到伺服器 B。兩台伺服器具有相同的技術,因此一種方法是關閉源數據庫,將數據文件、控製文件、重做日誌、參數文件從 A 複製到 B,然後啟動數據庫在 B 上。但這需要很長時間,所以我將使用涉及存檔日誌的方法。例如,我可以使用 dataguard 在 SERVER B 上建構一個備用數據庫,並在遷移期間切換到該備用數據庫。但由於某些原因,我不想使用備用數據庫,也無法訪問 A 數據庫的備份以在 B 上恢復它。
方法
在 RMAN 之前,我通過以下方式執行此操作:
- 將A的數據庫設置為備份模式,並將所有數據文件複製到伺服器附加的磁碟中,並取消設置備份模式。
- 將此磁碟移動到 B 並將其附加到它。
- 現在不時將檔案運送到B並應用
- 在遷移期間,最後一個檔案被帶到 B 並應用,並複制數據庫。
當然,我也可以用 RMAN 試試這個。而不是複制所有檔案,我也可以使用增量備份。
所以我做了以下事情:
- 對連接到伺服器 A 的磁碟進行 0 級備份。
- 將磁碟移動到 B 並在伺服器 B 上恢復數據庫。
- 現在不時將檔案運送到B並應用
- 在遷移期間,最後一個檔案被帶到 B 並應用,並複制數據庫。
除了最後一個階段,我什至可以應用增量備份而不是存檔,但在這裡我對此不感興趣。
問題
我現在的問題是 A 上的數據庫使用增量備份進行備份: 1. 週日進行 0 級備份 2. 剩餘 6 天進行 1 級備份
我想在周三複製我的 0 級備份以進行遷移。但這會破壞正常備份。假設我在周三早上做這個 0 級備份,那麼週三晚上的 1 級備份是指今天早上的 0 級備份,而不是像往常一樣指向前一天的 1 級備份。但是在星期四進行還原/恢復的情況下,我們會遇到問題,因為星期三 0 級備份的磁碟不再可用。我認為數據庫仍然可以恢復,因為失去的時間間隔可以通過歸檔日誌恢復。但我想要一個不會弄亂正常備份的解決方案。所以星期三的一級備份應該是指星期二的一級備份。
解決方案
我怎樣才能做到這一點?
目前我看到以下方式:
我使用活動數據庫中的副本將 A 上的數據庫複製到連接到 A 的磁碟上。不得打開此數據庫,以便以後可以使用歸檔日誌恢復它。該磁碟從 A 分離並移動到 B。這里數據文件註冊為數據文件副本並恢復到伺服器 B。
但這需要 A 上的附加實例,以便我可以復製到該實例。
另一種方式可能是
BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG...
如此處所述
手冊說:
該
BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG...
命令實際上並不總是創建 1 級增量備份。如果沒有特定數據文件的 0 級映像副本備份,則執行此命令會在磁碟上創建具有指定標記的數據文件的映像副本備份,而不是創建 1 級備份。每次將數據文件添加到數據庫時,都會在腳本下次執行時創建新數據文件的映像副本。此後,為該數據文件創建第一個 1 級增量,並且在所有後續執行中,新數據文件的處理方式與任何其他數據文件一樣。
必須使用標記來標識為在此策略中使用而創建的增量 0 級數據文件副本,以便它們不會干擾您實施的其他備份策略。如果您有多個有效的增量備份策略,則 RMAN 無法明確創建增量 1 級備份,除非您標記 0 級備份。
這聽起來不錯,但我實際上必須對此進行測試。
我的問題
您建議使用什麼方法來獲得被正常備份週期的以下 0 級備份忽略的 0 級線上備份?
FULL-Backup 不會干擾正常備份。
從《Oracle數據庫線上文件11g第2版(11.2)》的《數據庫備份與恢復參考》中對備份操作數FULL的
BACKUP
命令描述來看:創建備份中包含的所有數據文件塊的備份。
FULL
是相反的INCREMENTAL
。FULL
如果既未指定也未指定,RMAN 預設會進行完整備份INCREMENTAL
。完整備份對後續的增量備份沒有影響,並且不被視為任何增量備份策略的一部分。但是,可以通過使用RECOVER
命令應用增量備份來增量更新完整映像副本備份。
我會使用 RMAN 來
DUPLICATE DATABASE TO OTHERDB
. 隨意使用適合您的環境/要求的相關方法之一。參考: