oracle异机恢复 open resetlogs 报:ORA-00392

参考文档:ALTER DATABASE OPEN RESETLOGS fails with ORA-00392 (Doc ID 1352133.1)

打开一个克隆数据库报以下错误:

SQL> alter database open resetlogs; 
alter database open resetlogs 

ERROR at line 1: 
ORA-00392: log 1 of thread 1 is being cleared, operation not allowed 
ORA-00312: online log 1 thread 1: '/data/oradata/clone/group_1.log' 
ORA-00312: online log 1 thread 1: '/data/oradata/clone/group_12.log'

接着查看redo日志的状态为invaild的( CLEARING/CLEARING_CURRENT):

 select GROUP#,THREAD#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS,FIRST_CHANGE# from v$log order by first_change# ;

       GROUP#     THREAD#   SEQUENCE#        MEMBERS   ARCHIVED STATUS                 FIRST_CHANGE#
------------- ----------- ----------- -------------- ---------- ---------------- -------------------
            2           1           0              2 YES        CLEARING              12142264718335
            3           1           0              2 YES        CLEARING              12142306351551
            1           1           0              2 NO         CLEARING_CURRENT      12142306351562

解决办法:

1,试着clear当前group能否执行:

alter database clear unarchived logfile group 1 ;

alter database clear unarchived logfile group 2 ;

alter database clear unarchived logfile group 3 ;

alter database open resetlogs;

或者

2,重新生成控制文件,修改日志文件目录指向:


1)生成控制文件的trace备份:

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/tmp/control.sql' resetlogs ;

2)修改控制文件 /tmp/control.sql 确保redo相关目录存在且oracle有写权限;

3)创建控制文件

SQL> STARTUP FORCE NOMOUNT
SQL> @/tmp/control.sql

controlfile created

4)根据当前控制文件recover database:

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL ;

Type <CANCEL> when prompted

5) 打开数据库使用 RESETLOGS:

SQL> ALTER DATABASE OPEN RESETLOGS ;
原文地址:https://www.cnblogs.com/ocp-100/p/10671876.html