ORACLE ORA-00600: 內部錯誤程式碼, 引數: [kokbcvb1]與merge into
最近,一地市Oracle跑一個Job報錯,報錯內容如下:
作業系統:windows server 2008R2
資料庫版本:oracle 11.2.0.1
報錯內容:
Fri Aug 11 11:08:14 2017
Errors in file d:\app\administrator\diag\rdbms\bmi\bmi\trace\bmi_ora_2376.trc (incident=64225):
ORA-00600: 內部錯誤程式碼, 引數: [kokbcvb1], [], [], [], [], [], [], [], [], [], [], []
Incident details in: d:\app\administrator\diag\rdbms\bmi\bmi\incident\incdir_64225\bmi_ora_2376_i64225.trc
檢視告警日誌提示的trc檔案bmi_ora_2376_i64225.trc,報錯核心內容如下:
Dump file d:\app\administrator\diag\rdbms\bmi\bmi\incident\incdir_64225\bmi_ora_2376_i64225.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Windows NT Version V6.1 Service Pack 1
CPU : 32 - type 8664, 16 Physical Cores
Process Affinity : 0x0x0000000000000000
Memory (Avail/Total): Ph:88095M/130883M, Ph+PgF:218580M/261764M
Instance name: bmi
Redo thread mounted by this instance: 1
Oracle process number: 78
Windows thread id: 2376, image: ORACLE.EXE (SHAD)
*** 2017-08-11 11:08:14.729
*** SESSION ID:(352.202) 2017-08-11 11:08:14.729
*** CLIENT ID:() 2017-08-11 11:08:14.729
*** SERVICE NAME:(bmi) 2017-08-11 11:08:14.729
*** MODULE NAME:(PL/SQL Developer) 2017-08-11 11:08:14.729
*** ACTION NAME:(Primary Session) 2017-08-11 11:08:14.729
Dump continued from file: d:\app\administrator\diag\rdbms\bmi\bmi\trace\bmi_ora_2376.trc
ORA-00600: 內部錯誤程式碼, 引數: [kokbcvb1], [], [], [], [], [], [], [], [], [], [], []
========= Dump for incident 64225 (ORA 600 [kokbcvb1]) ========
*** 2017-08-11 11:08:14.729
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=14qa0m0uufbbv) -----
MERGE INTO DW_BILL T1 USING (SELECT B.HIS_ID, SUM(CASE WHEN B.REJECT_MONEY >= B.CAN_REJECT_MONEY THEN B.CAN_REJECT_MONEY ELSE B.REJECT_MONEY END) REJECT_MONEY, SUM(B.RULE_TYPE) RULE_TYPE, B.TABLE_PAR FROM (SELECT T.HIS_ID, T.DETAIL_ID, T.CAN_REJECT_MONEY, SUM(T.REJECT_MONEY) REJECT_MONEY, SUM(TO_NUMBER(T.RULE_TYPE)) RULE_TYPE, T.TABLE_PAR FROM TMP_DEDUCTIONPLAN_BILLDETAIL T GROUP BY T.HIS_ID, T.DETAIL_ID, T.CAN_REJECT_MONEY, T.TABLE_PAR) B GROUP BY B.HIS_ID, B.TABLE_PAR) T2 ON (T1.HISID = T2.HIS_ID AND T1.TABLE_PAR = T2.TABLE_PAR AND T1.TABLE_PAR >= :B2 AND T1.TABLE_PAR < :B1 ) WHEN MATCHED THEN UPDATE SET T1.BMI_NOPAY = CASE WHEN T1.BMI_NOPAY + T2.REJECT_MONEY >= T1.BMI_CONVERED_AMOUNT THEN T1.BMI_CONVERED_AMOUNT ELSE T1.BMI_NOPAY + T2.REJECT_MONEY END, T1.RULETYPE = CASE WHEN T2.RULE_TYPE > 0 THEN '1' ELSE T1.RULETYPE END, T1.AUDIT_RESULT_F = '3', T1.AUDIT_RESULT_S = '3', T1.ANDIT_MANU_STATUS = '3', T1.ANDIT_MANU_DATE = SYSDATE
----- PL/SQL Stack -----
----- PL/SQL Call Stack -----
object line object
handle number name
0000000E1719FA18 111 package body BMI.PKG_D_REALMONEY_SUM
0000000E1719FA18 58 package body BMI.PKG_D_REALMONEY_SUM
0000000E1719FA18 8 package body BMI.PKG_D_REALMONEY_SUM
0000000E26CEDB20 15 package body BMI.PKG_DEDUCTION_REALMONEY
0000000E2F232798 156 package body BMI.PKG_DEDUCTION_COMMON
0000000E1E7739A0 1 anonymous block
0000000E1717C1A8 651 package body SYS.DBMS_IJOB
0000000E26CEF490 284 package body SYS.DBMS_JOB
0000000E0F00AEE8 1 anonymous block
根據trc檔案提示,ORA-00600 [kokbcvb1] 是如下SQL引起的:
MERGE INTO DW_BILL T1
USING (SELECT B.HIS_ID,
SUM(CASE
WHEN B.REJECT_MONEY >= B.CAN_REJECT_MONEY THEN
B.CAN_REJECT_MONEY
ELSE
B.REJECT_MONEY
END) REJECT_MONEY,
SUM(B.RULE_TYPE) RULE_TYPE,
B.TABLE_PAR
FROM (SELECT T.HIS_ID,
T.DETAIL_ID,
T.CAN_REJECT_MONEY,
SUM(T.REJECT_MONEY) REJECT_MONEY,
SUM(TO_NUMBER(T.RULE_TYPE)) RULE_TYPE,
T.TABLE_PAR
FROM TMP_DEDUCTIONPLAN_BILLDETAIL T
GROUP BY T.HIS_ID,
T.DETAIL_ID,
T.CAN_REJECT_MONEY,
T.TABLE_PAR) B
GROUP BY B.HIS_ID, B.TABLE_PAR) T2
ON (T1.HISID = T2.HIS_ID AND T1.TABLE_PAR = T2.TABLE_PAR AND T1.TABLE_PAR >= :B2 AND T1.TABLE_PAR < :B1)
WHEN MATCHED THEN
UPDATE
SET T1.BMI_NOPAY = CASE
WHEN T1.BMI_NOPAY + T2.REJECT_MONEY >= T1.BMI_CONVERED_AMOUNT THEN
T1.BMI_CONVERED_AMOUNT
ELSE
T1.BMI_NOPAY + T2.REJECT_MONEY
END,
T1.RULETYPE = CASE
WHEN T2.RULE_TYPE > 0 THEN
'1'
ELSE
T1.RULETYPE
END,
T1.AUDIT_RESULT_F = '3',
T1.AUDIT_RESULT_S = '3',
T1.ANDIT_MANU_STATUS = '3',
T1.ANDIT_MANU_DATE = SYSDATE
關於ORA-00600 [kokbcvb1] ,oracle 官方有篇文件(文件 ID 1182535.1)提到是Bug 9471103 引起的:
Merge Query Failed with Ora-00600: [Kokbcvb1] (文件 ID 1182535.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 10.2.0.4 to 11.2.0.2.0 [Release 10.2 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 29-Feb-2012***
SYMPTOMS
A merge query failed with the error below:
ORA-600: internal error code, arguments: [kokbcvb1], [], [], [], [], []
For example :
merge into X USING (select a col1,'B' col2,3 col3,...
Even with and applied, the problem still reproduces.
When "_optimizer_push_pred_cost_based"=false; the statement fails with
ORA-2070: database does not support antijoin
With "_subquery_pruning_enabled"=false; statement finishes with
0 rows merged.
CAUSE
This could possibly be due to MERGE QUERY FAILED WITH ORA-600 [KOKBCVB1] which was closed as duplicate of unpublished Bug 9757249 ORA-600 [KOKBCVB1]
SOLUTION
1. The fix for Unpublished Bug 9757249 is included in 11.2.0.2 and above. Therefore, please upgrade to 11.2.0.2 or higher.OR
2. Apply one off if available on My Oracle Support for your Oracle version and platform. If a patch is not available, please log a Service Request with Oracle Support to assist you.
從提取到的報錯資訊,與bug 9471103吻合,處理方法是:應用補丁包patch 9757249或者升級資料庫版本到11.2.0.2以上
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2143393/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-00600: 內部錯誤程式碼, 引數: [19004]
- 遇到ORA-00600: 內部錯誤程式碼, 引數: [kzsrgpw]
- ORA-00600: 內部錯誤程式碼, 引數: [kcbnew_3]
- ORA-00600: 內部錯誤程式碼, 引數: [qcisSetPlsqlCtx:tzi init]SQL
- ORA-00600: 內部錯誤程式碼, 引數: [kqlnrc_1]
- ORA-00600: 內部錯誤程式碼, 引數: [qertbFetchByRowID], [], [],
- ORA-00600: 內部錯誤程式碼,引數: [6122]
- ORA-00600: 內部錯誤程式碼, 引數: [kolaslGetLength-1], [], [], [], [], [], [], []
- ORA-00600: 內部錯誤程式碼, 引數: [kcbchg1_14]
- ORA-00600: 內部錯誤程式碼,引數: [kcbgtcr_12], [1], [], [], [], [], [], []
- ORA-00600:內部錯誤程式碼,引數:[qertbFetchByRowID],[],[],[],[],[],[],[]分析與處理
- ORA-00600: 內部錯誤程式碼, 引數: [12333]
- ORA-00600: 內部錯誤程式碼, 引數: [kcblasm_1], [103], [], [], [], [], [], []ASM
- ORA-00600: 內部錯誤程式碼,引數: [6002], [6], [28], [1], [52], [], [], []
- ORA-00600: 內部錯誤程式碼, 引數: [ktspScanInit-l1], [], [], [], [], [], [], []
- ORA-00600: 內部錯誤程式碼, 引數: [kcrf_pvt_strand_bind1]CRF
- ORA-00600: 內部錯誤程式碼, 引數: [qosdDirRead: dircnt mismatch], [809], [808],
- 在刪除使用者時報ORA-00600: 內部錯誤程式碼, 引數: [13011]..
- ORA-00600: 內部錯誤程式碼, 引數: [ktspfmdb:objdchk_kcbnew_3], [9], [93111], [4],OBJ
- ORA-00600:內部錯誤程式碼,引數:[32695], [hash aggregation can't be done]的分析處理
- ORA-07445和ORA-00600系統內部錯誤查錯方法
- 版本9204中的內部錯誤:ORA-00600[qmxiUnpPacked2]
- oracle錯誤之ORA-00600Oracle
- 小程式內引數和掃碼引數統一
- git merge合併程式碼時各引數含義Git
- ORACLE常見錯誤程式碼的分析與解決(轉)Oracle
- mybatis引數型別錯誤MyBatis型別
- ORA-00600錯誤分析
- 【ERROR】Oracle列印錯誤程式碼解釋ErrorOracle
- 除錯 Docker 容器內部程式除錯Docker
- PHP HTTP 500 - 內部伺服器錯誤PHPHTTP伺服器
- 伺服器內部錯誤500的原因伺服器
- ora-600內部錯誤的型別型別
- 無法顯示頁面,因為發生內部程式錯誤
- REP-3000: 啟動 Oracle Toolkit 時發生內部錯誤.Oracle
- Oracle內部錯誤:ORA-07445[_memcpy()+52] [SIGSEGV]一例OraclememcpyGse
- 一個SQL語句引發的ORA-00600錯誤排查(二)SQL
- 一個SQL語句引發的ORA-00600錯誤排查(一)SQL