设为首页 收藏本站
查看: 391|回复: 0

[经验分享] 如何查询ORA-07445 ORA-00600错误相关信息

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-29 08:55:34 | 显示全部楼层 |阅读模式

ORA-07445和ORA-00600是系统内部错误,一般是由于BUG引起的,要解决或者避免这些错误一般需要到metalink上查。metalink甚至专门推出了一个工具用于这两个错误的查找。

与普通错误不同的是,ORA-07445和ORA-00600是一系列错误的总称,引起错误的原因可能成千上万个,如何快速、准确地找出到错误的原因是解决这类问题的难点。
出现ORA-07445或ORA-00600错误时,一般都会产生一个trace文件,这个文件的路径和名称可以在alert文件中找到。
这篇文章主要是谈谈如何在trace文件找找出关键信息。



1、ORA-07445

找出ORA-007445最关键是找出出错的函数名(这里的函数是指开发ORALCE的函数),然后根据函数名搜索错误原因及解决方法。
ORA-07445后一般跟着若干个由[]括起来的字符串,通常第一个被[]括起来的字符串就是我们需要的函数名。
ORA-07445的报错一般有两种:
1)ORA-07445: exception encountered: core dump [lnxmin()+252] [SIGSEGV] [Address not mapped to object] [0x000000002] [] []
这种情况很简单,第一个被[]括起来的字符串是lnxmin,这就是引发错误的函数名,我们根据这个信息去查就可以了。

2)ORA-07445: exception encountered: core dump [0000000100E84B7C] [SIGSEGV] [Address not mapped to object] [0x0000004F0] [] []
这种情况比较麻烦,因为oracle并没有告诉我们出错的函数名,0000000100E84B7C可能只是一个地址,无法根据这个来作为关键字进行查询。
这时我们就要从trace文件着手了。在trace文件内容的前部分中的Call Stack Trace部分可以发现有用信息。
对比一下多个trace文件,可以发现在这种情况下Call Stack Trace一般都包含类似下面的内容:
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedmp()+328 CALL ksedst()+0 FFFFFFFF7FFF3BD0 ?
000000000 ? 000000000 ?
00000003E ?
FFFFFFFF7FFF4468 ?
1031D56C8 ?
ssexhd()+604 CALL ksedmp()+0 000000000 ? 000103400 ?
0001035D9 ? 000102C00 ?
1035D9000 ? 1035D9C28 ?
sigacthandler()+44 PTR_CALL 0000000000000000 1035E1000 ?
FFFFFFFF7FFF5400 ?
000000000 ? 000000001 ?
1035DEDD8 ? 00000000B ?
qsmkzii_init_qsmksi PTR_CALL 0000000000000000 00000000B ?
nline()+624 FFFFFFFF7FFF5400 ?
FFFFFFFF7FFF5120 ?
00000000B ? 00038001C ?
1035DC458 ?
qsmkzss_setup_summa CALL qsmkzii_init_qsmksi FFFFFFFF7CD12908 ?
ry()+480 nline()+0 000103000 ?
FFFFFFFF7CD93650 ?
000000000 ?
FFFFFFFF7CD93650 ?
103258100 ?
......

其中里面的ksedmp、ssexhd、sigacthandler这三个函数在每一个ORA-07445 [0000000100E84B7C]类似的trace文件都存在,这是进行oracle异常处理的,一般不用管。
stack的第一列的第四行的信息就是我们需要的信息:qsmkzii_init_qsmksinline,这个就是出错的函数名。
在metalink根据这个函数名去查找,一般就可以知道错误的原因和是否有合适的方面来解决、避免这个错误。
如果根据第四行的函数名得不到有用的信息,可以尝试一下第五行的信息作为函数名,如果还是不能查到有用的信息,则可以认为metalink上没有这个错误的信息。

2、ORA-00600
查找ORA-00600的关键信息比ORA-07445稍微简单,它相当于ORA-07445的第一种情况。
ORA-00600后一般跟着若干个由[]括起来的字符串,通常第一个被[]括起来的字符串就是我们需要的参数。
ORA-00600的报错信息在从alert文件和trace文件都存在,不过为了得到更多的信息,建议看trace文件。
一个ORA-00600的trace文件类似下面:
*** SESSION ID:(22.3813) 2004-10-26 09:57:13.167
*** 2004-10-26 09:57:13.167
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [ttcgcshnd-1], [0], [], [], [], [], [], []
Current SQL statement for this session:
SELECT VALUE FROM NLS_INSTANCE_PARAMETERS WHERE PARAMETER ='NLS_DATE_FORMAT'
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedmp()+328 CALL ksedst()+0 FFFFFFFF7FFF9660 ?
000000000 ? 000000000 ?
00000003E ?
FFFFFFFF7FFF9EF8 ?
1031C9458 ?
kgerinv()+184 PTR_CALL 0000000000000000 000000000 ? 000103400 ?
0001035CD ? 000102C00 ?
1035CD000 ? 1035CD328 ?
kgeasnmierr()+28 CALL kgerinv()+0 1035CD588 ? 1036EDE38 ?
0000013C8 ? 000000001 ?
1035CF694 ? 1035CE958 ?
ttcgcshnd()+248 CALL kgeasnmierr()+0 1035CD588 ? 1036EDE38 ?
1033A2758 ? 000000001 ?
000000000 ? 000000000 ?
ttcc2u()+784 CALL ttcgcshnd()+0 1035CD588 ? 102DA4880 ?

上面的信息中,ttcgcshnd-1就是我们要找的第一个参数,也是查询的关键字。


3、trace中其他有用的信息
在ORA-00600和ORA-07445的trace文件都包含了一些其他的有用信息。
在trace文件的PROCESS STATE部分,可以查看出错时SESSION的信息,包含主机名、那个用户执行的、用什么工具执行的等。
这些信息可能不太好找,查找方法是:从trace文件中找到PROCESS STATE,然后从PROCESS STATE往下找第一个"session"(关键字)出现的地方,这部分信息就包含我们需要的这些重要信息。

按照关键字"HOST"查可以得到客户端的IP




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61754-1-1.html 上篇帖子: ORA-12853 下篇帖子: ORA-02019 如何 信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表