前日夜里,帮助XX省电信,进行数据库X备一项目的上线前的调试准备工作,在备机上启动双实例数据库中的一个实例的时候报错,提示
SQL> startup
ORACLE instance started.
Total System Global Area 6614106112 bytes
Fixed Size 2213896 bytes
Variable Size 3154118648 bytes
Database Buffers 3422552064 bytes
Redo Buffers 35221504 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 5982
Session ID: 96 Serial number: 3
网上去查看ORA-03113: end-of-file on communication
channel这个错误,发现大家说的可能性很多,讲的也很全面,但自己的究竟是哪个呢。其实大家找寻问题,最重要的是要看日志。这里我们就去查看alert日志。
通过日志在alert日志中发现了问题的根源,alert中报错信息为
ORA-19815: WARNING: db_recovery_file_dest_size of 4070572032 bytes is 100.00% used, and has 0 remaining bytes available.
直接了当的反映了由于db_recovery_file_dest_size的空间已经被使用满了,所以导致无法启动。
解决起来就很容易了,先将数据库启动到mount状态(因为已经无法开启了嘛)
SQL> startup mount
接下来,查看一下我们预先配置的db_recovery_file_dest_size究竟有多大。
SQL> show parameter
db_recovery_file_dest_size;
NAME TYPE VALUE
------------------------------------ -----------
------------------------------
db_recovery_file_dest_size big integer 3882M
只有4个G不到,立刻查看了一下,其他几台生产环境的数据库参数。
SQL> show parameter db_recovery_file_dest_size;
NAME TYPE VALUE
------------------------------------ -----------
------------------------------
db_recovery_file_dest_size big integer 4000G
立刻震惊,好吧。真阔绰。4T。修改一下吧。
SQL>
ALTER SYSTEM SET db_recovery_file_dest_size=4000G scope=both;
好了。接下来。就可以把库启动起来了。
ps:
alert日志具体的路径
/ORACLE_HOME/diag/rdbms/ora9i/ora9i/trace/alert_ora9i.log我们这边是9i版本,其他的稍微有些区别,具体是
Oracle 10G :/ORACLE_HOME/oracle/admin/oracle155/bdump
Oracle 11G:/ORACLE_HOME/diag/rdbms/ora11g/ora11g/alert
同时可以通过:SQL> select * from v$diag_info where
name ='Diag Alert';
查询alert 文件位置