OPEN RESETLOGS ,报ORA-00392 ORA-00312 in Oracle12c

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OPEN RESETLOGS ,报ORA-00392 ORA-00312 in Oracle12c相关的知识,希望对你有一定的参考价值。

【现象】

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-00392: log 4 of thread 1 is being cleared, operation not allowed

ORA-00312: online log 4 thread 1: '/mnt/data/PBF/db/proddata/redo04a.log'

ORA-00312: online log 4 thread 1: '/mnt/data/PBF/db/proddata/redo04b.log'

 

【官方解释】

CLEARING_CURRENT - Current log is being cleared of a closed thread. The log can stay in this status if there is some failure in the switch such as an I/O error writing the new log header.

CLEARING - Log is being re-created as an empty log after an ALTER DATABASE CLEAR

【重做日志文件的集中状态】

1.CURRENT - 当前正在被LGWR使用的group(同时是ACTIVE状态),其中记载数据库中正在进行的更改,删除将导致恢复时数据丢失。

2.ACTIVE - 活动的日志文件状态,日志完成切换或等待检查点事件时都可能出于这种状态,不是CURRENT的日志但是实例恢复时是需要的,此时的日志有可能已经完成了归档,即将变成INACTIVE状态,或者日志文件在等待Checkpoint事件没有完成归档。

3.INACTIVE - 非活动的日志状态,此时的日志实例恢复时不再需要,可能已经归档。

4.UNUSED - 尚未记录change的空白日志组,一般会出现在add logfile, resetlogs打开数据库或者使用了clear logfile命令后。

5.CLEARING - 表示该组重做日志文件正在被ALTER DATABASE CLEAR LOGFILE语句重建中(重建后状态会变成unused)。

6.CLEARING_CURRENT - 表示该组重做日志文件重建时出现错误,出现对日志文件的I/O故障就会出现这种状态。

 

 

 

【解决方法】

SQL> select group#,bytes/1024/1024||'M',status from v$log;

 

    GROUP# BYTES/1024/1024||'M'

---------- -----------------------------------------

STATUS

------------------------------------------------

         1 1000M

CLEARING

 

         2 1000M

CLEARING

 

         5 1000M

CLEARING

 

 

    GROUP# BYTES/1024/1024||'M'

---------- -----------------------------------------

STATUS

------------------------------------------------

         4 1000M

CLEARING_CURRENT

 

         3 1000M

CLEARING

 

 

SQL>

SQL>

SQL>

SQL>  alter database clear logfile group 1;

 alter database clear logfile group 2;

 alter database clear logfile group 3;

 alter database clear logfile group 4;

 alter database clear logfile group 5;

 

Database altered.

 

SQL>

Database altered.

 

SQL>

Database altered.

 

SQL>

Database altered.

 

SQL>

Database altered.

 

SQL> col group# form 99

SQL>  col bytes form 99999999999

SQL>  col status form a20

SQL>   select group#,bytes/1024/1024||'M',status from v$log;

 

GROUP# BYTES/1024/1024||'M'                      STATUS

------ ----------------------------------------- --------------------

     1 1000M                                     UNUSED

     2 1000M                                     UNUSED

     5 1000M                                     UNUSED

     4 1000M                                     CURRENT

     3 1000M                                     UNUSED


alter database open resetlogs;

OK!

以上是关于OPEN RESETLOGS ,报ORA-00392 ORA-00312 in Oracle12c的主要内容,如果未能解决你的问题,请参考以下文章

oracle 宕机后文件损坏resetlogs后处理

Oracle数据库恢复之resetlogs

隐含参数“_allow_resetlogs_corruption”的用法

ORA-01589错误 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

RMAN-20208: UNTIL CHANGE is before RESETLOGS change

ORACLE 使用"_ALLOW_RESETLOGS_CORRUPTION"进行崩溃恢复