您好,登錄后才能下訂單哦!
本篇內容介紹了“數據庫中完全恢復與不完全恢復概念是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
完全恢復:利用重做日志或增量備份將數據塊恢復到最接近當前時間的時間點。之所以叫做完整恢復是由于Oracle應用了歸檔日志和聯機重做日志中所有的修改。
不完全恢復:利用備份產生一個非當前版本的數據庫。換句話說,恢復過程中不會應用備份產生后生成的所有的重做日志。
通常在下列情況下生成整個數據庫的不完整恢復
● 介質失敗損壞了幾個或全部的聯機重做日志文件;
● 用戶操作造成的數據丟失,比如,用戶誤刪除了一張表;
● 由于個別歸檔日志文件的丟失無法進行完整的恢復;
● 丟失了當前的控制文件,必須使用備份的控制文件打開數據庫。
為了執行不完整介質恢復,必須使用恢復時間點以前的備份來還原數據文件,并在恢復完成后使用RESETLOG選項打開數據庫。
resetlogs參數
在不完全恢復期間,通常需要使用resetlogs命令打開數據庫,這是因為我們要從已經建立的現有重做日志流中脫離出來。resetlogs參數表示一個數據庫邏輯生存期的結束了另一個數據庫邏輯生存期的開始。數據庫的邏輯生存期也稱為一個對應物(incarnation)。每次使用resetlogs命令時,SCN計數器不會被重置,但是Oracle會重置其他計數器(如日志序列號),同時還會重置聯機重做日志的內容。
經過測試,當在非歸檔模式下嘗試執行完全恢復時,發出alter database open 后,RMAN會報如下錯誤:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
但是如果加上resetlogs,就不會報錯了。而且從恢復的過程來看,期間確實使用在聯機日志文檔,也就是說它執行的是完全恢復。這說明在非歸檔模式下執行完全恢復后,打開數據庫時也要重置重做日志。其實這也很好想,非歸檔模式下,沒有歸檔的重作日志,完全恢復時使用聯機日志后,這些聯機日志文件就沒什么用了,因此Oracle就重置日志文件序列號(個人覺得:理論上來說,是可以不重置的,日志文件的序號直接在現有的日志序號上增加,但是這樣日志序號會越來越大。Oracle應該是考慮到這一點就在非歸檔模式下執行完全恢復和不完全恢復時都重置了重做日志)。
完全恢復
完全恢復很簡單,不多說,如下:
$ rman target / ##登錄rman工具,如果使用了catalog,則登陸方法rman targetsys/Oracle@lscatalogcata/cata@leo
RMAN> startup mount ##必須為mount狀態,才能restore 和 recover 數據庫
RMAN> restore database; ##復制舊數據文件覆蓋損壞的數據文件
RMAN> recover database; ##數據文件頭SCN號同步當前日志中最后一個SCN號【完全恢復】
RMAN> alter database open [resetlogs];
不完全恢復
不完全恢復有一個核心要領需要牢記:不完全恢復影響的是整個數據庫,不能只對數據庫的一部分執行不完全恢復。不完全恢復使用的方法通常有:基于時間、SCN、日志序列、還原點或基于刪除的恢復。
$ rman target /
RMAN> startup mount
RMAN>run
2> {
3> set until time "to_date('07/01/2015 15:00:00', 'mm/dd/yyyy hh34:mi:ss')";
4> restore database;
5> recover database;
6> alter database open;
7> }
從執行過程來看,不完全恢復就是加了一個限制條件,時間/SCN等。如上基于時間點的恢復,Oracle會查找目標恢復時間之前并與恢復時間最近的備份集。如果沒有找到可用的備份集,就會報錯。
“數據庫中完全恢復與不完全恢復概念是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。