Oracle ORA-00313 open failed for members of log group解决办法

非当前联机日志文件故障恢复

1.启动数据库时遇到ORA-00313,ORA-00312错误。

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

2.查看v$log视图。

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM


1 1 11 52428800 1 YES INACTIVE 489912 09-NOV-12

3 1 10 52428800 1 YES INACTIVE 488868 08-NOV-12

2 1 12 52428800 1 NO CURRENT 519028 11-NOV-12

3.用clear命令重建该日志文件

如果该日志文件已经归档则:

SQL> alter database clear logfile group 1;

Database altered.

如果该日志文件还没有归档则:

SQL> alter database clear unarchived logfile group 3;

Database altered.

4.打开数据库,重新备份数据库(建议clear,特别是clear unarchived后做一次全备份)

SQL> alter database open;

Database altered.

当前联机日志文件故障恢复

归档模式下,当前日志文件损坏有两种情况

一、数据库正常关闭,日志文件中没有解决的事务要实例恢复,当前日志组的损坏可直接用户

alter database clear unarchived logfile group n来重建

二、日志文件中有活动事物,数据库需要介质恢复,有两种补救方法

a、在归档模式下,有可用备份

b、无可用备份,通过强制性恢复,但可能会导致数据库不一致

a.在归档模式下有可用备份(不完全恢复)

1.1.启动数据库时报错,并用v$log查看

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM


1 1 16 52428800 1 NO CURRENT 520744 11-NOV-12

2 1 15 52428800 1 YES ACTIVE 520712 11-NOV-12

3 1 14 52428800 1 YES INACTIVE 520705 11-NOV-12

2.试用clear恢复

SQL> alter database clear logfile group 1;

SQL> alter database clear unarchived logfile group 1;

alter database clear unarchived logfile group 1

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of instance s1 (thread 1)

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

3.执行recover database until cancel先用户auto后用cancel,报错如下:

SQL> recover database until cancel;

ORA-00279: change 520744 generated at 11/11/2012 22:43:39 needed for thread 1

ORA-00289: suggestion : /archive1/1_16_798842981.dbf

ORA-00280: change 520744 for thread 1 is in sequence #16

Specify log: {=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: cannot open archived log ‘/archive1/1_16_798842981.dbf’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

ORA-00308: cannot open archived log ‘/archive1/1_16_798842981.dbf’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: ‘/home/oracle/oradata/s1/system01.dbf’

SQL> recover database until cancel;

ORA-00279: change 520744 generated at 11/11/2012 22:43:39 needed for thread 1

ORA-00289: suggestion : /archive1/1_16_798842981.dbf

ORA-00280: change 520744 for thread 1 is in sequence #16

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: ‘/home/oracle/oradata/s1/system01.dbf’

ORA-01112: media recovery not started

4.在rman下restore database;

RMAN> restore database;

5.在rman下recover database:报错如下:

RMAN> recover database;

Starting recover at 11-NOV-12

using channel ORA_DISK_1

starting media recovery

media recovery failed

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 11/11/2012 22:54:15

ORA-00283: recovery session canceled due to errors

RMAN-11003: failure during parse/execution of SQL statement: alter database recover if needed

start

ORA-00283: recovery session canceled due to errors

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

6.使用recover database until cancel;先auto后cancel恢复

SQL> recover database until cancel;

ORA-00279: change 520744 generated at 11/11/2012 22:43:39 needed for thread 1

ORA-00289: suggestion : /archive1/1_16_798842981.dbf

ORA-00280: change 520744 for thread 1 is in sequence #16

Specify log: {=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: cannot open archived log ‘/archive1/1_16_798842981.dbf’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

ORA-00308: cannot open archived log ‘/archive1/1_16_798842981.dbf’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

SQL> recover database until cancel;

ORA-00279: change 520744 generated at 11/11/2012 22:43:39 needed for thread 1

ORA-00289: suggestion : /archive1/1_16_798842981.dbf

ORA-00280: change 520744 for thread 1 is in sequence #16

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

Media recovery cancelled.

7,使用resetlogs打开数据库

SQL> alter database open resetlogs;

Database altered.

8.做数据库全备份

无可用备份,通过强制性恢复(不完全恢复)

1.启动数据库时报错,并用v$log查看

SQL> startup

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 67111156 bytes

Database Buffers 96468992 bytes

Redo Buffers 2973696 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM


1 1 4 52428800 1 NO CURRENT 521392 11-NOV-12

3 1 3 52428800 1 YES ACTIVE 521358 11-NOV-12

2 1 2 52428800 1 YES INACTIVE 521352 11-NOV-12

2.试用clear方法恢复

SQL> alter database clear logfile group 1;

alter database clear logfile group 1

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of instance s1 (thread 1)

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

SQL> alter database clear unarchived logfile group 1;

alter database clear unarchived logfile group 1

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of instance s1 (thread 1)

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

3.如果没有pfile文件创建pfile文件,把原来的spfile重命名掉(保证用户pfile启动)

SQL> create pfile from spfile;

File created.

4.关闭数据库

SQL> shutdown immediate;

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

5.修改pfile文件加上:

_allow_resetlogs_corruption=TRUE

6.启动数据库,并执行recover database until cancel;填入cancel

SQL> startup

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 67111156 bytes

Database Buffers 96468992 bytes

Redo Buffers 2973696 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: ‘/home/oracle/oradata/s1/redo01.log’

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

SQL> recover database until cancel;

ORA-00279: change 521368 generated at 11/11/2012 23:13:13 needed for thread 1

ORA-00289: suggestion : /archive1/1_3_799109734.dbf

ORA-00280: change 521368 for thread 1 is in sequence #3

Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: ‘/home/oracle/oradata/s1/system01.dbf’

ORA-01112: media recovery not started

8.用户resetlogs打开数据库

SQL> alter database open resetlogs;

Database altered.

9.数据库打开后马上full export

10.关闭数据库去掉_allow_resetlogs_corruption=TRUE;

11.重建库

12.full import并完成恢复

13.建议执行下 analyze table …validate structure cascade;

14.做数据库全备

你可能感兴趣的:(oracle)