Oracle例項恢復機制

路途中的人2012發表於2016-02-02
整理自《OCP/OCA認證考試指南》

001 
    例項恢復不僅可以重新構成在崩潰時未被儲存至資料檔案的任何已提交事務,而且可以回滾已被寫至資料檔案的任何未提交事務。這種恢復是完全自動的,我們無法隨意停止例項恢復過程。如果例項恢復失敗,那麼唯一的可能是在例項失敗的同時還存在介質失敗,此時只有在使用介質恢復技術還原和恢復受損檔案後才能開啟資料庫。介質恢復的最後一個步驟是自動的例項恢復。
002 例項恢復機制
    大體上,例項恢復只不過是使用聯機日誌檔案的內容將資料庫緩衝區快取重新構建至崩潰之前的狀態。這個重構過程將重演從崩潰時未被寫至磁碟的資料塊的相關重做日誌中提取出的所有變更。完成上述操作之後,就能夠開啟資料庫。此時,資料庫仍然受到損壞,但是由於使用者看到的例項已被修復,因此允許使用者進行連線。例項恢復的這個階段稱為前滾,該階段將恢復所有變更(也就是針對已提交和未提交事務的資料塊變更與撤銷塊變更)。每條重做記錄都具有重新構造一個變更所需的最少資訊:資料塊的地址以及新值。在前滾期間,會讀取每條重做記錄,相應的資料塊從資料檔案載入資料庫緩衝區快取,並且應用相應的變更。隨後,資料塊會被寫回磁碟。
    向前回滾結束後,崩潰看上去似乎從未發生過。不過此時資料庫中還存在未提交的事務,這些事務必須被回滾,Oracle將在例項恢復的回滾階段自動完成未提交事務的回滾操作。然而,上述操作則發生在資料庫已被開啟且使用之後。如果使用者在連線時遇到某些需要回滾但是尚未回滾的資料,那麼不存在任何問題。由於前滾階段會填充保護未提交事務的撤銷段,因此伺服器能夠以正常的方式回滾變更,從而實現讀一致性。
    例項恢復是自動的、不可避免的,那麼怎樣才能呼叫例項恢復呢?答案是使用startup命令。首先,在資料庫過渡到載入模式時,SMON程式會讀取控制檔案。隨後,在資料庫過渡到open模式時,SMON程式會檢視所有資料檔案和聯機重做日誌檔案的檔案頭。此時,如果已經出現了例項失敗,由於檔案頭沒有全部同步,因此SMON程式會發現例項失敗,從而進入例項恢復程式,而資料庫只能在前滾階段結束後才能被真正地開啟。
    提示:如果執行了startup命令,那麼絕對不會丟失任何資料。在發生任何崩潰之後,都應當執行startup命令並檢視崩潰的程度。這個命令可以解決所有問題。

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

相關文章