《三思筆記》--讀書筆記
熱備份:也叫聯機備份。這種狀態下創建的備份肯定是不一致備份,利用這種熱備份做恢復時,有可能需要應用歸檔日誌或聯機重做日誌,才能將數據庫修復到一個一致性的狀態,所以要創建有效的熱備份,要求數據庫必須處於歸檔模式,否則創建的備份可能爲無效備份
熱備份不需要關閉數據庫,備份時用戶仍然可以連接並操作數據庫
冷備份:也叫脫機備份。利用冷備份做恢復時,如果數據庫是正常關閉(非shutdown abort或主機故障停電關閉等),則不需要對數據庫進行修復操作,否則也需要應用歸檔日誌和online redologs才能將數據庫修復到一個一致性的狀態。
open read only狀態下創建的備份也是冷備份
不一致性備份:不一致的備份在恢復後必須藉助歸檔日誌文件和聯機重做日誌,將數據庫修復到一致性的狀態才能打開,因此,創建不一致性的備份除了要備份數據庫啓動時必須的數據文件和控制文件外,還要備份歸檔日誌文件
只有歸檔模式下創建的不一致備份才能被視爲有效備份
備份規模:
1,完全備份
2,表空間備份((1),當數據庫處於歸檔模式。(2),表空間爲只讀或脫機狀態。滿足這兩個條件之一時,創建的表空間級備份纔是有效備份)
3,數據文件備份
4,控制文件備份
5,歸檔日誌文件備份
恢復方式--完全恢復:
如果對整個數據庫做恢復,步驟大概如下:
(1),mount數據庫
(2),確認所有數據文件爲online狀態
(3),執行恢復操作
(4),應用所有生成的redologs文件(包括聯機重做日誌文件和歸檔文件)
如果是對錶空間或數據文件級的恢復,步驟大概如下:
(1),open數據庫
(2),將要恢復的表空間或數據文件置爲offline
(3),執行恢復操作
(4),應用所有生成的redologs文件(包括聯機重做日誌文件和歸檔文件)
恢復方式--不完全恢復:
適用如下情況:
(1),介質損壞導致部分在線重做日誌不可用
(2),用戶誤刪數據,無法用邏輯方式恢復
(3),由於丟失部分歸檔日誌,無法進行完全恢復
(4),控制文件丟失,只能以備份的控制文件打開數據庫
由於不完全恢復只應用部分日誌文件,因此必須給oracle指定結束標誌,有如下選項可供選擇:
(1),基於時間:指定一個具體的時間點
(2),基於SCN
(3),基於cancel
(4),基於日誌序號:指定歸檔文件序號,恢復到指定的日誌序號後即中止恢復操作
恢復操作:
分爲兩步,restore和recover
restore是指將要恢復的文件從備份集中讀取出來,並保存至指定路徑下(如果未指定路徑,那麼就是保存到默認路徑),在rman備份恢復中對應restore命令
recover是指應用所有重做日誌,將數據庫恢復到奔潰前的狀態,或者應用部分redo,將數據庫恢復到指定的時間點,在rman備份恢復中對應recover命令
resetlogs操作:
執行了不完全恢復操作,或者使用了備份的控制文件進行恢復,或者執行flashback database操作之後,在打開數據庫時必須指定resetlogs選項,這是oracle自身特性決定的。
正常運行中的oracle內部有一個生命週期,這種生命週期在oracle中也有一個專業詞彙,叫incarnation。不完全恢復,顧名思義就是隻恢復部分數據,由於已經無法將數據庫恢復到當前狀態(崩潰前的狀態),oracle數據庫也不知道當前處於什麼狀態了,事務上也許一致,但是不是最新,oracle無法自己判斷,後續也許仍有重做日誌文件,但卻無法應用。如果沒有incarnation的概念,正常open數據庫的話又會產生重做日誌文件,並且這些日誌文件的序號與之前相同(可能內容不同),這樣不管是備份還是恢復都會造成混淆,因此必須在執行不完全恢復後,標誌之前生命週期結束,方法就是以resetlogs方式打開數據庫,以resetlogs方式打開後,oracle數據庫又開始一個新的生命週期,即重置incarnation,日誌文件序號也被重新初始化到1。
指定resetlogs會執行下列操作:
(1),歸檔當前的在線重做日誌文件(如果能訪問到的話),然後清空內容並將日誌文件序號重置爲1
(2),重置控制文件中關於在線日誌文件的元數據
(3),更新數據文件和在線重做日誌文件中的resetlogs scn和重置時間信息