首页 > 数据库 > Oracle > using backup control file
using backup control file 一发出,不管是不是当前的控制文件,oracle一开始就认为你是要做不完全恢复,即使你apply了最新的log。 所以要求你resetlogs
实际上,即使你apply了最新的log,数据库本身很难判断的,假如是曾经备份过的 联机日志,它又如何识别? 当然你可以要求oracle的开发者按照你的意图去实现这个,如果可能的话
实际上,假如你有旧的控制文件又不想resetlogs,那很简单,使用旧的控制文件mount然后 backup to trace ,然后手工创建控制文件,使用 reuse database ... noresetlogs .这样就可以 recover database 自动恢复并open database 而不用 resetlogs 了
至于恢复的时间,假如你是cancel,那你可以从 v$archived_log 里面检查各归档日志的 next_time 就知道了
假如是until time 就没什么好说的了
假如是scn ,那当你恢复完毕没有打开数据库的时候,查询 v$datafile.checkpoint_time 就知道恢复到什么时间了。 实际上,不管做什么恢复都可以检查这个 checkpoint_time 而看看恢复到了什么时间
也许你所要知道的是,你本身怎么知道你要恢复到什么时间而不是说你已经恢复到什么时间,假如做不完全恢复,比如某个时间无意删除了一些记录,但又不确切地知道恢复到什么时间,这个需求才是经常出现的,不知道你实际是不是要表达这个含义 。那这个时候比较困难,精确的就是使用logmnr 来分析日志文件找到 scn 或者 time .否则就是大概根据判断找个恢复截止时间点
备份的控制文件里面有一个 截止 SCN 而已
正常关闭的数据库的控制文件里面也有一个截止scn
正常打开的数据库的控制文件截止scn是无穷大(crash 也是)
重新创建控制文件的截止SCN也是无穷大,也就是apply日志文件直到scn达到截止scn,于是这就导致你应用完了所有归档的日志还没有达到这无穷大,open的时候数据库认为是非正常关闭进行崩溃恢复,自动应用了所有联机日志
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7591490/viewspace-1019552/ ,如需转载,请注明出处,否则将追究法律责任。