|
最初由 text1978 发布
[B]
前滚这个词初次接触是在学校的时候考db2的时候看到的。这个词很容易望字生意。我说的这个前滚应该是“广义的”前滚,应用ARCHIVE向前恢复像前滚嘛
另外biti_rainy开始给的Tip的却是这个问题的答案。不过没有说清楚。
recover database using backup controlfile until cancel要执行两次。第一次是auto,他会在找不到归档的时候停下来。紧接着再发布一次recover database using backup controlfile until cancel;直接cancle掉。然后resetlogs重置在线日志打开数据库(因为,在线日志丢失了,冷备的在线日志不可用。)就可以恢复到最后一次归档了.
我不清楚的是recover database using backup controlfile until cancel,auto
到最后oracle为什么会建议需要一个不存在的归档呢?比如我有01,02,03。到最后它说需要04,然后报错04找不到。recover database using backup controlfile until cancel,auto就停下来了。 [/B]
乱了,你很多概念全乱了,呵呵
1,Oracle的前滚是实例失效时,数据库重新启动过程中应用联机日志做前滚。
2,所谓“两次”,第一次停下来是因为自动恢复过程中找不到那个归档,为什么没有呢?是因为那些需要恢复的东西(根据scn确定)都在联机日志中,还没有归档到归档日志呢。第二次为什么仅仅需要cancel就可以了呢?是因为使用手工提交归档的情况下,除了联机日志以外所有的归档都已经应用了,那你还提交什么呢?所以cancel。这两次实际上都是不完全恢复的命令,但两个cancel有着不同的作用。
3,你那个04是当前日志的内容
顺便说一句,checkpoint,联机日志和归档这几个概念你似乎也混淆了。
举个例子,只要备份可靠,并且当前的redo没有丢,那么最次都可以恢复最后一次checkpoint之前的所有数据,呵呵。
完全恢复是没丢失数据的恢复,那么怎么能不丢失呢?
应该有可靠的数据文件的备份,还要有联机日志文件,控制文件。这也就是为什么一定要复用连接日志文件和控制文件的原因了。
再多说一句,只要是用了until cancel, until time, until change,都不能做完全恢复了。
其实,恢复数据库,仅仅要求数据库又能用了是远远不够的,要考虑如何尽快恢复,如何最少的丢失数据,要实现这些要求,我觉得还是照着规矩来,该用什么控制文件就用什么控制文件,该noresetlog,就一定不要resetlog。 |
|