一家内衣品牌的客户,环境oracle 11.2.0.4 rac on linux, db alert log日志中出现应用查询提示oracle ORA-07445: exception encountered: core dump [kkqteSetSubPartNums()+355] [SIGSEGV] [ADDR:0x7FEFCA3BDFB8] [PC:0x7818D8F] [Invalid permissions for mapped object] [] 和ORA-00600: 内部错误代码, 参数: [kghrst:ds], [0x7FFC26461030], 简单记录该问题
ORA-07445 [kkqteSetSubPartNums()+355]
ORA-07445: exception encountered: core dump [kkqteSetSubPartNums()+355] [SIGSEGV] [ADDR:0x7FEFCA3BDFB8] [PC:0x7818D8F] [Invalid permissions for mapped object] []
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x3, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=6abm1hd5mrdjy) -----
select p.DAY as DAY, p.location, p.TOTALMONEY as SALEMONEY,xxx
...
()... 一个复杂查询
---- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skdstdst()+41 call kgdsdst() 000000000 ? 000000000 ?
7FEFCAEDAC40 ? 7FEFCAEDAD18 ?
7FEFCAEDF7C0 ? 000000003 ?
ksedst1()+103 call skdstdst() 000000000 ? 000000000 ?
7FEFCAEDAC40 ? 7FEFCAEDAD18 ?
7FEFCAEDF7C0 ? 000000003 ?
ksedst()+39 call ksedst1() 000000001 ? 000000001 ?
7FEFCAEDAC40 ? 7FEFCAEDAD18 ?
7FEFCAEDF7C0 ? 000000003 ?
dbkedDefDump()+2746 call ksedst() 000000001 ? 000000001 ?
7FEFCAEDAC40 ? 7FEFCAEDAD18 ?
7FEFCAEDF7C0 ? 000000003 ?
ksedmp()+41 call dbkedDefDump() 000000003 ? 000000003 ?
7FEFCAEDAC40 ? 7FEFCAEDAD18 ?
7FEFCAEDF7C0 ? 000000003 ?
ssexhd()+2462 call ksedmp() 000000003 ? 000000003 ?
7FEFCAEDAC40 ? 7FEFCAEDAD18 ?
7FEFCAEDF7C0 ? 000000003 ?
__sighandler() call ssexhd() 00000000B ? 7FEFCAEE0BF0 ?
7FEFCAEE0AE8 ? 7FEFCAEDAD18 ?
7FEFCAEDF7C0 ? 000000003 ?
kkqteSetSubPartNums signal __sighandler() 7DFAB9490 ? 7FEFCA3AF0A0 ?
()+355 00000000C ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqteGeneratePreds( call kkqteSetSubPartNums 7DFAB9490 ? 7FEFCA3AF0A0 ?
)+271 () 00000000C ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqteTransform()+75 call kkqteGeneratePreds( 7FEFCA35DE20 ? 7FEFCA3AF0A0 ?
7 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqctdrvTE()+1531 call kkqteTransform() 7FEFCA35DE20 ? 7FEFCA3AF0A0 ?
7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqtedtr()+145 call kkqctdrvTE() 7FEFCA35DE20 ? 7FEFCA3AF0A0 ?
7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbcLoc( call kkqtedtr() 7FEFCA948EB0 ? 7FFF079F87E8 ?
)+618 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbcLoc( call qksqbApplyToQbcLoc( 7FEFCA948EB0 ? 7FFF079F8740 ?
)+1059 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbcLoc( call qksqbApplyToQbcLoc( 7FEFCA935438 ? 7FFF079F8740 ?
)+1000 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbc()+8 call qksqbApplyToQbcLoc( 7FEFCA939398 ? 7FFF079F8740 ?
70 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqctdrvTD()+5211 call qksqbApplyToQbc() 7FEFCA938F18 ? 0023F198A ?
7FFF079F87E8 ? 000000000 ?
000000000 ? 000000000 ?
kkqtedrv()+91 call kkqctdrvTD() 000000000 ? 7B9F3E5E0 ?
000000009 ? 000000000 ?
000000000 ? 000000000 ?
kkqdrv()+2061 call kkqtedrv() 7FEFCAD16938 ? 7B9F3E5E0 ?
000000009 ? 000000000 ?
000000000 ? 000000000 ?
kkqctdrvIT()+764 call kkqdrv() 7FEFCAD16938 ? 000000000 ?
000000009 ? 000000000 ?
000000000 ? 000000000 ?
apadrv()+3059 call kkqctdrvIT() 7FEFCAD16938 ? 7B9F3E5E0 ?
000000009 ? 000000000 ?
000000000 ? 000000000 ?
opitca()+2089 call apadrv() 7B9F3E5E0 ? 7B9F3E5E0 ?
000000009 ? 000000000 ?
000000000 ? 000000000 ?
kksFullTypeCheck()+ call opitca() 7FEFCAD59A80 ? 7B9F3E5E0 ?
69 7FFF079FB500 ? 000000000 ?
对于kkqteSetSubPartNums 全网没有任何信息,KKQTE==>kernel compile query table expansion 似乎和查询转换过程中的table explansion有关。
kkqteSetSubPartNums signal __sighandler() 7DFAB9490 ? 7FEFCA3AF0A0 ?
()+355 00000000C ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqteGeneratePreds( call kkqteSetSubPartNums 7DFAB9490 ? 7FEFCA3AF0A0 ?
kernel compile query table expansion [partial hit for: kkqte ] => kernel compile query table expansion [partial hit for: kkqte ]
)+271 () 00000000C ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqteTransform()+75 call kkqteGeneratePreds( 7FEFCA35DE20 ? 7FEFCA3AF0A0 ?
kernel compile query table expansion [partial hit for: kkqte ] => kernel compile query table expansion [partial hit for: kkqte ]
7 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqctdrvTE()+1531 call kkqteTransform() 7FEFCA35DE20 ? 7FEFCA3AF0A0 ?
kernel compile query cost based query transformation driver table expansion => kernel compile query table expansion [partial hit for: kkqte ]
7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqtedtr()+145 call kkqctdrvTE() 7FEFCA35DE20 ? 7FEFCA3AF0A0 ?
kernel compile query table expansion [partial hit for: kkqte ] => kernel compile query cost based query transformation driver table expansion
7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbcLoc( call kkqtedtr() 7FEFCA948EB0 ? 7FFF079F87E8 ?
query kernel sql Query compilation for query blocks apply to QB local implementation => kernel compile query table expansion [partial hit for: kkqte ]
)+618 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbcLoc( call qksqbApplyToQbcLoc( 7FEFCA948EB0 ? 7FFF079F8740 ?
query kernel sql Query compilation for query blocks apply to QB local implementation => query kernel sql Query compilation for query blocks apply to QB local implementation
)+1059 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbcLoc( call qksqbApplyToQbcLoc( 7FEFCA935438 ? 7FFF079F8740 ?
query kernel sql Query compilation for query blocks apply to QB local implementation => query kernel sql Query compilation for query blocks apply to QB local implementation
)+1000 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
qksqbApplyToQbc()+8 call qksqbApplyToQbcLoc( 7FEFCA939398 ? 7FFF079F8740 ?
query kernel sql Query compilation for query blocks apply to QB => query kernel sql Query compilation for query blocks apply to QB local implementation
70 ) 7FFF079F8450 ? 7DFAB9620 ?
000000000 ? 000000000 ?
kkqctdrvTD()+5211 call qksqbApplyToQbc() 7FEFCA938F18 ? 0023F198A ?
kernel compile query cost based query transformation driver transformation directives => query kernel sql Query compilation for query blocks apply to QB
7FFF079F87E8 ? 000000000 ?
000000000 ? 000000000 ?
kkqtedrv()+91 call kkqctdrvTD() 000000000 ? 7B9F3E5E0 ?
kernel compile query table expansion driver => kernel compile query cost based query transformation driver transformation directives
000000009 ? 000000000 ?
000000000 ? 000000000 ?
kkqdrv()+2061 call kkqtedrv() 7FEFCAD16938 ? 7B9F3E5E0 ?
kernel compile query transformation driver => kernel compile query table expansion driver
000000009 ? 000000000 ?
000000000 ? 000000000 ?
kkqctdrvIT()+764 call kkqdrv() 7FEFCAD16938 ? 000000000 ?
kernel compile query cost based query transformation driver initiate cost-based transformation => kernel compile query transformation driver
000000009 ? 000000000 ?
000000000 ? 000000000 ?
apadrv()+3059 call kkqctdrvIT() 7FEFCAD16938 ? 7B9F3E5E0 ?
SQL Access Path Analysis drive access path selection for a sql command => kernel compile query cost based query transformation driver initiate cost-based transformation
000000009 ? 000000000 ?
000000000 ? 000000000 ?
opitca()+2089 call apadrv() 7B9F3E5E0 ? 7B9F3E5E0 ?
oracle program interface sets up context area => SQL Access Path Analysis drive access path selection for a sql command
解决方法
1, 禁用table expansion
SQL> alter system set "_optimizer_table_expansion"=false;
注意:请确保在生产环境中实现此参数更改之前进行测试,因为它可能会影响某些应用程序的性能。
— or —
2, 查询是否有分区索引失效
SetSubPartNums判断与分区相关,该案例确实存在Invalid partition,重建后恢复正常。
ORA-00600 [kghrst:ds]和 [kghfrempty:ds]
db alert log
Errors in file /oracle/diag/rdbms/anbob/anbob1/trace/anbob1_ora_115410.trc: ORA-00600: internal error code, arguments: [kghrst:ds], [0x7F0B7A19FA10], [], [], [], [], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [kghfrempty:ds], [0x7F0B7A19FA10], [], [], [], [], [], [], [], [], [], []
600 kghrst trace file
----- Error Stack Dump -----
ORA-00600: 内部错误代码, 参数: [kghrst:ds], [0x7FFC26461030], [], [], [], [], [], [], [], [], [], []
----- Current SQL Statement for this session (sql_id=53p5b214b18h4) -----
SELECT sum(t1.RECEIVABLE_MONEY) as TOTALMONEY,
...
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skdstdst()+41 call kgdsdst() 000000000 ? 000000000 ?
7FFF9002BC20 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
ksedst1()+103 call skdstdst() 000000000 ? 000000000 ?
7FFF9002BC20 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
ksedst()+39 call ksedst1() 000000000 ? 000000001 ?
7FFF9002BC20 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
dbkedDefDump()+2746 call ksedst() 000000000 ? 000000001 ?
7FFF9002BC20 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
ksedmp()+41 call dbkedDefDump() 000000003 ? 000000000 ?
7FFF9002BC20 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
ksupop()+3975 call ksedmp() 000000003 ? 000000000 ?
7FFF9002BC20 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
opiodr()+1009 call ksupop() 000000001 ? 000000000 ?
7FFF9002BC20 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
ttcpip()+1255 call opiodr() 00000005E ? 00000001C ?
7FFF900342A0 ? 7FFF9002BCF8 ?
7FFF900307A0 ? 000000002 ?
opitsk()+1710 call ttcpip() 00C150970 ? 0099F14B0 ?
7FFF900342A0 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
opiino()+969 call opitsk() 00C150978 ? 000000000 ?
7FFF900342A0 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
opiodr()+917 call opiino() 00000003C ? 000000004 ?
7FFF90035A98 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
opidrv()+570 call opiodr() 00000003C ? 000000004 ?
7FFF90035A98 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
sou2o()+103 call opidrv() 00000003C ? 000000004 ?
7FFF90035A98 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
opimai_real()+133 call sou2o() 7FFF90035A70 ? 00000003C ?
000000004 ? 7FFF90035A98 ?
7FFF90033CF8 ? 7FFF9003429C ?
ssthrdmain()+265 call opimai_real() 000000002 ? 7FFF90035C60 ?
000000004 ? 7FFF90035A98 ?
7FFF90033CF8 ? 7FFF9003429C ?
main()+201 call ssthrdmain() 000000002 ? 7FFF90035C60 ?
000000001 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
__libc_start_main() call main() 000000002 ? 7FFF90035E08 ?
+253 000000001 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
_start()+41 call __libc_start_main() 000A2B614 ? 000000002 ?
7FFF90035DF8 ? 000000000 ?
7FFF90033CF8 ? 7FFF9003429C ?
Dumping Event (group=SESSION)
Dumping Event (group=SYSTEM)
DYNAMICALLY MODIFIED PARAMETERS:
nls_language = SIMPLIFIED CHINESE
nls_territory = CHINA
log_archive_dest_state_2 = ENABLE
DDE: Flood control is not active
Incident 55634772 created, dump file: /oracle/diag/rdbms/dslrprd1new/dslrprd13/incident/incdir_55634772/dslrprd13_ora_18969_i55634772.trc
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kghrst:ds], [0x7FFC26461030], [], [], [], [], [], [], [], [], [], []
kgefec: fatal error 0
可能的原因
23326243 12.2.0.1 ORA-600[17147] when create procedure containing muti-bytes characters
可能的解决方法
内存级corrupted, flush shared_pool, 或查看SQL中是否有使用muti-bytes characters如中文字符。