love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

Oracle 19c rac instance crash due to ora-00600 kghuclientasp_03 and ora-00600 17112

近几天某客户核心业务系统进行全面改造,将其他数据迁移并加工处理到zdata一体机环境中;其中数据库环境为Oracle RAC 19.14版本,4个计算节点,存储节点为5个zdata stroage(全闪)。整体性能是比较强劲的。

然而此次业务迁移改造,所有业务逻辑处理几乎均为PL/SQL来实现,每个节都同时调用数十个Job运行,且采用了大量的nologging操作,最终导致某个节点instance crash,如下所示:

从上述节点alert log来看,出现了大量的ora-00600和ora-07445 错误。其中kghuclientasp_03 相对少见,另外ksepop:1 ksepop recursion、kghfrmrg:nxt、[kghfrh:ds] 也是见过不少了。后面2个都与Oracle内存有关系。

实际上对于kghuclientasp_03这个函数而言,从前面的关键字可以猜出也也必然跟内存有关。

从其中一个trace文件中可以看到如下内容:

从上述信息不难看出,确实出现了ERROR,batch-heap mismatch的报错信息,而且对应均为PL/SQL操作。

进一步搜索发现相关进程的操作几乎均为INSERT /*+ nologging */ INTO  操作;由于是并发调用,而且均是数十个JOB同时调用,因此这里我们不得不怀疑,在nologging+并发过大的情况下,会出现heap error的情况。

当然对于此次实例crash,进一步分析可以看到本质是CL02、CL04进程异常最后导致实例crash掉。

从Oracle 12c 开始引入了clmn(进程清理主进程即 Cleanup Main Process)以及CLnn(进程清理辅进程即Cleanup Helper Processes)。这2类进程的引入,可以极大的缓解PMON进程的压力。

对于CL进程,本质上也是Oracle RAC的核心进程;对于Oracle核心进程(即不能kill的进程),可通过如下脚本进行查询:

当核心进程CL02、CL04异常后,实例肯定会crash,这是毋容置疑的。从CL04 进程的trace来看,本质上也是遭遇了heap error:

进一步查看相关堆栈情况可以看到如下内容:

我们可以看到Oracle在调用khfre进行内存释放时发现了heap error,最终触发了此次问题。根据同事的反馈说之前测试过程中也出现了类似的问题,也出现过导致宕机的问题,报错一样。同时也定位是同一个业务逻辑。最后我建议应用将该业务逻辑中相关nologging hint全部去掉;后面在看似乎错误少了很多。至少alert log来看,没有类似的错误了。

针对上述的其中一个ora-00600错误,搜索Oracle MOS也可以看到类似的bug描述,供参考:

Bug 28276054 – Various ORA-600 / ORA-7445 Internal Errors Raised When Using PLSQL Reset Session (Doc ID 28276054.8)

不过该bug没有相关的解决方案,而且看上去说在19.7之后已经解决,然而我们这里是19.14。由此可见仍然存在类似的问题。

Bug 28276054  Various ORA-600 / ORA-7445 Internal Errors Raised When Using PLSQL Reset Session

 This note gives a brief overview of bug 28276054.
The content was last updated on: 08-MAR-2022
Click here for details of each of the sections below.

Affects:

Product (Component) Oracle Server (Xdb)
Range of versions believed to be affected Versions BELOW 20.1
Versions confirmed as being affected
Platforms affected Generic (all / most platforms affected)

Fixed:

The fix for 28276054 is first included in

Interim patches may be available for earlier versions – click here to check.

Symptoms:

Related To:

Description

最后至于说该问题是不是Oracle Bug导致的crash,我认为可能性是极大的。

Leave a Reply

You must be logged in to post a comment.