标签:
一、问题现象及排查过程
数据库服务器重启后,应用无法正常启动,提示无法连接数据库。看来,问题可能出在数据库服务器上,那就先检查数据库服务器:
1.登录进数据库服务器后,打开cmd命令提示符,输入命令
sqlplus / as sysdba
连入本机数据库,进入sqlplus程序上下文,然后输入命令
select instance_name,status from v$instance;
执行后,提示数据库在mounted状态,而非在open状态,自然无法正常对外提供服务了。难怪应用无法正常启动!原因在此!
2.使用命令打开数据库
alter database open;
执行后,程序报错,提示数据库错误ORA-16040和ORA-00312,在百度上搜这两个错误的解决方法,基本上都是说数据库的归档日志文件有问题,需要修复才能继续。
二、解决办法
既然发现了问题原因,同时也查到了解决办法,那么接下来就直接进入了解决过程。
1.sqlplus程序上下文中,先确定数据库在mounted状态下,然后使用命令
alter database clear unarchived logfile group 1; alter database clear unarchived logfile group 2; alter database clear unarchived logfile group 3;
清除归档日志。
2.使用命令
alter database open;
打开数据库,此时sqlplus并没有报错,看来是成功了。
3.使用命令
select instance_name,status from v$instance;
查看数据库的状态,发现数据库已经是open状态了。
4.新开一个cmd窗口,进入lsnrctl监听管理上下文,分别使用stop和start命令重启数据库监听程序。
5.最后,重新启动应用,应用未报错,能够正常启动。问题得到解决。
三、总结
信息系统运行过程中难免会出现各种奇奇怪怪的问题,当出现问题的时候,第一个反应应该是查看现象,然后依据现象去推测可能出现的原因。此例直接是应用报错,提示无法连接数据库,那么就循着这个线索去查找数据库的原因。
在数据库服务器上,找到是由于数据库归档日志的原因造成数据库无法正常启动,那么解决问题的关键就变成了解决归档日志错误的问题。依据数据库的报错信息,在网上查找是否已经有成熟的解决方案(方法),此次运气较好,直接找到了很多相似的解决方法,通过实践,发现确实有效,解决了问题。
解决Oracle数据库错误ORA-16040和ORA-00312
标签:
原文地址:http://www.cnblogs.com/feb-7th/p/5229420.html