RESETLOGS
使用resetlogs選項(xiàng),會(huì)把當(dāng)前的日志序號(hào)(log sequence number)重設(shè)為1,并拋棄所有日志信息。在以下條件時(shí)需要使用resetlogs選項(xiàng):
在不完全恢復(fù)(介質(zhì)恢復(fù));
使用備份控制文件。
使用resetlogs打開數(shù)據(jù)庫(kù)后,務(wù)必要完整地進(jìn)行一次數(shù)據(jù)庫(kù)備
指定RESETLOGS會(huì)執(zhí)行下列操作:
歸檔當(dāng)前的在線重做日志文件(如果能訪問(wèn)到的話),然后清空內(nèi)容并將日志文件序號(hào)重置為1(如果在線重做日志文件不存在,則重建)。
重置控制文件中關(guān)于在線日志文件的元數(shù)據(jù)。
更新數(shù)據(jù)文件和在線重做日志文件中的RESETLOGS SCN和重置時(shí)間信息。
在10g之前的版本,數(shù)據(jù)庫(kù)執(zhí)行完OPEN RESETLOGS操作之后,都建議立刻進(jìn)行一次完全備份,因?yàn)橹鞍姹局性趫?zhí)行OPEN RESETLOGS操作時(shí)并不對(duì)當(dāng)前的Online Redologs文件進(jìn)行歸檔,這會(huì)導(dǎo)致歸檔文件不再連續(xù),因此之前創(chuàng)建的備份不再有效(恢復(fù)不到當(dāng)前狀態(tài)了,只能恢復(fù)到OPEN RESETLOGS操作之前)。10g及之后版本就不存在這個(gè)問(wèn)題了,OPEN RESETLOGS操作會(huì)首先將當(dāng)前在線重做日志文件歸檔(如果能夠訪問(wèn)到的話),并且OPEN RESETLOGS操作也會(huì)記入Online Redologs文件并正常歸檔,相當(dāng)于OPEN RESETLOGS只是一個(gè)命令操作,就像其他SQL命令一樣,這樣保證了歸檔日志文件的連續(xù)性,之前的備份依然有效,不過(guò)三思仍然建議執(zhí)行OPEN RESETLOGS操作之后馬上進(jìn)行一次全庫(kù)備份。
?
正常運(yùn)行中Oracle內(nèi)部有一個(gè)生命周期,這種生命周期在Oracle中也有一個(gè)專業(yè)詞匯,叫incarnation。不完全恢復(fù),顧名思義就是只恢復(fù)部分?jǐn)?shù)據(jù),由于已經(jīng)無(wú)法將數(shù)據(jù)庫(kù)恢復(fù)到當(dāng)前狀態(tài)(崩潰前的狀態(tài)),Oracle數(shù)據(jù)庫(kù)也不知道當(dāng)前處于什么狀態(tài)了,事務(wù)上也許一致,但是不是最新,Oracle自己無(wú)從判斷,后續(xù)也許仍有重做日志文件,但卻無(wú)法應(yīng)用(或DBA不允許應(yīng)用)。如果沒有Incarnation的概念,正常Open數(shù)據(jù)庫(kù)的話又會(huì)產(chǎn)生重做日志文件,并且這些日志文件的序號(hào)與之前相同(但內(nèi)容可能不同),這樣不管是備份還是恢復(fù)都會(huì)造成混淆,因此必須在執(zhí)行不完全恢復(fù)后,標(biāo)示之前生命周期結(jié)束,方法就是以RESETLOGS方式打開數(shù)據(jù)庫(kù)。以RESETLOGS方式打開后,Oracle數(shù)據(jù)庫(kù)又開始了一個(gè)新的生命周期,即重置Incarnation,日志文件序號(hào)也被重新初始化到1
?
Oracle數(shù)據(jù)庫(kù)從創(chuàng)建到遇到RESETLOGS操作為一個(gè)生命周期,這個(gè)生命周期內(nèi)數(shù)據(jù)庫(kù)的邏輯屬性,如SCN、日志文件序列號(hào)等具有相同的特征。當(dāng)通過(guò)OPEN RESETLOGS方式打開數(shù)據(jù)庫(kù)后,原生命周期即宣告結(jié)束,原生命周期中生成的重做日志文件也被廢棄,日志文件序號(hào)自動(dòng)重置為1。
總結(jié)
- 上一篇: oracle的sga
- 下一篇: Spark入门-了解Spark核心概念