在数据库运维中,也许每一个DBA都很怕ORA-600,导致600错误的原因常常难觅踪迹,大部分情况下可能是由bug导致的,因此成为广大DBA的噩梦。
但是遇到ORA-600的机会并不会很高。根据Bethune智能诊断平台对于中国Oracle数据库用户使用现状分析报告,我们发现,实例异常宕机的相关错误总结如下:(图为2016年非完全统计结果,仅供参考)
从以上结果看出,I/O类报错和异常宕机相关性最⾼,内部错误(ORA-00600,
ORA-07445)引发的实例异常宕机占⽐只有5%左右。
而很多错误,因其杀伤力不像600那么高,往往是被忽略的,也就导致了很多意料之外的故障。接下来我们一起来分析实例异常宕机的常见错误。
ORA-01092
官方文档描述为:
Description:ORACLE instance terminated. Disconnection forced
Cause:The instance this process was connected to was terminated abnormally, probably via a shutdown abort. This process was forced to disconnect from the instance.
Action:Examine the alert log for more details. When the instance has been restarted, retry action.
实例异常终止,连接断开。这个错误之所以占的比例最大,是因为与其说它是错误的原因,倒不如说是结果。因为各种原因都有可能会导致实例终止。
常见的场景有:数据库启动时;使用备份进行恢复时;使用resetlog跳过数据库的启动检查时;DBCA创建数据库的时候等。
导致实例异常终止的原因可能有很多种,这些原因可以大致分为两类。一类是外部原因,或者称为主动原因,比如人为地执行了shutdown abort导致,或者任何跟shutdown属性一样的动作,比如断电,断网,线路被挖断等。
这类原因一般可以很快找到根源,并且由于上述原因导致的问题一般影响面积较大,很少是单一系统或者单一实例。
另一类原因就是内部原因,由于数据库本身的异常导致的实例终止。那么内部原因可能有哪些呢?根据我们的经验,导致ORA-01092错误引发实例终止的原因包含以下几种情况:1、数据文件错误或异常离线2、密码文件orapw错误
3、用旧版本的备份做数据库恢复
4、在使用Automatic Undo Management 时,und