刚刚才学Oracle的时候做的实验,后来看看觉得意义不大,但如果你是初学,看不懂复杂的实验,又纠结这个问题,也可以看看:
很简单的原因:即使不处于归档模式,自备份以来到现在的所有操作在联机日志文件中能找到的话,就能recover。
但受到联机日志文件大小的限制,几乎不能依赖它来进行数据恢复。
归档模式下试验流程:
1. 创建一个表空间test1 使用test01.dbf;
2. 给test01.dbf创建一个副本(备份);
3. 做一些操作使test01.dbf文件中的数据发生变化;
4. 切换联机日志文件,让它归档;
5. 关闭数据库,删除test01.dbf,启动数据库找不到文件;
6. 把最初的副本复制过去,或者让alter database renamed file;
7. 然后开启提示要恢复。最后恢复成功,步骤3的操作也都在
非归档模式下的流程:
与归档模式基本一致,区别:
1. 步骤4对于非归档模式意义不大;
2. test1 之类都都变成了2;
3. 步骤7恢复很快捷,不过恢复方法是有区别的。
总结:
非归档模式和归档模式都能进行数据文件的恢复,共同点是都必须有依靠一个备份文件才能恢复备份之后的操作。区别在于:
1. 归档模式依靠归档日志文件,使用arc放入data buffer cache再写入以此恢复
2. 非归档模式依靠联机日志文件,放入data buffer cache再写入以此恢复,但如果你的联机日志文件被覆盖,你的备份就无效了
我们知道,联机日志文件本身不大,是通过arc把它里面日志放到大得多的归档日志文件进行归档,以此保存更长久的日志。
步骤1: 创建一个表空间test1 使用test01.dbf;
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 86
当前日志序列 88
SQL> alter database close;//到mount阶段
数据库已更改。
SQL> alter database archivelog;