解決ORA-600(16164)錯誤的過程(一)
在資料庫的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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解決ORA-600(16164)錯誤的過程(二)
- ORA-600(17069)錯誤的解決過程
- 一個 ExpressionChangedAfterItHasBeenCheckedError 錯誤的解決過程ExpressError
- ORA-2049錯誤解決過程
- 掉電引起的ORA-1172錯誤解決過程(一)
- sql server資料庫附加錯誤的解決過程SQLServer資料庫
- 解決儲存過程擷取錯誤的問題儲存過程
- ORA-600(2662)錯誤的重現和解決(一)
- 解決了一例Shutdown時碰到Ora-600錯誤的問題
- 解決掉電導致的ORA-600(4194)錯誤
- ORA-30012錯誤的解決過程
- 執行create table as 報ora-600的錯誤的解決方案
- tensorflow安裝使用過程錯誤及解決方法
- 掉電引起的ORA-1172錯誤解決過程(二)
- 掉電引起的ORA-1172錯誤解決過程(三)
- 一次刪除歸檔遇ORA-15028錯誤的解決過程
- ORA-600(kffmXpGet)錯誤
- ORA-600(2662)錯誤的重現和解決(二)
- 11g rac 安裝過程中常見錯誤解決辦法
- Windows 下 Laravel Mix 資源編譯過程以及產生的錯誤解決WindowsLaravel編譯
- ORA-03113 +0RA-07445 錯誤的痛苦解決過程
- ORA-03113 +0RA-07445 錯誤的痛苦解決過程
- sql出現結果集錯誤以及出現ora-600或者ora-7445錯誤的解決方法思路SQL
- 【轉】npm使用過程中的一些錯誤解決辦法及npm常用命令NPM
- 儲存過程中DDL錯誤一例儲存過程
- samba一個錯誤的解決辦法!Samba
- npm使用過程中的一些錯誤解決辦法及npm常用命令和技巧NPM
- ora-600一例的解決方法
- ORA-600(kcbgcur_1)錯誤GC
- ORA-600 [ttcgcshnd-1 ]錯誤GC
- ORA-600(kclgclk_7)錯誤GC
- ORA-600(kcbnew_3)錯誤
- ORA-600(qersqCloseRem-2)錯誤REM
- ORA-600(qctopn1)錯誤
- ORA-600(kcblasm_1)錯誤ASM
- ORA-600(qkaffsindex5)錯誤Index
- ORA-600(kghuclientasp_03)錯誤client
- ORA-600(ttcgcshnd-2)錯誤GC