码迷,mamicode.com
首页 > 数据库 > 详细

解决Oracle数据库错误ORA-16040和ORA-00312

时间:2016-03-01 00:41:10      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:

一、问题现象及排查过程

数据库服务器重启后,应用无法正常启动,提示无法连接数据库。看来,问题可能出在数据库服务器上,那就先检查数据库服务器:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!