ON: Oracle 10.2.0.5,HP-UX IA64
数据库告警日志中抛出大量ORA-600错误:
Mon Apr 20 16:59:01 EAT 2015
Errors in file /oracle/app/oracle/admin/billdb/udump/billdb_ora_1091.trc:
ORA-00600: internal error code, arguments: [kqlnrc_1], [0xC000000521C72108], [], [], [], [], [], []
Mon Apr 20 16:59:03 EAT 2015
Errors in file /oracle/app/oracle/admin/billdb/udump/billdb_ora_1091.trc:
ORA-00600: internal error code, arguments: [kqlnrc_1], [0xC000000521C72108], [], [], [], [], [], []
Mon Apr 20 16:59:05 EAT 2015
Errors in file /oracle/app/oracle/admin/billdb/udump/billdb_ora_1091.trc:
ORA-00600: internal error code, arguments: [kqlnrc_1], [0xC000000521C72108], [], [], [], [], [], []
打开其相关联的trace日志文件,发现如下信息:
SO: c0000005bf0d5bb0, type: 3, owner: c0000005da8509e0, flag: INIT/-/-/0x00
(call) sess: cur c0000005dbc05590, rec c0000005dac320b8, usr c0000005dbc05590; depth: 0
----------------------------------------
SO: c00000056210ed80, type: 54, owner: c0000005bf0d5bb0, flag: INIT/-/-/0x00
LIBRARY OBJECT PIN: pin=c00000056210ed80 handle=c000000521c72108 mode=S lock=c0000005368eedd0
user=c0000005dbc05590 session=c0000005dbc05590 count=1 mask=0001 savepoint=0xc8e flags=[00]
LIBRARY OBJECT HANDLE: handle=c000000521c72108 mtx=c000000521c72238(0) lct=1 pct=1 cdp=0
name=COMM.ACCT_BALANCE@DBLINK_ACCT_COMM
hash=685c648164a45744a8c3533e23513816 timestamp=11-26-2010 00:36:08
namespace=TABL flags=REM/KGHP/TIM/SML/[02020000]
kkkk-dddd-llll=0000-0001-0001 lock=S pin=S latch#=4 hpc=0002 hlc=0002
lwt=c000000521c721b0[c000000521c721b0,c000000521c721b0] ltm=c000000521c721c0[c000000521c721c0,c000000521c721c0]
pwt=c000000521c72178[c000000521c72178,c000000521c72178] ptm=c000000521c72188[c000000521c72188,c000000521c72188]
ref=c000000521c721e0[c000000521c721e0,c000000521c721e0] lnd=c000000521c721f8[c000000521c721f8,c000000521c721f8]
LIBRARY OBJECT: object=c0000005c6c67790
type=SYNM flags=EXS/LOC[0005] pflags=[0000] status=INVL load=0
DATA BLOCKS:
data# heap pointer status pins change whr alloc(K) size(K)
----- -------- -------- --------- ---- ------ --- -------- --------
0 c00000051d433340 c0000005c6c678a8 I/P/A/-/- 0 NONE 00 0.37 1.09
于是我登陆到DBLINK DBLINK_ACCT_COMM连接到的远程数据库中查询该对象的有效性,结果发现该对象已经是VALID的了,应该是已经被重新编译过。
1 select owner,object_name,object_type,status from dba_objects where object_name='ACCT_BALANCE'
2* and owner='COMM'
OWNER OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ -------------------- ------------------- -------
COMM ACCT_BALANCE SYNONYM VALID
不过,该类问题的原因应该就在于此,因同义词对象失效所致。
MOS Note参考:How To Find The Object That Causing ORA-600 [kqlnrc_1] (文档 ID 1190673.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 10.2.0.4 and laterInformation in this document applies to any platform.
*** Checked for relevance on 26-Oct-2012 ***
GOAL
How to find the object that are causing the ORA-600 [kqlnrc_1] error.
Stack trace similar to this:
kqlnrc kgldpo0 kgldpo kglgbo kksaucd kksauc
SOLUTION
Do following steps:
1. In trace file:
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kqlnrc_1], [0x70000029A6C9410], [], [], [], [], [], []
2. Search for the second ORA-600 argument in the trace, in this case is it 70000029A6C9410:
LIBRARY OBJECT PIN: pin=7000002ac124020 handle=70000029a6c9410 mode=S lock=700000290321750
user=7000002d658fd38 session=7000002d658fd38 count=1 mask=0001 savepoint=0x79 flags=[00]
----------------------------------------
SO: 700000290321750, type: 53, owner: 70000028da74088, flag: INIT/-/-/0x00
LIBRARY OBJECT LOCK: lock=700000290321750 handle=70000029a6c9410 mode=S
call pin=7000002ac124020 session pin=0 hpc=0000 hlc=0000
htl=7000002903217d0[7000002bece2e98,7000002bece2e98] htb=7000002bece2e98 ssga=7000002b209aff0
user=7000002d658fd38 session=7000002d658fd38 count=1 flags=PNC/[0400] savepoint=0x79
LIBRARY OBJECT HANDLE: handle=70000029a6c9410 mtx=70000029a6c9540(0) cdp=0
name=PUBLIC.TEST
hash=4987a5716aa11b60f3aa1e2633f5d9e6 timestamp=01-07-2006 01:42:13
namespace=TABL flags=REM/KGHP/TIM/SML/[02020000]
kkkk-dddd-llll=0000-0001-0001 lock=S pin=S latch#=11 hpc=0dbc hlc=0dbc
lwt=70000029a6c94b8[70000029a6c94b8,70000029a6c94b8] ltm=70000029a6c94c8[70000029a6c94c8,70000029a6c94c8]
pwt=70000029a6c9480[70000029a6c9480,70000029a6c9480] ptm=70000029a6c9490[70000029a6c9490,70000029a6c9490]
ref=70000029a6c94e8[70000029a6c94e8,70000029a6c94e8] lnd=70000029a6c9500[70000029a6c9500,70000029a6c9500]
LIBRARY OBJECT: object=7000002b05b4a48
type=SYNM flags=EXS/LOC[0005] pflags=[0000] status=INVL load=0
This shows that object PUBLIC.TEST is invalid in the library cache.
3. Query all objects with name TEST:
SQL> SELECT object_name,object_type,owner,status
FROM dba_objects
WHERE object_name='TEST'
OBJECT_NAME OBJECT_TYPE OWNER STATUS
-------------- ------------- ---------------- -------
TEST SYNONYM PUBLIC VALID
TEST FUNCTION PUB VALID
TEST SYNONYM SCOTT VALID
4. Compile the synonym owned by public.