今天在开启数据库时,遇到ORA-03113: end-of-file on communication channel的问题
SQL> startup
ORACLE instance started.
Total System Global Area 455127040 bytes
Fixed Size 2229304 bytes
Variable Size 297798600 bytes
Database Buffers 150994944 bytes
Redo Buffers 4104192 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 12594
Session ID: 1 Serial number: 5
因此查看预警日志,我用的是oracle 11g,预警日志文件默认位于$ORACLE
_BASE/diag/rdbms/orcl/orcl/trace目录下,如果不知道,可以查看参数background_
dump_dest,这个参数是用来指定预警日志文件和后台进程追踪文件的位置的
SQL> show parameter background_dump_dest
NAME TYPE VALUE
--------------------- ----------- ------------------------------
background_dump_dest string /u01/app/oracle/diag/rdbms/orcl/orcl/trace
使用tail命令查看trace目录下的alert_orcl.log文件,显示如下:
Thu Oct 26 02:02:24 2017
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
[此处省去N多行,哈哈...]
ALTER DATABASE MOUNT
Successful mount of redo thread 1, with mount id 1486116145
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE MOUNT #在mount的时候没出错呦
Thu Oct 26 02:02:30 2017
ALTER DATABASE OPEN #在open的时候报错了,这里就是要关注的点了
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_lgwr_12518.trc:
ORA-00322: log 3 of thread 1 is not current copy
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo03.log'
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_lgwr_12518.trc:
ORA-00322: log 3 of thread 1 is not current copy
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo03.log'
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_12594.trc:
ORA-00322: log 1 of thread is not current copy
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo03.log'
USER (ospid: 12594): terminating the instance due to error 322
System state dump requested by (instance=1, osid=12594), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_diag_12498.trc
Dumping diagnostic data in directory=[cdmp_20171026020230], requested by (instance=1, osid=12594), summary=[abnormal instance termination].
Instance terminated by USER, pid = 12594
看报错信息,发现问题出在联机重做日志文件/u01/app/oracle/oradata/orcl/redo03.log上,这个文件中的信息和数据库现在的状态不匹配。
现在清除这个重做日志文件:
SQL> alter database clear logfile '/u01/app/oracle/oradata/orcl/redo03.log';
Database altered.
清除成功,然后继续打开数据库:
SQL> alter database open;
Database altered.
至此,数据库已经成功开启。