RAC環境並行insert,當觸發內部清理回收站時導致ORA-00600 [ktssdrp1]
Errors in file /u01/app/oracle/diag/rdbms/btas/btas1/trace/btas1_p001_130280.trc (incident=176570):
ORA-00600: ????????????????????????, ????????: [ktssdrp1], [0], [0], [0], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/btas/btas1/incident/incdir_176570/btas1_p001_130280_i176570.trc
Wed Oct 08 05:32:28 2014
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Wed Oct 08 05:32:28 2014
Errors in file /u01/app/oracle/diag/rdbms/btas/btas1/trace/btas1_ora_122776.trc (incident=176650):
ORA-00600: ????????????????????????, ????????: [ktssdrp1], [0], [0], [0], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/btas/btas1/incident/incdir_176650/btas1_ora_122776_i176650.trc
Wed Oct 08 05:32:28 2014
Dumping diagnostic data in directory=[cdmp_20141008053228], requested by (instance=1, osid=130280 (P001)), summary=[incident=176570].
語句如下
INSERT INTO XXXXXX
(一些欄位)
SELECT 一些欄位
FROM t1 B, t2 A
WHERE A.c1 = B.c1(+)
AND A.c2 >= :B2
AND A.c2 <= :B1
GROUP BY 一些欄位
INSERT INTO XXXXXX
(一些欄位)
SELECT 一些欄位
FROM t1 B, t2 A
WHERE A.c1 = B.c1(+)
AND A.c2 >= :B2
AND A.c2 <= :B1
GROUP BY 一些欄位
第一個trace中充斥著大量的kdpurtab: err=604 goc1=604 goc2=54 goc3=0
ora604的說明如下
00604, 00000, " error occurred at recursive SQL level %s "
// *Cause: An error occurred while processing a recursive SQL statement
// (a statement applying to internal dictionary tables).
// *Action: If the situation described in the next error on the stack
// can be corrected, do so; otherwise contact Oracle Support.
第二個trace裡有這條遞迴sql
*** 2014-10-08 05:31:55.654
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=2y9dn9t14fkns) -----
drop table "BTAS"."BIN$81woU0P6icPgQwNSAQrABg==$0" purge
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=2y9dn9t14fkns) -----
drop table "BTAS"."BIN$81woU0P6icPgQwNSAQrABg==$0" purge
metalink上有相關Bug
Ora-00600 [Ktssdrp1] during DROP TABLE (Doc ID 1329358.1)
=== ODM Issue Clarification ===
ORA-00600 with arguments: [ktssdrp1].
The Failing query looks something similar to :
drop table "ODI_UPD"."BIN$pDWO7q1Bc+/gQBQKChJoqQ==$0" purge;
CALL STACK
===========
ktssdrp_segment dtbdrp dtbdrv opiexe opiosq0 opiall0 opikpr opiodr PGOSF175_rpidrus skgmstack rpiswu2 kprball kdpurtab kdpurts kdpursp ktsx_purge_bin ktsscrseg ktssctr_segment1 ktssctr_segment ktrsexec ktspcfs ktsscf_segment kkpoctds_crt_tmp_data_seg qespcNpSegmentCreat qesmaGetTblSeg_INT qesmaInitMetadataCt x_Int opiexe
下面是 trace中的coll stack,和bug 文件裡很像
[00]: dbgexProcessError [diag_dde]
[01]: dbgeExecuteForError [diag_dde]
[02]: dbgePostErrorKGE [diag_dde]
[03]: dbkePostKGE_kgsf [rdbms_dde]
[04]: kgeadse []
[05]: kgerinv_internal []
[06]: kgerinv []
[07]: kgeasnmierr []
[08]: ktssdrp_segment []
[09]: dtbdrp [SQL_DDL]
[10]: dtbdrv [SQL_DDL]
[11]: opiexe []
[12]: opiosq0 []
[13]: opiall0 []
[14]: opikpr []
[15]: opiodr []
[16]: rpidrus []
[17]: skgmstack []
[18]: rpiswu2 []
[19]: kprball []
[20]: kdpurtab []
[21]: kdpurts []
[22]: kdpursp []
[23]: ktsx_purge_bin []
[24]: ktsxssr_sadd []
[25]: ktrsexec []
[26]: ktelwbl2 []
[27]: kdblba [DIRPATH_LOAD]
[28]: kdblGetBlockDba [DIRPATH_LOAD]
[29]: kdblgb [DIRPATH_LOAD]
[30]: kdblailb [DIRPATH_LOAD]
[31]: kdblai [DIRPATH_LOAD]
[32]: klclil1r [DIRPATH_LOAD]
[33]: qerltRop [SQL_Execution]
[34]: qerghFetch [SQL_Execution]
[35]: rwsfcd []
[36]: qerltFetch [SQL_Execution]
[37]: qertqoFetch [Parallel_Execution]
[38]: qerpxSlaveFetch [Parallel_Execution]
[39]: qerpxFetch [Parallel_Execution]
[40]: insdlexe [DML]
[41]: insExecStmtExecIniEngine [DML]
另一份 bug報告裡,關於merge語句的,call stack和我們的insert語句非常像
Bug 18192858 : INTERNAL ERROR MAY OCCUR WHEN RUNNING MERGE STATEMENT
DIAGNOSTIC ANALYSIS:
--------------------
Error is detected by following SQL.
drop table "HXJFDB01"."BIN$8Q0V5v4Q66/gQ1FSPZYwFw==$0" purge
"recyclebin" parameter is enabled, and above SQL is try to delete the
table in recyclebin.
問題原因也是 drop回收站裡的表,call stack也類似
TACK TRACE:
------------
kgeasnmierr()+143 ktssdrp_segment()+730 dtbdrp()+523
dtbdrv()+1800 opiexe()+21676 opiosq0()+3865
opiall0()+5478 opikpr()+536 opiodr()+916
rpidrus()+206 skgmstack()+148 rpiswu2()+633
kprball()+1236 kdpurtab()+900 kdpurts()+2694
kdpursp()+153 ktsx_purge_bin()+288 ktsscrseg()+2497
ktssctr_segment1()+1073 ktssctr_segment()+230 ktrsexec()+529
ktspcfs()+148 ktsscf_segment()+151 qerlt_lsa()+1413
klclil1r()+427 qerltRop()+438 qerusRop()+631
qersoFetch()+491 qerusFetch()+723 qertqoFetch()+406
qerpxSlaveFetch()+1781 qerpxFetch()+12329 upsexe()+3147
opiexe()+10221 kpoal8()+2190 opiodr()+916
kpoodr()+648 upirtrc()+2497 kpurcsc()+93
kpuexec()+10802 OCIStmtExecute()+34 kxfxsStmtExecute()+222
kxfxsExecute()+389 kxfxsp()+617 kxfxmai()+671
kxfprdp()+1470 opirip()+908 opidrv()+598
sou2o()+98 opimai_real()+261 ssthrdmain()+252
main()+196 __libc_start_main()+244 _start()+36
另又有一個bug報告說這個bug只存在於開啟並行寫的RAC環境。
Bug 18192858 - ORA-600 [ktssdrp1] on a MERGE statement in a RAC environment (Doc ID 18192858.8)
This bug is only relevant when using Real Application Clusters (RAC) and Parallel Query (PQO)
ORA-600 [ktssdrp1] can occur when running a MERGE statement using PDML in a RAC environment.
This bug is only relevant when using Real Application Clusters (RAC) and Parallel Query (PQO)
ORA-600 [ktssdrp1] can occur when running a MERGE statement using PDML in a RAC environment.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26239116/viewspace-1391950/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RAC環境中修改系統時間可能導致SRVCTL命令失敗
- 修改系統時間導致RAC環境的一個例項重啟
- RAC環境對並行查詢的支援並行
- RAC環境關閉CLUSTER後導致連線緩慢
- 【RAC】因清理不完整導致RAC ASM例項建立失敗ASM
- 並行設定不當導致資料處理速度變慢並行
- 併發insert操作導致的dead lock
- DDL觸發器設定導致DDL無法執行(二)觸發器
- DDL觸發器設定導致DDL無法執行(一)觸發器
- 第三篇 編譯環境與執行環境不一致會導致class檔案執行失敗編譯
- Linux徹底清理Oracle 11g RAC環境方案LinuxOracle
- RAC環境單獨節點插入資料也會導致全域性等待(二)
- RAC環境單獨節點插入資料也會導致全域性等待(一)
- 搭建go環境並執行Go
- 使用ScopeGuard在執行環境中監測內部變數 (轉)變數
- wpf popup導致MouseLeftButtonUp無法觸發
- ORACLE RAC叢集大範圍delete大表與insert&update同時執行導致活動會話數飆升Oracledelete會話
- 網路中斷導致RAC環境所有節點監聽lsnr自動關閉
- 搭建RAC時配置scanip的DNS環境DNS
- RAC環境調整系統時間
- 在Sail環境中使用passport密碼授權時CURL本地環境導致PHP程式卡死問題AIPassport密碼PHP
- 定位rac環境中某條sql執行時間過長SQL
- Oracle 回收站清理Oracle
- Oracle目錄由於TFA觸發bug導致jdb檔案未自動清理引起空間不足Oracle
- insert變數太多導致例項重啟ORA-00600、ORA-01006變數
- 【爬坑】.Net編譯環境導致的問題編譯
- asm例項自動dismount導致rac一個節點當機ASM
- Fastclick 導致click事件觸發兩次的問題AST事件
- 路由懶載入 在開發環境中導致更新程式碼時間變長得解決方案路由開發環境
- 【譯】JS執行時環境JS
- Redo內部解析-Multi Rows Insert (八)
- oracle RAC 環境解決sequence 不一致問題Oracle
- 包含觸發器的LOB表執行IMP導致EMPTY_LOB變為空觸發器
- VC編譯ADO的開發環境和客戶環境的細微差別可能導致的失敗 (轉)編譯開發環境
- 如何成功清理重建CloudStack環境薦Cloud
- mysql的新建索引會導致insert被lockedMySql索引
- DELETE資料導致INSERT邏輯讀增加delete
- MySQL insert的內部操作流程介紹MySql