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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Oracle数据库错误ORA-16040和ORA-00312相关的知识,希望对你有一定的参考价值。

一、问题现象及排查过程

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

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的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别