對於Database recovery的理解

oracle_ace發表於2007-12-17

如果我們指定以alter database open resetlogs開啟資料庫,那麼我們當前online line日誌的sequence number會歸為1,並且之前的日誌資訊都會被拋棄。

以下條件需要使用resetlog
1)在不完全恢復(介質恢復)
2)使用備份控制檔案(backup的控制檔案一般從日誌檔案和資料庫的資訊以及SCN的資訊,相比目前的狀態都已經過期了)

使用resetlogs開啟資料庫(log sequence number變為1)後無必完整地備份一次資料庫。而且這一操作會拋棄所有在上一次恢復沒有用到的日誌資訊,確保不被重新用與恢復。

在重建控制檔案的時候需要注意:
create controlfile resetlogs/noresetlogs
1).用noresetlogs重建控制檔案時,控制檔案中 datafile checkpoint scn來自online logs中的Current log頭
2).用resetlogs重建控制檔案時,控制檔案中datafile Checkpoint SCN來自各資料檔案頭(Start SCN)。

如果system checkpoint scn,datafile checkpoint scn,start scn 不全相等,需要介質恢復.
如果stopscn null需要例項恢復


小小的總結一下各種情況:

1、系統正常關閉:
會使得:system checkpoint scn = datafile checkpoint scn = start scn = stop scn
1)system checkpoint scn = datafile checkpoint scn = start scn,不需要介質恢復
2)stop scn is not null = start SCN,不需要例項恢復

2、系統異常關閉:
會使得:system checkpoint scn = datafile checkpoint scn = start scn = stop scn
1)system checkpoint scn = datafile checkpoint scn = start scn,不需要介質恢復
2)stop scn is null,需要例項恢復

3、舊資料檔案
會使得:system checkpoint scn = datafile checkpoint scn > start scn,stop scn is null/ is not null
1)system checkpoint scn = datafile checkpoint scn > start scn
需要介質恢復成system checkpoint scn = datafile checkpoint scn = start scn
2)stop scn is null,需要例項恢復,is not null 不需要例項恢復

4、備份控制檔案
會使得:system checkpoint scn = datafile checkpoint scn <= start scn(當資料檔案為舊且和舊控制檔案為同一版本的時候相等,如果資料檔案是當前的資料檔案則是小於),stop scn notnull/null
1)system checkpoint scn = datafile checkpoint scn <= start scn,需要使用using backup controlfile介質恢復成system scn = datafile scn = start scn = current log scn(當前日誌最大SCN)
2)為保證上一次恢復沒有用到log日誌不被使用,必須在恢復完成後用resetlogs開啟資料庫

5、以noresetlogs方式重建控制檔案
在以這種方式重建控制檔案時,控制檔案中的datafile checkpoint scn來自於Online logs中的Current log頭,因此
current log scn = system checkpoint scn = datafile scn >= start scn(如果資料檔案為備份而來則會大於start SCN,如果是當前的則為相等於start SCN), stop scn not null/null
1)current log scn = system checkpoint scn = datafile checkpoint scn >= start scn,因此需要介質恢復成system checkpoint scn = datafile scn = start scn = redolog scn(當前日誌最大SCN)
2)stopscn is not null 不需要例項恢復

6、以resetlogs方式重建控制檔案
控制檔案中datafile checkpoint scn 來自各資料檔案頭(start scn),而且system checkpoint scn會歸為0
system checkpoint scn <  datafile checkpoint scn = start scn,stop scn not null/null

1)system checkpoint scn < datafile checkpoint scn = start scn,需要使用using backup controlfile介質恢復成system checkpoint scn = datafile checkpoint scn = start scn(當前日誌最大SCN),stop scn not null
2)stopscn is not null 不需要例項恢復,而且因為SCN已經為redolog scn,log已經不能使用,必須用resetlogs方式開啟資料庫

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

相關文章