alter database open resetlogs 的意義

來源:互聯網
上載者:User

標籤:

轉自:http://blog.sina.com.cn/s/blog_63216bda0100zblr.html

Oracle文檔中提到,一旦用備份的控制檔案進行資料庫恢複,就需要使用resetlogs的方法開啟資料庫,但是resetlogs通常意味著不完全恢複,而且更重要的是一旦用resetlogs方法開啟資料庫,日誌的序號用重新從1開始。其實如果只是控制檔案損壞,記錄檔都完整的話,資料庫是可以完全恢複的,而且不必非得用resetlogs開啟。接下來,我們就對不完全恢複做出總結,9-10所示,然後再通過一些實驗深入理解。

 
圖9-10  控制檔案的重建方法及後續恢複操作

9.6.1  使用alter database open resetlogs的場合

使用resetlogs選項,會把當前的日誌序號(log sequence number)重設為1,並拋棄所有日誌資訊。在以下條件時需要使用resetlogs選項:

在不完全恢複(介質恢複);

使用備份控制檔案。

使用resetlogs開啟資料庫後,務必要完整地進行一次Database Backup。

指定RESETLOGS會執行下列操作:

歸檔當前的線上重做記錄檔(如果能訪問到的話),然後清空內容並將記錄檔序號重設為1(如果線上重做記錄檔不存在,則重建)。

重設控制檔案中關於線上記錄檔的中繼資料。

更新資料檔案和線上重做記錄檔中的RESETLOGS SCN和重設時間資訊。

顧名思義,reset將重設日誌順序號,那麼以前資料庫的備份將不再可用

萬事萬物有果必有因,執行了不完全恢複操作,或者使用了備份的控制檔案進行恢複,或者執行Flashback Database操作之後,在開啟資料庫時必須指定RESETLOGS選項,這是由Oracle自身特性決定的。

正常運行中Oracle內部有一個生命週期,這種生命週期在Oracle中也有一個專業詞彙,叫incarnation。不完全恢複,顧名思義就是只恢複部分資料,由於已經無法將資料庫恢複到目前狀態(崩潰前的狀態),Oracle資料庫也不知道當前處於什麼狀態了,事務上也許一致,但是不是最新,Oracle自己無從判斷,後續也許仍有重做記錄檔,但卻無法應用(或DBA不允許應用)。如果沒有Incarnation的概念,正常Open資料庫的話又會產生重做記錄檔,並且這些記錄檔的序號與之前相同(但內容可能不同),這樣不管是備份還是恢複都會造成混淆,因此必須在執行不完全恢複後,標示之前生命週期結束,方法就是以RESETLOGS方式開啟資料庫。以RESETLOGS方式開啟後,Oracle資料庫又開始了一個新的生命週期,即重設Incarnation,記錄檔序號也被重新初始化到1。

圖7-4顯示了一次OPEN RESETLOGS的操作。如果我們畫一個時間軸的話,不完全恢複就是將資料庫恢複到從備份時間到目前時間之間的某一個點。

資料庫在記錄檔序號為1000時建立了備份,在記錄檔序號為4000時崩潰,由於記錄檔序號為2501,因此你只能將資料庫恢複到記錄檔序號為2500時的狀態,然後以RESETLOGS方式開啟,Oracle資料庫又開始了一個新的Incarnation,記錄檔序號被重新初始化到1,然後隨著資料庫的運行不斷增加並達到4000,但這些記錄檔與之前的記錄檔並不關聯(雖然檔案序號相同)。

 
 

指定RESETLOGS會執行下列操作:

歸檔當前的線上重做記錄檔(如果能訪問到的話),然後清空內容並將記錄檔序號重設為1(如果線上重做記錄檔不存在,則重建)。

重設控制檔案中關於線上記錄檔的中繼資料。

更新資料檔案和線上重做記錄檔中的RESETLOGS SCN和重設時間資訊。

在10g之前的版本,資料庫執行完OPEN RESETLOGS操作之後,都建議立刻進行一次完全備份,因為之前版本中在執行OPEN RESETLOGS操作時並不對當前的Online Redologs檔案進行歸檔,這會導致歸檔檔案不再連續,因此之前建立的備份不再有效(恢複不到目前狀態了,只能恢複到OPEN RESETLOGS操作之前)。10g及之後版本就不存在這個問題了,OPEN RESETLOGS操作會首先將當前線上重做記錄檔歸檔(如果能夠訪問到的話),並且OPEN RESETLOGS操作也會記入Online Redologs檔案並正常歸檔,相當於OPEN RESETLOGS只是一個命令操作,就像其他SQL命令一樣,這樣保證了歸檔記錄檔的連續性,之前的備份依然有效,不過三思仍然建議執行OPEN RESETLOGS操作之後馬上進行一次全庫備份。

提示

什麼是Incarnation?

Oracle資料庫的Incarnation在有些資料中譯作對應物,在我看來可以將其理解成生命週期。Oracle資料庫從建立到遇到RESETLOGS操作為一個生命週期,這個生命週期內資料庫的邏輯屬性,如SCN、記錄檔序號等具有相同的特徵。當通過OPEN RESETLOGS方式開啟資料庫後,原生命週期即宣告結束,原生命週期中產生的重做記錄檔也被廢棄,記錄檔序號自動重設為1。

(轉)alter database open resetlogs 的意義

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.