晚上小编收到紧急通知,客户的应用出现报错,导致生产停机,无法连接到数据库。以下是应用反馈的报错:
看到这个报错,小编先猜测了一波可能数据库进程被关闭了,尝试连到数据库所在的windows服务器,重启oracle服务,打开日志发现重启失败,数据库无法被打开。
根据日志的报错,猜测是系统文件损坏。为了寻找造成ststem01.dbf被破坏的原因,小编开始往上查看日志,这时候发现数据库在1点的时候被开启了热备。但是在之后8点52分数据库被重启,看来在1点跟9点之间,数据库被异常关闭了。
这时候小编想起来,数据库在热备模式下被关闭,是无法再重启的。
那就赶紧去检查一下数据文件的状态。
通过sql语句
发现数据文件都是active状态,都处于热备模式。果然如此,既然找到了原因所在,那就可以对症下药了!
这时候发现数据库就能起来了!
应用重新连上!
看来造成这次数据库宕机,业务停机的原因就是数据库在每天的凌晨1点钟会开启热备模式,进行备份。但是数据库或者服务器却被异常关闭了,导致数据库无法打开。
小编在这里建议,尽量不要采用脚本热备的方式,使用数据泵或者rman进行每日备份更为妥当。如果一定要开启热备模式,期间会产生大量redo日志,且务必热备完成后,关闭热备模式!