e#,checkpoint_change#,resetlogs_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE# RESETLOGS_CHANGE#
---------- ------------------ -----------------
1 556048 547304
2 556048 547304
3 556048 547304
4 556048 547304
5 556048 547304
6 556048 547304
7 556048 547304
8 556048 547304
8 rows selected.
SQL>
当我们再次手工执行检查点以后,就会触发DBWR进程把DB BUFFER CACHE中的脏数据写到磁盘文件,此时8号数据文件和数据文件头中的checkpoint SCN信息,已经与其他数据文件都一致了。至此,整个恢复过程顺利结束。
总结
本例是通过Oracle BBED工具,在非归档模式下对OFFLINE数据文件进行恢复的过程。注意,由于current日志非常重要,它仅保留在内存中(SGA的db buffer cache),所以一般重要的
系统,都是需要开启归档的,这样可以保证current日志被覆盖后依然可以对数据文件进行前滚(recover)。当我们既没有current日志,又没有归档日志,那就只能通过特殊手段来进行恢复了。如果OFFLINE的数据文件中有比较重要的数据内容,就能够使其重新ONLINE并取出数据了。当然,BBED还有更多比较复杂的运用,如当某个数据文件块出现损坏,又没有可以用的备份时,通过BBED,可以对数据文件块直接dump并替换内容等,这里就暂且不讨论了,大家可以自己参考手册进行研究。总得来说,BBED还是比较inernal的东东,想要掌握周全,实属不易。
|