Oracle联机重做日志丢失的恢复
Oracle联机重做日志丢失的恢复
(1)非活动的联机重做日志文件组成员的丢失
如果数据库尚未关闭,并且丢失的是活动重做日志组或当前重做日志组的成员,则立刻使用alter database checkpoint进行检查点检查,此命令将强迫数据库以紧迫方式将所有数据库缓冲区缓存的脏数据块写入到数据文件中。一旦完成检查点检查操作,则应该执行alter database add logfile 命令重建重做日志组成员。
alter database add logfile '' reuse to group 2;
(2)非活动的联机重做日志文件组丢失
a)在数据库启动期间丢失非活动的联机重做日志文件组
在启动数据库时,若不能打开非活动状态的联机重做日志文件组,将会报错终止启动。
首先确定出现问题的日志组中是否有日志成员存在,如果有,就按照前面的方法执行恢复。如果所有成员都丢失了,就先删除整个日志组,再创建新的日志组如下:
alter database drop logfile group 2;
alter database add logfile group 2 '' size 50M;
b)在数据库运行期间丢失非活动的联机重做日志文件组
alter system checkpoint;
alter database clear logfile group 1;或者alter database clear unarchived logfile '';
(3)丢失活动但非当前状态的联机重做日志文件组
这种情况下需要使用alter database clear unarchived logfile ''命令。
(4)丢失当前联机重做日志文件组
一般而言,这种情况下Oracle会自动关闭,如果幸运的话没有关闭,应该马上执行alter system checkpoint,然后关闭数据库,依次执行
startup mount;
alter database clear unarchived logfile;
alter database open;
幸运的话会成功打开,如果不能打开,那就需要执行数据库不完全恢复。
推荐阅读: