oracle instance recovery例項恢復小記

wisdomone1發表於2013-03-25

oracle例項恢復

1,oracle例項恢復概念
  1,應用線上重作日誌到資料檔案中重構對於資料庫的變化(介質恢復應用歸檔日誌)
    2,從最新最近的checkpoint對應的rba開始應用redo (介質恢復應用歸檔日誌)
    3,一般資料庫關閉不正常,oracle會自動進行例項恢復(而介質恢復要人工進行)
   

 

2,何時發生例項恢復
  何時發生例項恢復與重作執行緒有關(redo thread:由例項產生的redo),
    如果資料庫以讀寫模式開啟,redo thread在控制檔案被標記為open;
    如果資料庫正常關閉,redo thread在控制檔案被標記為closed;
   
    但是如果在控制檔案標記為open,但並沒有一個添動的例項為redo thead提供thread enqueue;
    這個時間就要例項恢復(其實也就是說資料庫非正常關閉)
  
  資料庫何時進行自動化例項恢復:
       1,異常關庫的首次啟動,也叫crash recovery
       2,rac環境下,如某些例項異常中斷,存活例項自動進行例項恢復

 

3,在例項恢復中檢查點所起的重要作用
  1,例項恢復用檢查點確定從線上日誌檔案哪裡開始應用redo到資料檔案
    2,checkpoint確保低於checkpoint scn的提交scn已儲存到資料檔案
     也就是說自checkpoint scn開始應用redo到datafile

4,例項恢復如何實現的過程
     1,例項恢復第一個階段叫作cache recovery或者前滾rolling forward,
       即把線上重作包含的所有變更應用到資料檔案中
     2,因為線上重作也記錄了rollback data,所以前滾也會重構對應的undo segment
    
     3,前滾之後資料庫包含了提交與未提交的資料;資料庫必須要把未提交的回滾了;如何回滾呢,
      透過檢查點的位置;確保低於checkpoint scn的提交資料已全部寫入到磁碟了;
      oracle就應用undo block回滾未提交的資料到一致性狀態;
    
      至此,資料庫全部處於一致狀態下
    
     4,oracle會同時回滾多個事務(發生故障時的活動事務);
       新事務不會去等待smon程式回滾異常中斷的事務,它會自己去回滾它所需要的資料塊到一致性狀態


5,例項恢復的作用
    1,把資料庫從非一致性狀態迴歸到一致性下
    2,提交事務時,lgwr把log buffer中的內容及事務對應的scn寫入到redo logfile中,但是請注意:
     (注:參考提交commit的概念:http://space.itpub.net/9240380/viewspace-756756
     dbwr不會馬上把修改過的dirty buffer寫入到資料檔案中,因為它要考慮效率;因為這個原因,
     資料檔案會存在一些臨時性未提交的資料;而此時提交資訊未同步到資料檔案中
   
    所以說想下:非法關庫shutdown abort或庫異常中斷:必須要用例項恢復
    1,把線上重作日誌對資料檔案已提交資訊應用到資料檔案中;
    2,把庫down時未提交的變化也要由線上重作日誌應用到資料檔案,這樣確保undo segment的一致性;
     就是更新undo segment的事務表
    3,由上可知:例項恢復僅用於線上日誌檔案和當前操作的資料檔案

 

 

6,由smon進行例項恢復,不用人工操作   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-757025/,如需轉載,請註明出處,否則將追究法律責任。

相關文章