oracle 10046事件故障診斷一例

路途中的人2012發表於2017-12-28
什麼是事件?
EVENTS are primarily used to produce additional diagnostic information
when insufficient information is available to resolve a given problem.
An EVENT is a special item used by the Oracle server to do one of the following:
event是oracle伺服器用於下述三種目的的一個特殊物件:
Change behaviour 改變狀態(行為)
Enable collection of trace or debug information 開啟收集trace或debug資訊
Enable additional error checking or similar 開啟額外錯誤資訊檢查或類似目的

什麼是10046事件?
oracle除錯事件之一,幫助我們解析 一條/多條SQL、PL/SQL語句的執行狀態 ,這些狀態包括 :Parse/Fetch/Execute三個階段中遇到的等待事件、消耗的物理和邏輯讀、CPU時間、執行計劃等等。
[oracle@hhu mesg]$ oerr ora 10046
10046, 00000, "enable SQL statement timing"
// *Cause:
// *Action:


10046事件的幾種典型用法
單條sql除錯
多條sql除錯

案例
    透過awr報告或直接查詢到該sql語句對應的sql id,然後在全域性開啟10046事件,追蹤單條sql執行情況,同時請開發人員用zabbix監控,一旦發現該語句的執行有耗時超過10s級別的,立刻反饋。開發人員反饋捕捉到10s級別的執行情況後,關閉10046事件。進入到trace目錄,用tkprof工具處理兩份.trc檔案,一份正常耗時,一份超時的,具體內容見另外兩個文件。對比發現,兩次sql執行的執行計劃一致,但是超時的會處理上百萬行資料,訪問十幾萬個塊,而正常耗時的則只是處理幾十行資料。開發人員繼而列印出語句中的繫結變數,發現超長耗時與具體繫結變數值相關。問題到此交與開發人員解決。

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

相關文章