`
yangzhiyong77
  • 浏览: 1017537 次
文章分类
社区版块
存档分类
最新评论

ORA-07445和ORA-00600是系统内部错误 查错方法

 
阅读更多

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

分享到:
评论

相关推荐

    解决Exception java.sql.SQLException ORA-00600 内部错误代码

    在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码

    ORA-00600【4194】.pdf

    Oracle 错误代码 ORA-00600 是一个内部错误代码,通常是由数据库内部机制引起的。该错误代码可以有多种不同的参数,例如在本文中的 [4194]。在这里,我们将讨论如何处理通过隐含参数恢复报错处理时出现的 ORA-00600...

    解决Oracle 9.2.0.6版本数据库由于ORA-07445宕机问题

    Oracle数据库在运行过程中可能会遇到各种错误,其中,ORA-07445错误是一个与内核相关的严重异常,通常表示数据库遇到了未预期的内部错误,可能导致数据库实例的崩溃。在这个特定的问题中,XX网的Oracle 9.2.0.6版本...

    ERwin连接oracle报ORA-01041内部错误,hostdef扩展名不存在.docx

    ### ERwin连接Oracle报ORA-01041内部错误,hostdef扩展名不存在的知识点解析 #### 一、问题背景及概述 在使用ERwin数据建模工具连接Oracle数据库时,可能会遇到ORA-01041内部错误提示:“hostdef扩展名不存在”。...

    ora 错误全集 全部 ora0000-ora32999

    例如,ORA-00600是内部错误,表明数据库遇到了未预期的情况,可能需要数据库恢复或与Oracle技术支持联系。而ORA-00911表示输入的字符串超过了允许的最大长度,这在编写SQL语句时需要注意。 从ORA-10000到ORA-19999...

    数据恢复:被注入的软件及 ORA-600 16703 灾难的恢复.docx

    ORA-00600 是Oracle数据库内部错误代码,通常表示遇到了未预期的内部错误或数据结构损坏。在这种情况下,错误参数16703进一步表明问题与数据库的特定对象有关。本文将详细解析如何处理此类问题,并提供恢复策略。 ...

    oracle ora-03113错误

    ### Oracle ORA-03113 错误解析及解决方法 #### 一、ORA-03113 错误概述 ORA-03113 是一个较为常见的Oracle错误,通常出现在网络通信出现问题时,具体表现为“end-of-file on communication channel”(通信通道上...

    ORA错误中文描述(包括所有)

    #### ORA-00020: 内部错误 这是一个较为笼统的错误代码,通常表示Oracle内部发生了一些未预期的问题。具体的错误原因可能需要查看更详细的错误日志才能确定。 #### ORA-00021: 无法打开文件 此错误表示数据库无法...

    Ora-00600 [Qerltcuseriterget_1], [1], [1], [] and Ora-1502 (Doc ID 1432485.1)

    在Oracle数据库管理与维护过程中,有时会遇到一些内部错误,其中ORA-00600和ORA-1502是较为常见的两类错误之一。本文将详细解析这两种错误的具体含义、发生原因以及解决方法。 #### 二、ORA-00600 错误 **错误定义...

    断电与ORA-600问题集

    ORA-600[19004]错误通常是由于数据库在执行某些特定操作时遇到内部错误。 **解决办法:** 需要在METELINK上查找具体的错误代码和参数,以获取更详细的指导。 ##### 1.7.3. ORA-00600[kddummy_blkchk] ORA-00600...

    p8922013_10204_Linux-x86-64.zipORA-00600: INTERNAL ERROR CODE, ARGUMENTS: [17059

    3. **联系Oracle支持**:由于ORA-00600是内部错误,可能需要Oracle官方的技术支持来解析错误代码和参数的含义,以及提供解决方案。 4. **应用补丁**:像题目中提供的8922013这样的补丁,可能就是为了解决特定的ORA-...

    ORA-01480STR 绑定值的结尾 Null字符缺失 的问题原因及解决办法

    在Oracle数据库操作中,"ORA-01480: STR 绑定值的结尾 Null 字符缺失"是一个常见的错误,通常与数据插入或更新时的格式问题有关。这个错误通常意味着在处理字符串数据时,Oracle无法找到预期的NULL终止符,这可能是...

    《转载》ora-00020超出最大进程数

    总之,遇到"ORA-00020 超出最大进程数"的错误,需要理解数据库的进程管理机制,通过适当的方法找出问题的根源,并采取相应的措施进行调整和优化,以确保数据库系统的稳定运行。对于IT专业人士来说,了解并掌握这些...

    启动oracle数据库报错:ORA-00600

    在Oracle数据库管理中,"ORA-00600"是一个内部错误代码,通常表示数据库遇到了一个未知或未处理的内部错误。这个错误是由于多种原因引起的,包括数据文件损坏、控制文件问题、实例恢复不完整或者软件bug等。在描述中...

    oracle错误代码超级大全ORA-00000_to_ORA-40322.

    本资源摘要信息中,我们将详细介绍 Oracle 错误代码大全,从 ORA-00000 到 ORA-40322,涵盖了各种常见的 Oracle 错误代码、原因、解决方法等。 ORA-00000: 正常退出 * 原因:正常退出。 * 解决:无需解决,正常...

    oracle数据库ORA-29275.txt

    在Oracle数据库操作过程中,遇到ORA-29275错误时,通常意味着系统内部发生了某些问题,影响了数据库的正常运行。根据提供的部分脚本内容及上下文推测,ORA-29275错误可能与数据库字符集设置、会话限制或资源管理配置...

    oracle数据库中ora-报错原因及处理

    在Oracle数据库的日常管理和运维中,我们经常遇到各种"ORA-"开头的错误代码,这些错误代码是Oracle系统用来标识特定问题的。Oracle数据库是全球广泛使用的数据库管理系统,它提供了复杂的数据存储、处理和管理功能。...

    oracle报错(ORA-00600)问题处理

    Oracle数据库报错ORA-00600是一个内部错误,通常表示系统遇到了未预见的问题或已知的软件缺陷。这个错误通常与Oracle的内核代码有关,而不是用户的SQL操作。在描述中,我们看到错误与“kcblasm_1”和参数103相关联,...

Global site tag (gtag.js) - Google Analytics