oracle的resetlogs機制

賀子_DBA時代發表於2014-12-09
oracle的resetlogs機制

alter database open resetlogs 這個命令我想大家都很熟悉了,那有沒有想過這個resetlogs選項為什麼要用?什麼時候用?它的原理機制是什麼?他都起哪些作用?

我們都知道資料在啟動時候是要做一致性檢查的,oracle在open階段要做兩次檢查

1. 檢查資料檔案頭的檢查點計數(checkpoint cnt)是否和控制檔案的檢查點計數(checkpoint cnt)一致。目的是確認資料檔案是否來自同一版本,而不是從備份中恢復的。如果這一步檢查透過,就進行第二步檢查。

2. 檢查資料檔案頭的開始scn和控制檔案中記錄該檔案的結束scn是否一致。如果資料檔案頭的開始scn和控制檔案中該檔案的結束scn相等,那說明這個資料檔案就不需要恢復,否則就要恢復檔案。

如果以上兩步檢查都透過,那就可以正常開啟資料庫,鎖定資料檔案,同時將控制檔案中每個資料檔案的結束scn設定無窮大。
 我們在某些條件下開啟資料,會提示讓用resetlogs選項open資料庫,為什麼要用resetlogs呢?它是幹嘛用的呢?問號一大堆了吧,

下面來具體分析下。

 resetlogs的作用

1、防止陳舊的資料進入資料庫(保證資料庫的一致性),這也就是為什麼在用resetlogs開啟資料庫,一定要立即對資料庫做個全備。

2、在控制檔案,data file header,redo log header裡儲存”resetlogs data“,當open resetlogs被執行時,可以透過這些內容檢查一致性。

什麼時候用resetlogs

1. 不完全恢復

2. 用備份的控制檔案恢復

3. 新建立的控制檔案來恢復

resetlogs的原理機制

resetlogs是如何來保證開啟資料庫是一致的呢?

1)在open resetlogs時,oracle要對比檢查控制檔案和資料字典file$,如果一個資料檔案在file$中存在,但在控制檔案中不存在,那在控制檔案中將建立一個這個檔案條目(MISSINGnnn ‘nnn’是十進位制的file_id),同時這個檔案被標記為離線並需要恢復。如果實際中這個檔案存在的話,可以透過如下sql更改到正確的檔名。

sql> alter database rename file 'MISSINGnnn' to '';

 然後資料檔案被恢復,online。

2)如果一個資料檔案存在控制檔案中,而不在資料字典file$中,那麼直接把控制檔案中這個檔案的記錄條目刪除(oracle認為file$檔案是正確的,要以它為準)。

3)當用舊的備份控制檔案恢復的時候,如果有資料檔案不在控制檔案中註冊(會提示控制檔案比較舊的錯誤),那就不得不重建資料檔案,以使資料檔案註冊到控制檔案中,然後系統會自動利用redo/archivelog恢復這個資料檔案。

在保證控制檔案和file$檔案內容一致之後,oracle還有做如下檢查才能open resetlogs

4)資料檔案的版本要小於當前資料庫的版本(counter)。

5)offline的資料檔案必須被online或者直接drop。

6)所有的資料檔案不能設定fuzzy bit,所有的資料檔案要有相同的檢查點(checkpoint SCN)。

到目前為止,open resetlogs的前提條件都已經滿足,resetlogs究竟做了哪些工作呢?(重新使用redo log

1)所有的online logfile 的資訊重新被放置在控制檔案中。並且還要為有效的thread挑選一個logfile檔案作為current logfile

2)log header被更新為log seq#

3)所有的online的資料檔案頭被新的checkpoint和新的‘resetlogs data’更新,offline的資料檔案被標記為需要媒體恢復。

resetlogs data:當前的scn和counter被稱作”resetlogs data“

如果oracle資料庫一致性檢查失敗的,那資料庫是不允許被open的,即 open resetlogs不成功。但也不是絕對不能open,可以透過隱含引數“_allow_resetlogs_curruption”,繞過oracle的一致性檢查,但這樣會引起資料庫的不一致(檔案可能有不同的scn或有fuzzy bit設定),如果open後,資料庫一定要rebuild (建議ANALYZE TABLE ...VALIDATE  STRUCTURE  CASCADE;或者imp/exp )

 -------end------

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

相關文章