名詞解釋:
顧名思義,完全恢復就是指資料沒有丟失的恢復了。不完全恢復是指恢復後有部分資料丟失。它們是資料庫的兩種恢復方式。
完全恢復:利用重做日誌或增量備份將資料塊恢復到最接近當前時間的時間點。之所以叫做完整恢復是由於oracle應用了歸檔日誌和聯機重做日誌中所有的修改。
不完全恢復:利用備份產生乙個非當前版本的資料庫。換句話說,恢復過程中不會應用備份產生後生成的所有的重做日誌。
通常在下列情況下生成整個資料庫的不完整恢復
● 介質失敗損壞了幾個或全部的聯機重做日誌檔案;
● 使用者操作造成的資料丟失,比如,使用者誤刪除了一張表;
● 由於個別歸檔日誌檔案的丟失無法進行完整的恢復;
● 丟失了當前的控制檔案,必須使用備份的控制檔案開啟資料庫。
為了執行不完整介質恢復,必須使用恢復時間點以前的備份來還原資料檔案,並在恢復完成後使用resetlog選項開啟資料庫。
resetlogs引數
在不完全恢復期間,通常需要使用resetlogs命令開啟資料庫,這是因為我們要從已經建立的現有重做日誌流中脫離出來。resetlogs引數表示乙個資料庫邏輯生存期的結束了另乙個資料庫邏輯生存期的開始。資料庫的邏輯生存期也稱為乙個對應物(incarnation)。每次使用resetlogs命令時,scn計數器不會被重置,但是oracle會重置其他計數器(如日誌序列號),同時還會重置聯機重做日誌的內容。
經過測試,當在非歸檔模式下嘗試執行完全恢復時,發出alter database open 後,rman會報如下錯誤:
sql> alter database open;
alter database open
*error at line 1:
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號【完全恢復】
不完全恢復
不完全恢復有乙個核心要領需要牢記:不完全恢復影響的是整個資料庫,不能只對資料庫的一部分執行不完全恢復。不完全恢復使用的方法通常有:基於時間、scn、日誌序列、還原點或基於刪除的恢復。
$ rman target /
rman> startup mount
rman>run
2>
RMAN的備份與恢復 SPFILE恢復
1 方法最簡單,但是已經背離了rman恢復學習的初衷 但是這種方面需要乙個前提就是你的pfile檔案還存在 c sharp view plain copy print?create spfile c oracle product 10.2.0 db 1 database spfileorcl.ora...
MySQL完全備份與恢復
從物理與邏輯的角度,備份可以分為物理備份與邏輯備份 1 物理備份 對資料庫作業系統的物理檔案 如資料檔案,日誌檔案 的備份。物理備份又可以分為冷備份與熱備份。冷備份 在關閉資料庫多大時候進行。熱備份 資料庫正處於執行狀態,這種備份以來與資料庫的日誌檔案。溫備份 資料庫鎖定 不可寫入但可讀 的狀態下進...
MySQL完全備份與恢復
在生產環境中,資料的安全性是至關重要的,任何資料的丟失都可能產生嚴重的後果。資料庫備份的重要性主要體現在 使用資料庫的過程中,有多種原因造成資料的丟失 邏輯備份 指對資料庫邏輯元件 如表等資料庫物件 的備份 完全備份的優點 完全備份的缺點 msyqldump u 使用者名稱 p 密碼 選項 資料庫名...