對數據庫恢復的理解
導讀:如果我們指定以alter database openresetlogs打開數據庫,那么我們當前onlineline日志的sequencenumber會歸為1,并且之前的日志信息都會被拋棄。這時就要用到數據庫的恢復技術。
以下條件需要使用resetlog
1)在不完全恢復(介質恢復)
2)使用備份控制文件(backup的控制文件一般從日志文件和數據庫的信息以及SCN的信息,相比目前的狀態都已經過期了)
使用resetlogs打開數據庫(logsequencenumber變為1)后無必完整地備份一次數據庫。而且這一操作會拋棄所有在上一次恢復沒有用到的日志信息,確保不被重新用與恢復。
在重建控制文件的時候需要注意:
create controlfile resetlogs/noresetlogs
1).用noresetlogs重建控制文件時,控制文件中 datafile checkpointscn來自onlinelogs中的Current log頭
2).用resetlogs重建控制文件時,控制文件中datafile CheckpointSCN來自各數據文件頭(StartSCN)。
如果system checkpoint scn,datafile checkpoint scn,startscn不全相等,需要介質恢復.
如果stopscn null需要實例恢復
小小的總結一下各種情況:
1、系統正常關閉:
會使得:system checkpoint scn = datafile checkpoint scn = start scn=stop scn
1)system checkpoint scn = datafile checkpoint scn =startscn,不需要介質恢復
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 =startscn,不需要介質恢復
2)stop scn is null,需要實例恢復
【編輯推薦】