ORA-07445导致实例崩溃的解决【The solution of instance crush by ORA-07445】
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://miracle.blog.51cto.com/255044/57178 |
昨天(2007-12-27日)维护某省移动一个平台的工程师报告数据库实例不可用,只能重新启动!这还得了,业务无论如何不能停。 赶快登录到那个服务器上去检查。 通过日志分析,我看到导致实例不可用,其实质就是由于07445错误导致数据库实例崩溃。接着分析详细的日志信息: ORA-07445: exception encountered: core dump [kkmmctbf()+89] [SIGSEGV] [Address not mapped to object] [0x30] [] [] Current SQL statement for this session: delete from t_XXXX where XXXX_id='66666666666' and xx_id='EEE' 看看07445的错误解释: 07445, 00000, "exception encountered: core dump [%s] [%s] [%s] [%s] [%s] [%s]" // *Cause: An OS exception occurred which should result in the creation of a // core file. This is an internal error. // *Action: Contact your customer support representative. 牛,推到OS系统上了! 难道真是操作系统出了什么问题,看看操作系统的相关日志,表面上看没有任何报错信息。 会不会是ORACLE的BUG? 了解应用情况,发现在删除某张表的时候会出现这种情况,并且通过错误日志也看的出来,但是奇怪一个简单的SQL怎么会造成实例崩溃呢? 搜速相关信息,通过检查9.2.0.6 Bug Categories,在分类中发现一个可能的错误: Process May Dump (ORA-7445) / Abend / Abort 3199908 Dump (in kkmmctbf) from a DELETE TRIGGER compiled in DEBUG mode 赶快检查被删除的表,COOL!果真在其上有一个基于DELETE的TRIGGER! 检查这个TRIGGER的状态: select owner,object_name,object_type,debuginfo rom all_probe_objects where object_name='TRI_XXX' and object_type like 'TRIGGER'; OWNER OBJECT_NAME OBJECT_TYPE D ------------ -------------- --------------- - COPERATOR TRI_XXX TRIGGER T 1 rows selected. 天哪,真是DEBUG状态! 一个因为在DEBUG状态,且是基于DELETE的TRIGGER触发了这个ORACLE的BUG! ...... 现在要么改这个TRIGGER的状态,要么打补丁(9.2.0.6)。第一种选择是明智而快捷且安装的。重新编译,检查不是DEBUG状态。应用启动,正常运行。 上线数据库中的数据库内部的程序开发对象,例如:PACKAGE、FUNCTION等是坚决不能存在DUBUG状态的。不但影响性能而且容易引起某些莫名的错误。 当然ORACLE也常常需要怀疑一下,毕竟再好的程序也是人编的 -:) -------------------系统说明 OS:REDHAT AS4 DATABASE:ORACLE 9.2.0.4 本文出自 “Be the miracle!” 博客,请务必保留此出处http://miracle.blog.51cto.com/255044/57178 本文出自 51CTO.COM技术博客 |



Larry.Yue
博客统计信息
热门文章
最新评论
友情链接