ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-600 [kgmgchd1] and ORA-4031 While Running Select Statement [ID 1224393.1]

ORA-600 [kgmgchd1] and ORA-4031 While Running Select Statement [ID 1224393.1]

原创 Linux操作系统 作者:spider0283 时间:2012-02-07 11:59:01 0 删除 编辑

In this Document
  
Symptoms
  Cause
  Solution
  References


Applies to:

Oracle Server - Enterprise Edition - Version: 10.1.0.5 and later   [Release: 10.1 and later ]
Information in this document applies to any platform.

Symptoms

If we see the errors below in alert.log:


Sat Sep 18 03:02:44 2010
Errors in file /oracle/product/ora_5457.trc:
ORA-00600: internal error code, arguments: [kgmgchd1], [], [], [], [], [], [], []
Sat Sep 18 03:03:10 2010
Errors in file /oracle/product/admin/cjq0_1909.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","select job, nvl2(last_date, ...","Typecheck heap","kgghteInit")

In the trace file generated, in Call Stack Trace section, we can see one or more of the following functions:


kgmgchd <- xtypls <- qctopls <- qctcopn <- qctcpqb <- qctcpqbl


The call stack can vary depending on the affected object. In this specific case, it was demonstrated that ORA-4031 were a side effect of ORA-600 and implicit what caused ORA-600.


Cause


This issue is caused by a mismatch in the timestamp information with the dependent objects and invalid objects. It may not be a dictionary corruption problem.

This can also cause problems during upgrades and PLSQL validations.

1. Timestamp mismatch between dependent objects can be checked using the following script.:
select do.obj# d_obj,do.name d_name, do.type# d_type,
po.obj# p_obj,po.name p_name,
to_char(p_timestamp,'DD-MON-YYYY HH24:MI:SS') "P_Timestamp",
to_char(po.stime ,'DD-MON-YYYY HH24:MI:SS') "STIME",
decode(sign(po.stime-p_timestamp),0,'SAME','*DIFFER*') X
from sys.obj$ do, sys.dependency$ d, sys.obj$ po
where P_OBJ#=po.obj#(+)
and D_OBJ#=do.obj#
and do.status=1 /*dependent is valid*/
and po.status=1 /*parent is valid*/
and po.stime!=p_timestamp /*parent timestamp not match*/
order by 2,1;

2. Invalid objects can be checked using the following script.:
SELECT status, object_id, object_type, owner||'.'||object_name "OWNER.OBJECT"
FROM dba_objects
WHERE status != 'VALID'
ORDER BY 4,2;



Solution


1. If the query for timestamp mismatch reports any objects, then you can recompile or recreate these objects.

2. If the query for invalid objects reports any rows, validate all invalid objects using:

Note 300056.1 Debug and Validate Invalid Objects

References

NOTE:300056.1 - Debug and Validate Invalid Objects
返回页首返回页首

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/38267/viewspace-715743/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-29

  • 博文量
    194
  • 访问量
    609470