记一次生产库库 ORA-600 [pmuocon2#1: Invalid Magic Num]
以下症状被归因于这一问题:
(A)RDBMS>=12.1
(B)告警日志中出现以下错误:
ORA-00600: internal error code, arguments: [pmuocon2#1: invalid magic num]
(C)事件上下文转储将类似于:
----- Incident Context Dump -----
Address: 0x000000002B1B3548
Incident ID: 181526
Problem Key: ORA 600 [pmuocon2#1: invalid magic num]
Error: ORA-600 [pmuocon2#1: invalid magic num] [] [] [] [] [] [] [] [] [] [] []
[00]: dbgexProcessError [diag_dde]
[01]: dbgeExecuteForError [diag_dde]
[02]: dbgePostErrorKGE [diag_dde]
[03]: dbkePostKGE_kgsf [rdbms_dde]
[04]: kgeadse []
[05]: kgerinv_internal []
[06]: kgerinv []
[07]: kgeasnmierr []
[08]: pmuocon2_con_recur []<-- Signaling
[09]: pmuocon []
[10]: kkxmsagif [PROGINT_PLSQL]
[11]: evapls []
[12]: evaopn2 []
[13]: qximeop_fbk []
[14]: qximeop []
[15]: qxuag_initself []
[16]: qxuageag []
[17]: qergsFetch [SQL_Execution]
[18]: rwsfcd []
[19]: qerltFetch [SQL_Execution]
[20]: insdlexe [DML]
[21]: insExecStmtExecIniEngine [DML]
[22]: insexe [DML]
[23]: opiexe [Time_Limit]
[24]: kpoal8 [PROGINT_MISC]
[25]: opiodr [OPI]
[26]: ttcpip []
[27]: opitsk [OPI]
[28]: opiino [OPI]
[29]: opiodr [OPI]
[30]: opidrv [OPI]
[31]: sou2o []
[32]: opimai_real [OPI]
[33]: opimai [OPI]
[34]: OracleThreadStart []
(D)失败的SQL被认为是不同的,并且倾向于使用“用户定义聚合函数”(UDAG)的复杂SQL语句。这个问题是断断续续的,以一种可控的方式看来是不可重复的。
致因
这是与用户定义聚合(UDAGS)相关的代码缺陷。
解决
1.检查平台和版本的补丁程序21519686。
2.升级到12.2,这将包含此bug的修复。
3.解决办法是通过设置以下方法禁用内存中聚合的处理:
_odci_aggregate_save_space = true
This hidden parameter will need to be added into the spfile/pfile (note the spfile should NEVER be edited directly).
The performance seen using this workaround would not be worse than in 11g.