程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle實例恢復詳解理論知識

oracle實例恢復詳解理論知識

編輯:Oracle教程

實例恢復

當數據庫突然崩潰,而還沒有來得及將buffer cache裡的髒數據塊刷新到數據文件裡,同時實例崩潰時正在運行著的事務被突然中斷,則事務為中間狀態,也就是既沒有提交也沒有回滾,這時數據文件裡的內容不能體現實例崩潰的狀態,這樣關閉數據庫是不一致的。

- 下次啟動實例時,oracle會由smon進程自動進行實例恢復,實例啟動時,smon進程會去檢查控制文件所記錄的每個在線的、可讀寫的數據文件STOP SCN 號,數據庫正常運行過程,該STOP SCN 為空,而當數據庫正常關閉時,會進行完全檢查點,並將檢查點SCN 號更新到 STOP SCN中,實例崩潰時 oracle 來不及更新STOP SCN ,則STOP SCN 為空,當smon發現STOP SCN 是空值時,就知道實例上次沒有正常關閉,因此由smon進程開始實例恢復,

前滾:SMON 實例恢復時,會從控制文件中找到每3秒觸發的增量檢查點,檢查點隊列的第一個髒數據塊檢查點所對應的RBA地址,於是,smon進程到聯機文件中找到該檢查點RBA地址,然後從該位置開始往下應用,應用所有的redo 條目到ON DISK RBA(檢查點隊列的最後一個RBA) 就是聯機日志文件的最後一條redo。從而buffer cache 裡又恢復了實例崩潰那個時間的狀態。這個過程叫前滾

前滾完畢之後,buffer cache裡既有崩潰時已經提交還沒有寫入數據文件裡的髒數據塊,也還有事務被突然終止,而沒有提交又沒有回滾的事務所髒的數據塊,前滾完畢後,smon進程立即打開數據庫,但是,這時的數據庫中還含有那些中間狀態的,既沒有提交又沒有回滾的髒數據塊,這種髒數據塊是不能存在數據庫中的,因為他們沒有被提交必須回滾,打開數據庫以後,Smon 進程會在後台進行回滾。

oracle database 10g 會從實例錯誤中自動進行恢復,DBA所需要執行的操作就是正常啟動實例。實例會裝載控制文件,然後嘗試打開數據文件。如果發現數據文件在關閉過程中不同步,則使用重做日志組中包含的信息將數據文件前滾到關閉時的狀態,然後回退所有未提交的事務處理(因為還原表空間也已前滾)。

· 原因是嘗試打開的數據庫中的文件在關閉時不同步

· 是自動執行的

· 使用重做日志組中存儲的信息來同步文件

· 涉及到兩個不同的操作

- 前滾:數據文件還原到出現實例錯誤之前所處的狀態。

- 回退: 已執行但尚未提交的更改會返回到初始狀態。

實例恢復階段:

要使實例打開一個數據文件,數據文件頭中包含的系統更改號(SCN)必須也數據庫控制文件中存儲的當前SCN匹配。

如果編號不匹配,實例會應用聯機重做日志中的redo 數據,並按順序“重做”事務處理,直到數據文件處於最新狀態。所有數據文件與控制文件同步後,就會打開數據庫,此時用戶可登陸

應用重做日志後,會應用所有事務處理,使數據庫返回到出現錯誤時的狀態。這通常包含正在進行但尚未提交的事務處理。打開數據庫之後,會回退那些未提交的事務處理。在實例恢復的回退階段結束時,數據文件只包含提交的數據。

1.數據文件不同步

2.前滾(利用redo)

3.文件中的提交和未提交數據

4.回退(還原)

5.文件中提交數據

優化實例恢復(FAST_START_MTTR_TARGET是指允許DBA指定數據庫進行崩潰恢復需要的秒數)

在實例為事務處理返回 commit complete (提交完成)之前,在重做日志組中會始終記錄事務處理信息。重做日志組中的信息確保了在出現錯誤時可恢復事務處理。另外,事務處理信息還需要寫入數據文件。由於數據文件寫過程比重做寫過程要慢很多,因此,數據文件寫操作通常發生在重做日志組記錄了信息之後。(數據文件隨機寫過程比重做日志文件連續寫過程要慢)

每隔三秒,檢查點進程會在控制文件中記錄關於重做日志中檢查點位置的信息。因此,oracle 數據庫認為此時間點之前記錄的所有重做日志項對數據庫恢復來說都是不需要的。

實例恢復所需的時間指的是將數據文件由其最後一個檢查點返回到控制文件中記錄的最新SCN所需的時間。管理員通過設置MTTR(Mean Time To Recovery)目標 (以秒為單位)並通過重做日志組的大小可控制這個時間。檢查點位置與重做日志末尾之間的距離,永遠不能大於最小重做日志組的90%

· 在實例恢復期間,必須將檢查點位置與重做日志末尾之間的事務處理應用到數據文件。

· 通過控制檢查點位置與重做日志末尾之間的差異可優化實例恢復。圖中:有條紋的塊未寫入磁盤

\

oracle進行備份的需要了解的知識:

oracle常見的故障類型:http://blog.csdn.net/wanghui5767260/article/details/20696235

oracle四個重要的後台進程(DBWR / LGWR / ARCH / CKPT):http://blog.csdn.net/wanghui5767260/article/details/20715809

oracle物理備份和邏輯備份理解:http://blog.csdn.net/wanghui5767260/article/details/20627639

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved