Oracle 报错:ORA-00313、ORA-00312、ORA-27047 解决方法
启动数据库
SQL> startup
ORACLE instance started.
Total System Global Area 1252663296 bytes
Fixed Size 2252824 bytes
Variable Size 805310440 bytes
Database Buffers 436207616 bytes
Redo Buffers 8892416 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 40669
Session ID: 125 Serial number: 5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
查看alert日志
[oracle@vastdata1 ~]$ vi /u01/app/oracle/diag/rdbms/prod/PROD/trace/alert_PROD.log
......
Errors in file /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_lgwr_40796.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/PROD/redo02.log'
ORA-27047: unable to read the header block of file
Linux-x86_64 Error: 25: Inappropriate ioctl for device
......
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
解决方法如下:
SQL> conn / as sysdba
Connected to an idle instance.
- 1
- 2
- 1
- 2
SQL> startup mount
ORACLE instance started.
Total System Global Area 1252663296 bytes
Fixed Size 2252824 bytes
Variable Size 805310440 bytes
Database Buffers 436207616 bytes
Redo Buffers 8892416 bytes
Database mounted.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
清理损坏的日志
SQL> alter database clear logfile group 2;
Database altered.
- 1
- 2
- 3
- 1
- 2
- 3
删除损坏的日志
SQL> alter database drop logfile group 2;
Database altered.
- 1
- 2
- 3
- 1
- 2
- 3
现在可以正常打开数据库
SQL> alter database open;
Database altered.
- 1
- 2
- 3
- 1
- 2
- 3
添加日志
SQL> alter database add logfile group 2 ('/u01/app/oracle/oradata/PROD/redo02.log') size 50M;
Database altered.
- 1
- 2
- 3
- 1
- 2
- 3
总结:
对于非current redo log损坏,如果是处于inactive状态的redo,那么处理起来很简单,直接clear然后drop掉,不会有数据的丢失。