oracle的resetlogs機(jī)制淺析
瀏覽量: 次 發(fā)布日期:2023-10-16 21:27:49
oracle的resetlogs機(jī)制淺析
oracle的resetlogs機(jī)制淺析
alter database open resetlogs 這個命令我想大家都很熟悉了,那有沒有想過這個resetlogs選項為什么要用?什么時候用?
它的原理機(jī)制是什么?他都起哪些作用?
我們都知道數(shù)據(jù)在啟動時候是要做一致性檢查的,oracle在open階段要做兩次檢查
1. 檢查數(shù)據(jù)文件頭的檢查點計數(shù)(checkpoint cnt)是否和控制文件的檢查點計數(shù)(checkpoint cnt)一致。目的是確認(rèn)數(shù)據(jù)文件
是否來自同一版本,而不是從備份中恢復(fù)的。如果這一步檢查通過,就進(jìn)行第二步檢查
2. 檢查數(shù)據(jù)文件頭的開始scn和控制文件中記錄該文件的結(jié)束scn是否一致。如果數(shù)據(jù)文件頭的開始scn和控制文件中該文件的結(jié)束scn
相等,那說明這個數(shù)據(jù)文件就不需要恢復(fù),否則就要恢復(fù)文件
如果以上兩步檢查都通過,那就可以正常打開數(shù)據(jù)庫,鎖定數(shù)據(jù)文件,同時將控制文件中每個數(shù)據(jù)文件的結(jié)束scn設(shè)置無窮大。
我們在某些條件下打開數(shù)據(jù),會提示讓用resetlogs選項open數(shù)據(jù)庫,為什么要用resetlogs呢?它是干嘛用的呢?問號一大堆了吧,
下面來具體分析下。
resetlogs的作用
防止陳舊的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(保證數(shù)據(jù)庫的一致性),這也就是為什么在用resetlogs打開數(shù)據(jù)庫,一定要立即對數(shù)據(jù)庫做個全備。
在控制文件,data file header,redo log header里存儲”resetlogs data“,當(dāng)open resetlogs被執(zhí)行時,可以通過這些內(nèi)容檢查一致性。
什么時候用resetlogs
1. 不完全恢復(fù)
2. 用備份的控制文件恢復(fù)
3. 新創(chuàng)建的控制文件來恢復(fù)
resetlogs的原理機(jī)制

resetlogs是如何來保證打開數(shù)據(jù)庫是一致的呢?
1)在open resetlogs時,oracle要對比檢查控制文件和數(shù)據(jù)字典file$,如果一個數(shù)據(jù)文件在file$中存在,但在控制文件中不存在,
那在控制文件中將創(chuàng)建一個這個文件條目(MISSINGnnn ‘nnn’是十進(jìn)制的file_id),同時這個文件被標(biāo)記為離線并需要恢復(fù)。如果
實際中這個文件存在的話,可以通過如下sql更改到正確的文件名。
sql> alter database rename file 'MISSINGnnn' to '
然后數(shù)據(jù)文件被恢復(fù),online。
2)如果一個數(shù)據(jù)文件存在控制文件中,而不在數(shù)據(jù)字典file$中,那么直接把控制文件中這個文件的記錄條目刪除(oracle認(rèn)為file$文
件是正確的,要以它為準(zhǔn))
3)當(dāng)用舊的備份控制文件恢復(fù)的時候,如果有數(shù)據(jù)文件不在控制文件中注冊(會提示控制文件比較舊的錯誤),那就不得不重建數(shù)據(jù)文件
,以使數(shù)據(jù)文件注冊到控制文件中,然后系統(tǒng)會自動利用redo/archivelog恢復(fù)這個數(shù)據(jù)文件。
在保證控制文件和file$文件內(nèi)容一致之后,oracle還有做如下檢查才能open resetlogs
上海數(shù)據(jù)恢復(fù)4)數(shù)據(jù)文件的版本要小于當(dāng)前數(shù)據(jù)庫的版本(counter)
5)offline的數(shù)據(jù)文件必須被online或者直接drop
6)所有的數(shù)據(jù)文件不能設(shè)置fuzzy bit,所有的數(shù)據(jù)文件要有相同的檢查點(checkpoint SCN)
到目前為止,open resetlogs的前提條件都已經(jīng)滿足,resetlogs究竟做了哪些工作呢?(重新使用redo log)
1)所有的online logfile 的信息重新被放置在控制文件中。并且還要為有效的thread挑選一個logfile文件作為current logfile
2)log header被更新為log seq#
3)所有的online的數(shù)據(jù)文件頭被新的checkpoint和新的‘resetlogs data’更新,offline的數(shù)據(jù)文件被標(biāo)記為需要媒體恢復(fù)。
鎮(zhèn)江數(shù)據(jù)恢復(fù)resetlogs data:當(dāng)前的scn和counter被稱作”resetlogs data“
如果oracle數(shù)據(jù)庫一致性檢查失敗的,那數(shù)據(jù)庫是不允許被open的,即 open resetlogs不成功。但也不是絕對不能open,可以通過隱含參數(shù)“
無錫數(shù)據(jù)恢復(fù)_allow_resetlogs_curruption”,繞過oracle的一致性檢查,但這樣會引起數(shù)據(jù)庫的不一致(文件可能有不同的scn或有fuzzy bit設(shè)置),如果open后,數(shù)據(jù)庫一定要rebuild (建議ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;或者imp/exp )
. oracle11g修復(fù),Oracle 11g TNS-12545錯誤排查與修復(fù)指南
. 六安移動硬盤數(shù)據(jù)恢復(fù),專業(yè)技術(shù),守護(hù)您的數(shù)據(jù)安全
. deep sequence,揭秘高效內(nèi)容生成的秘密武器
. 深圳數(shù)據(jù)恢復(fù)公司排名,揭秘排名前三的數(shù)據(jù)恢復(fù)公司”
. 怎樣恢復(fù)刪除的硬盤數(shù)據(jù),詳解硬盤刪除數(shù)據(jù)恢復(fù)全攻略
. 硬盤數(shù)據(jù)恢復(fù)圖書,從原理到實踐的技術(shù)解析
. 數(shù)據(jù) 恢復(fù),揭秘數(shù)據(jù)丟失背后的原因與高效解決方案
. 沈河區(qū)硬盤數(shù)據(jù)恢復(fù)中心,專業(yè)服務(wù),守護(hù)您的數(shù)據(jù)安全”
. 硬盤數(shù)據(jù)恢復(fù)從哪學(xué),從原理到實踐的技術(shù)解析
. emc存儲怎么用,高效數(shù)據(jù)管理的核心策略
. 全免費的數(shù)據(jù)恢復(fù)工具,助您輕松找回丟失文件
. 病毒 移動硬盤數(shù)據(jù)恢復(fù),病毒侵襲下的移動硬盤數(shù)據(jù)恢復(fù)攻略
. 移動硬盤數(shù)據(jù)恢復(fù)正常,從誤刪到恢復(fù)的全方位指導(dǎo)
. 硬盤內(nèi)部儲存器,存儲技術(shù)的核心與未來趨勢
. 硬盤數(shù)據(jù)恢復(fù)流程圖片,從診斷到恢復(fù)的全方位指南
. deepzengo,Deepzengo的突破與創(chuàng)新
. 惠普系統(tǒng)恢復(fù)工具,一鍵還原,輕松守護(hù)您的電腦健康
