查询Oracle C函数得知kghalp为:
kghalp: kernel generic heap manager allocate permanent memory
ORA-7445 kghalp的bug还挺多的,ADG上SELECT查询触发的bug比较难排查。
Bug 21157342 - dump on kghalp/_intel_new_memcpy with SQL Monitoring enabled (default) (Doc ID 21157342.8)
上面的bug是指开启sql monitoring后执行长查询会触发这个bug,调用栈为:kghalp <- kghscCopyStream <-keswxCurStartPlanMonitoring,与trace文件中完全一致,但是ADG端理论上不会有这个报错,可以尝试官方给的解决方案:
alter system set "_sqlmon_threshold"=0;
也可以尝试不要在ADG上运行太长的SQL,或者提升SQL运行效率,不然也很容易触发ORA-01555错误。
*** 2019-12-31 16:16:36.441
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x3, level=3, mask=0x0)
select count(1) as IS_HAS from V_PHONEINFO where CONTACT_MOBILE in ( :1 )
kghalp()+46 signal __sighandler() 00C0F8C80 ? 000000000 ?
000000018 ? 000000001 ?
000000000 ? 000000018 ?
kghscAllocDataElem( call kghalp() 00C0F8C80 ? 000000000 ?
)+84 000000018 ? 000000001 ?
000000000 ? 00A96B0C8 ?
kghscWrite()+241 call kghscAllocDataElem( 00C0F8C80 ? 7FFC13F7A0D0 ?
) 122FAE2588 ? 000000001 ?
000000000 ? 00A96B0C8 ?
kghscCopyStream()+8 call kghscWrite() 00C0F8C80 ? 7FFC13F7A0D0 ?
31 122FAE2588 ? 000000001 ?
000000000 ? 00A96B0C8 ?
keswxCurStartPlanMo call kghscCopyStream() 7FFC13F79A00 ? 0000003B8 ?
nitoring()+2352 0000003B8 ? 000000001 ?
000000000 ? 00A96B0C8 ?
keswxCurPushMonitor call keswxCurStartPlanMo 7F8935E19700 ? 7F8935BD4D78 ?
ing()+2357 nitoring() 115E30C910 ? 000000000 ?
000000000 ? 00A96B0C8 ?
kews_sqlst_push_mon call keswxCurPushMonitor 7F8935E19700 ? 000000000 ?
itoring()+504 ing() 000000000 ? 000000001 ?
0001E8507 ? 000000000 ?
kews_sqlst_flush_le call kews_sqlst_push_mon 7F8935E19700 ? 000000000 ?
vel()+338 itoring() 000000000 ? 000000001 ?
0001E8507 ? 000000000 ?
kews_sqlst_flush()+ call kews_sqlst_flush_le 11812C79D0 ? 000000000 ?
382 vel() 116FA1FD38 ? 7F8935FEB9B8 ?
0001E8507 ? 000000000 ?
kews_timeout()+358 call kews_sqlst_flush() 11812C79D0 ? 000000000 ?
116FA1FD38 ? 7F8935FEB9B8 ?
0001E8507 ? 000000000 ?
ksu_dispatch_tac()+ call kews_timeout() 11812C79D0 ? 000000000 ?
1157 116FA1FD38 ? 7F8935FEB9B8 ?
0001E8507 ? 000000000 ?