RAT(Oracle Real Application Testing)時ORA 600報錯處理

xfhuangfu發表於2022-09-24

一、基本概念介紹

    Oracle Real Application Testing 選件和 Oracle DB 的測試資料管理功能有助於確保資料 庫更改的完整性並管理測試資料。使用 Oracle Real Application Testing 選件可以執行實 際測試。透過捕獲生產工作量並在生產部署之前評估系統更改對這些工作量的影響, Oracle Real Application Testing 可最大程度地降低與系統更改關聯的不穩定性風險。 SQL 效能分析程式和資料庫重放是 Oracle Real Application Testing 的關鍵元件。
根據所測試的系統更改的性質和影響以及將要執行測試的系統型別,可以使用其中一個或兩個元件來執行測試。
SQL 效能分析程式 (SPA)
     SPA 是在以下情況下可以選用的一個工具:在資料庫或作業系統級別進行更改後,您嘗 試確定效能將發生變化的 SQL 語句。SQL 效能分析程式將不同來源的 SQL 語句捕獲到 一個 SQL 最佳化集 (STS) 中,這些來源包括遊標快取記憶體、自動工作量資料檔案庫 (AWR) 和現有的 SQL 最佳化集。透過孤立地執行每條 SQL 語句來分析 STS。執行順序由最佳化集 中語句的順序而定。STS 包含繫結變數、執行計劃和執行上下文資訊。使用 SQL 效能分 析程式時,您將執行 STS 並捕獲效能統計資訊,在更改系統後再次執行 STS,然後比較 兩次結果。SQL 效能分析程式不考慮 SQL 語句的相互影響。
Database Replay資料庫重放
     如果發生了影響廣泛的更改,如作業系統或資料庫版本更改,或者必須測試總體系統效能, 您應將“資料庫重放”作為首選的工具。“資料庫重放”捕獲一個時間段內的實際工作量 以及效能統計資訊。先是針對目標系統處理工作量,然後重放工作量。重放選項包括重放 速度、考慮時間、維護事務處理順序(同步)及其他。重放工作量後,可針對原始捕獲或 另一個重放會話來比較效能統計資訊、資料偏差和錯誤數。可以使用 AWR 和重放報告。

Oracle Real Application Testing在以下場景非常有用
• 資料庫升級
• 實施最佳化建議
• 方案更改
• 蒐集統計資訊
• 更改資料庫引數
• 更改作業系統和硬體

二、環境資訊

作業系統:Linux 7.9
資料庫版本及架構: Oracle 11.2.0.4 RAC 

三、問題描述

Prepare the Replay時失敗,報ORA-00600: internal error code, arguments: [kecubBroadcast:msgctx holder:]

四、解決方案

1、停掉RAC一個節點,進行執行RAT;
2、Prepare the Replay時
設定同步模式,connect_time_scale和think_time_scale使用預設值。
execute dbms_workload_replay.prepare_replay (synchronization => TRUE);

五、日誌分析

資料庫日誌alert_orcl1.log  

資料庫日誌忠報錯資訊是ORA-00600: internal error code, arguments: [kecubBroadcast:msgctx holder:], [129], [44],我們在orcl1_ora_36473.trc和orcl1_ora_36473_i648765.trc中進一步檢視資訊
...
Mon Sep 19 13:30:44 2022Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_36473.trc  (incident=648765):ORA-00600: internal error code, arguments: [kecubBroadcast:msgctx holder:], [129], [44], [], [], [], [], [], [], [], [], []Incident details in: /u01/app/oracle/diag/rdbms/orclzdata/orcl1/incident/incdir_648765/orcl1_ora_36473_i648765.trc
...

orcl1_ora_36473.trc
...
*** 2022-09-19 13:20:37.143*** SESSION ID:(4978.221) 2022-09-19 13:20:37.143*** CLIENT ID:() 2022-09-19 13:20:37.143*** SERVICE NAME:(orclzdata) 2022-09-19 13:20:37.143*** MODULE NAME:(WRC$) 2022-09-19 13:20:37.143*** ACTION NAME:() 2022-09-19 13:20:37.143 2022-09-19 13:20:37.143107 :kecps.c@7600: kecpsThreadFailureLocal: Handling thread failure for file_id 2874062372111143347*** 2022-09-19 13:30:44.242Incident 648765 created, dump file: /u01/app/oracle/diag/rdbms/orcl/orcl1/incident/incdir_648765/orcl1_ora_36473_i648765.trcORA-00600: internal error code, arguments: [kecubBroadcast:msgctx holder:], [129], [44], [], [], [], [], [], [], [], [], []
...
orcl1_ora_36473_i648765.trc

Dump continued from file: /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_36473.trcORA-00600: internal error code, arguments: [kecubBroadcast:msgctx holder:], [129], [44], [], [], [], [], [], [], [], [], []========= Dump for incident 648765 (ORA 600 [kecubBroadcast:msgctx holder:]) ========*** 2022-09-19 13:30:44.243dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)----- Current SQL Statement for this session (sql_id=dxqnuun5s1055) -----begin :1 := dbms_workload_replay.client_connect( dbms_workload_replay.KECP_CLIENT_CONNECT_THRDFAIL, :2 ); end;----- PL/SQL Stack ---------- PL/SQL Call Stack -----  object      line  object  handle    number  name0x4b333bc700      1907  package body SYS.DBMS_WORKLOAD_REPLAY0x4b333bc700      8662  package body SYS.DBMS_WORKLOAD_REPLAY0x4b333bc700      8848  package body SYS.DBMS_WORKLOAD_REPLAY0x4b309f2160         1  anonymous block

...

從orcl1_ora_36473_i648765.trc可以看到ORA-600報錯是執行DBMS_WORKLOAD_REPLAY包觸發的。

-the end-


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-2916088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章