解决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.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步