Oracle数据库的在线重做日志中包含了数据库中所有数据的操作记录,我们可以利用重做日志做很多的操作,例如日志挖掘。
有时候,因为种种原因,我们的在线日志被人误删除或者意外损坏掉,我们应该如何进行恢复呢,其实很简单,看下面内容:
我们通过删除在线日志模拟日志被误删除的情况:
[oracle@test orcl]$ rm redo*
[oracle@test orcl]$ ls -l redo*
ls: 无法访问redo*: 没有那个文件或目录
[oracle@test orcl]$ sqlplus / as sysdba
SQL> startup mount
ORACLE 例程已经启动。
。。。
数据库装载完毕。
因为我们只是缺失在线重做日志,所以数据库是可以启动到mount状态的,mount状态的数据库只会打开控制文件,并不会去校验每个数据文件的状态,校验动作会在open阶段进行。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结尾
进程 ID: 4607
会话 ID: 125 序列号: 5
打开数据库的话,会报错,并且数据库会强行关闭
下面我们使用resetlogs的方法尝试打开数据库:
SQL> recover database until cancel;
完成介质恢复。
SQL> alter database