在数据库的alert文件中发现了这个错误,这个bug似乎是由MERGE语句引起的。
错误信息如下:
Errors in file /u1/oracle/admin/repdb01/bdump/repdb01_j000_20925.trc:
ORA-00600: internal error code, arguments: [16164], [0], [], [], [], [], [], []
对于的trace文件中信息为:
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [16164], [0], [], [], [], [], [], []
Current SQL statement for this session:
MERGE /*+ append */ INTO
MIS2_USER U
USING (SELECT A.ID USER_ID,
A.CODE CODE,
A.ENABLE_FLAG USER_ENABLE_FLAG,
B.ENABLE_FLAG ORG_ENABLE_FLAG,
A.NAME USER_NAME,
B.NAME ORG_NAME,
C.DATA_ORG_ID ORG_ID,
A.CREATE_DATE CREATE_DATE
FROM GPO_USR_USER A, GPO_USR_ORG B, GPO_REG_ORG C
WHERE A.ORG_ID = B.ID
AND B.REG_ORG_ID = C.ID
AND C.FACTORY_FLAG = '1'
UNION ALL
SELECT A.ID USER_ID,
A.USER_CODE CODE,
A.ENABLE_FLAG USER_ENABLE_FLAG,
B.ENABLE_FLAG ORG_ENABLE_FLAG,
A.USER_NAME USER_NAME,
B.NAME ORG_NAME,
A.DEFAULT_ORGID ORG_ID,
A.CREATE_DATE CREATE_DATE
FROM USR_USER A, CAT_ORG B
WHERE A.DEFAULT_ORGID = B.ID
AND B.ORG_TYPE = '1') B
ON (U.USER_ID = B.USER_ID)
WHEN MATCHED THEN
UPDATE
SET U.CODE = B.CODE,
U.USER_ENABLE_FLAG = B.USER_ENABLE_FLAG,
U.ORG_ENABLE_FLAG = B.ORG_ENABLE_FLAG,
U.USER_NAME = B.USER_NAME,
U.ORG_NAME = B.ORG_NAME,
U.ORG_ID = B.ORG_ID
WHEN NOT MATCHED THEN
INSERT
(USER_ID,
CODE,
USER_ENABLE_FLAG,
ORG_ENABLE_FLAG,
USER_NAME,
ORG_NAME,
ORG_ID,
CREATE_DATE)
VALUES
(B.USER_ID,
B.CODE,
B.USER_ENABLE_FLAG,
B.ORG_ENABLE_FLAG,
B.USER_NAME,
B.ORG_NAME,
B.ORG_ID,
B.CREATE_DATE)
----- PL/SQL Call Stack -----
object line object
handle number name
6b1cea980 474 procedure MIS2.P_INIT_DATA
6a33fd260 1 anonymous block
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedmp()+328 CALL ksedst()+0 FFFFFFFF7FFF5350 ?
000000000 ? 000000000 ?
00000003E ?
FFFFFFFF7FFF5BE8 ?
1031D56C8 ?
kgeriv()+208 PTR_CALL 0000000000000000 000000000 ? 000103400 ?
0001035D9 ? 000102C00 ?
1035D9000 ? 1035D9C28 ?
kgeasi()+180 CALL kgeriv()+0 1035D9E88 ? 1036C7148 ?
错误SQL是一条MERGE语句,而查询METALINK的结果也发现,这个bug确实和MERGE有关,且影响的数据库版本就是9204,Oracle在10.1.0.2和9.2.0.5中改正了这个bug。
在Metalink文档Doc ID: 2754863.8中,描述了这个错误,不过并没有对这个错误进行过多的描述,在bug文档Bug No. 2754863中,只是包含了一个引发这个错误的例子,并没有详细说明导致这个错误的原因,而且这个例子很复杂,SQL使用了CURSOR加表函数的方式获取用来关联的数据源,在获取内部查询数据的时候还指定了ROWNUM。由于例子过于复杂,多个地方都可能引发这个错误,所以无法判断导致问题的原因。
看来metalink只能给出错误的描述,在不升级版本的情况,没有办法指望metalink中的信息来解决问题了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-526607/,如需转载,请注明出处,否则将追究法律责任。