5月6日东财数据库宕机故障核查

时间:2021-12-23 03:17:55
一、宕机过程回溯
5.6号凌晨1点24分左右oracle数据库进程异常退出,导致BI系统故障。早上发现问题后,项目组联系了黄工,黄工在10点半左右直接重启了数据库服务器(实际上此时服务器并没有关机,只是数据库进程异常退出了),所以现在系统引导时间显示的是2018-05-06 10:36。
 
二、宕机故障问题排查
首先找到数据库告警日志在1点24分左右的日志信息如下(alert_dfcwbi.log):
5月6日东财数据库宕机故障核查

 

5月6日东财数据库宕机故障核查
1、发生ora-00600的错误
1点24分开始,数据库连续发生多次ora-00600的错误,并且生成相关的事件转储文件。
首先对于ORA-00600的oracle官方解释为:
5月6日东财数据库宕机故障核查

5月6日东财数据库宕机故障核查

翻译过来为:
// *原因:这是Oracle程序例外的通用内部错误号。 这表明一个过程遇到了特殊情况。
// *操作:报告为错误 - 第一个参数是内部错误编号。
 
总共3个相关的事件trc文件:
1) /u01/app/oracle/diag/rdbms/dfcwbi/dfcwbi/incident/incdir_32377/dfcwbi_ora_51902_i32377.trc
  5月6日东财数据库宕机故障核查

5月6日东财数据库宕机故障核查

2) /u01/app/oracle/diag/rdbms/dfcwbi/dfcwbi/incident/incdir_32097/dfcwbi_dbw2_56514_i32097.trc
5月6日东财数据库宕机故障核查

5月6日东财数据库宕机故障核查

3) /u01/app/oracle/diag/rdbms/dfcwbi/dfcwbi/incident/incdir_32098/dfcwbi_dbw2_56514_i32098.trc
5月6日东财数据库宕机故障核查
  5月6日东财数据库宕机故障核查
从三个文件的dump信息中我们能得知一些基本信息:
错误发生的文件编号file#为2,对象id(obj)为5702,块类型class为1(即数据块),块在内存中的物理地址为0x25924d4000
进一步查询:
file#为2的文件是oracle系统内置的sysaux表空间的数据文件
5月6日东财数据库宕机故障核查
5月6日东财数据库宕机故障核查
对象5702为oracle系统内置的系统表:
5月6日东财数据库宕机故障核查
  5月6日东财数据库宕机故障核查
所以导致此次报错的对象是oracle系统内置的系统对象
 
2、DBWn进程中止数据库实例进程
继续查看后面的日志
5月6日东财数据库宕机故障核查
5月6日东财数据库宕机故障核查
我们可得知在发生多次ora-00600系统内部报错后,由oracle后台的DBWn进程中止了数据库实例的运行。
oracle数据库为内存写机制,DBWn进程负责将内存数据写入物理磁盘。
 
将1、2联系起来解释:
5月6日凌晨1点24分,oracle系统运行的内部表WRI$_ADV_TASKS在将位于物理地址为0x25924d4000的内存中的数据块由DBWn进程写入磁盘的过程中发生未知异常,导致中止了数据库实例的运行。而此次异常退出的整个过程只与oracle数据库内部信息有关,而与其他应用无关。
 
根据ora-00600的解释以及网上对于该错误的解释,基本判断此为oracle的内部bug.
 
三、建议:
oracle 11g最新的补丁版本为11.2.0.4,目前东财oracle版本为11.2.0.1,建议升级到最新的11.2.0.4,增加系统稳定性。
 
附:
http://www.askmaclean.com/archives/11204-bug-list.html   该文整理了11.2.0.4修复的bug,其中就有很多与ora-00600相关的bug.