[Oracle] Inactive联机日志文件丢失如何恢复?

联机日志文件Inacitve状态表示这个日志包含的数据修改已经同步到数据文件中,实例恢复时已不需要它,所以它的丢失不会造成任何的数据丢失,但是会造成数据库无法打开,解决方法是把丢失的inactive删除掉,重新添加新的联机日志。

1)模拟灾难
首先查看log的状态:
SQL> select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1          1 INACTIVE
         2          2 INACTIVE
         3          3 CURRENT
Group#1的状态为inactive,我们找出它所对应的磁盘文件:
SQL> select group#,member from v$logfile where group#=1;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 I:\INTEL_DATA\O04DMS0\REDO01.O04DMS0
关闭数据库:
SQL> shutdown immediate;
把REDO01.O04DMS0文件在操作系统级别删除。

2)根据错误信息定位问题
启动数据库会出现以下错误:
SQL> startup
ORACLE instance started.

Total System Global Area  281018368 bytes
Fixed Size                  1296292 bytes
Variable Size             251660380 bytes
Database Buffers           25165824 bytes
Redo Buffers                2895872 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312:online log 1 thread 1:'I:\INTEL_DATA\O04DMS0\REDO01.O04DMS0'

从以上错误信息中,可以看到联机日志文件丢失导致无法打开数据库,查一下丢失日志的状态:

SQL> select group#,sequence#,status from v$log where group#=1;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1          1 INACTIVE

幸运地是,丢失的联机日志状态为inactive,那么我们不需要做什么,只要删除它即可,但是最好在删除它之前先增加一组联机日志:

SQL> alter database add logfile group 4 ('I:\INTEL_DATA\O04DMS0\REDO04.O04DMS0') size 100M;

Database altered.

然后把丢失的联机日志删除:

SQL> alter database drop logfile group 1;

Database altered.

SQL> select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         2          2 INACTIVE
         4          0 UNUSED
         3          3 CURRENT

现在可以打开数据库:

SQL> alter database open;

Database altered.

新增加的Group#4的状态时unused,做几次日志切换使其处于current状态。

===========================

还有一种解决方法更简单,不用删除、增加,直接清除Group1即可,语句如下:

SQL> alter database clear logfile group 1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值