解决ORA-00338,ORA-00312

--测试库异常无法启动
SQL> startup;
ORACLE instance started.

Total System Global Area 4977278976 bytes
Fixed Size 2261768 bytes
Variable Size 989859064 bytes
Database Buffers 3976200192 bytes
Redo Buffers 8957952 bytes
Database mounted.
ORA-00338: log 2 of thread 1 is more recent than control file
ORA-00312: online log 2 thread 1: '/u02/oradata/GBK/redo02.log'

--查询日志组
SQL> select group#,thread#,members,status from v$log;

GROUP# THREAD# MEMBERS STATUS
---------- ---------- ---------- ------------------------------------------------
1 1 1 INACTIVE
3 1 1 UNUSED
2 1 1 CURRENT
--清除日志组,切换redo日志
SQL> alter database clear logfile group 1;

Database altered.

SQL> alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance GBK (thread 1)
ORA-00312: online log 2 thread 1: '/u02/oradata/GBK/redo02.log'


SQL> alter database clear logfile group 3;

Database altered.

SQL> alter system switch logfile;
alter system switch logfile
*
ERROR at line 1:
ORA-01109: database not open


SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u02/oradata/GBK/system01.dbf'

---删除日志组也不成功
SQL> alter database drop logfile group 2;
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01623: log 2 is current log for instance GBK (thread 1) - cannot drop
ORA-00312: online log 2 thread 1: '/u02/oradata/GBK/redo02.log'

最终解决办法:使用不完全恢复

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;

System altered.

SQL> startup force
ORACLE instance started.

Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 88082000 bytes
Database Buffers 192937984 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;

Database altered.

SQL> alter system set "_allow_resetlogs_corruption"=false scope=spfile;

System altered.

posted @ 2020-12-16 16:35  大漠老兵  阅读(1958)  评论(0编辑  收藏  举报