10046事件
10046 event
如果你對oracle效能調優很感興趣或者比較專長,那麼你對oracle的10046事件一定不會陌生。10046event是oracle用於系統效能分析時的一個最重要的事件。當啟用這個事件後,將通知oracle kernel追蹤會話的相關即時資訊,並寫入到相應trace檔案中。這些有用的資訊主要包括sql是如何進行解析,繫結變數的使用情況,會話中發生的等待事件等
10046event 可分成不同的級別(level),分別追蹤記錄不同程度的有用資訊。對於這些不同的級別,應當注意的是向下相容的,即高一級的trace資訊包含低於此級的所有資訊。
10046event的追蹤級別大致有:
level 1:跟蹤sql語句,包括解析、執行、提取、提交和回滾等。
level 4:包括變數的詳細資訊
level 8:包括等待事件
level 12:包括繫結變數與等待事件
其中,level 1相當於開啟了sql_trace
10046event的啟用和關閉:
前提條件:(先確保要event的會話環境符合條件)
1、必須確保timed_statistics為TRUE,這個引數可以在會話級上進行修改。
2、為了確保trace輸出能夠完整進行,還要調整此會話對trace檔案大小的限制,一般將此限制取消,即將max_dump_file_size設定為UNLIMITED,或者設定為一個很大的闕值。
在滿足了上述條件後,就可以啟用10046event對會話進行後臺跟蹤了。
這裡還有幾種方式來啟用10046event:
一種是在當前會話啟用event,可以利用alter session + 事件名稱 + level,
如:sql>alter session set event ‘10046 trace name context forever, level 12’;
另外一種是啟用別的會話進行event跟蹤,可以利用oracle提供的dbms_system來完成。
如:sql>exec dbms_system.set_ev(sid,serial#,10046,12,’’);
注意:
sql>exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
相當於開啟了sql_trace。
event的關閉:
可以在透過下面的語句來關閉當前會話的event:
sql>alter session set event ‘10046 trace name context off’;
也可以利用dbms_system包來關閉某個會話的event:
sql>execute dbms_system.set_ev(sid,serial#,0,’’);
這裡應當值得一提的是,TRACE將消耗相當的系統資源,因此我們在使用TRACE的時候應當慎重。對於正式的系統,應當只在必要的時候進行TRACE操作,並且應當及時關閉。
當利用事件trace完當前或某個session後,接下來我們的工作就是找到oracle生成的trace了。Oracle的初始化檔案中user_dump_dest引數的設定將決定trace檔案的生成位置。
從trace檔案中查詢和發現有用的資訊,然後尋找必要的效能調整點並進行相應的調整:
大部分情況下,透過10046事件trace到檔案裡的資訊包含了此會話中存在的效能問題,可以根據trace到的等待事件、SQL語句執行情況以及繫結變數的使用情況來進行分析和查詢。
oracle提供了一個工具tkprof來對trace檔案進行格式的翻譯,以便trace檔案中記錄的資訊能夠被我們容易掌握和獲取。
小知識:
檢查當前會話的sql_trace狀態或級別:
SQL>set serveroutput on
2 declare i_event number;
3 begin
3 sys.dbms_system.read_ev(10046,i_event);
4 dbms_output.put_line(‘the session sql_trace level is: ‘||i_event);
5 end;
6 /
the session sql_trace level is: 12
PL/SQL 過程已成功完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1004009/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 10046事件概述事件
- 10046事件演示事件
- 10046事件(轉)事件
- 10046事件詳解事件
- 設定10046事件事件
- 關於10046事件事件
- 10046 事件 與 10053 事件事件
- sql_trace and 10046事件SQL事件
- Oracle SQL Trace 和 10046 事件OracleSQL事件
- Oracle SQL Trace 和10046 事件OracleSQL事件
- oracle event 10046 level_事件Oracle事件
- oracle 10046 事件使用方法Oracle事件
- 10046事件跟蹤會話sql事件會話SQL
- ORACLE 10046事件詳解-轉載Oracle事件
- 深入理解Oracle除錯事件:10046事件詳解Oracle除錯事件
- 如何使用SQL_TRACE和10046事件SQL事件
- 在SQL*PLUS下使用10046事件例子SQL事件
- 啟用跟蹤事件10046---06事件
- 跟蹤SQL - SQL Trace 及 10046 事件SQL事件
- 查當前的10046 事件級別事件
- 利用10046事件收集SQL的trace檔案事件SQL
- oracle 10046事件故障診斷一例Oracle事件
- 對使用dblink的10046事件跟蹤事件
- 使用10046事件 +10704事件對索引線上重建的跟蹤事件索引
- 使用10046事件跟蹤分析執行計劃事件
- 使用10046事件檢視oracle執行計劃事件Oracle
- 使用oracle的10046事件跟蹤SQL語句Oracle事件SQL
- 【最佳化】10046事件之生成跟蹤檔案事件
- SQL效能的度量 - 利用10046事件擴充套件SQL跟蹤SQL事件套件
- ORACLE 10046 設定跟蹤事件後無跟蹤檔案Oracle事件
- 利用10046事件研究三種資料表訪問方式(上)事件
- 利用10046事件研究三種資料表訪問方式(下)事件
- 透過ORADEBUG運用10046事件跟蹤SQL語句事件SQL
- [20180417]使用10046事件需要什麼許可權.txt事件
- oracle 10046Oracle
- 優化儲存過程的2種方法(DBMS_PROFILER和10046事件)優化儲存過程事件
- 拜年+散分貼《Oracle SQL_TRACE和10046事件優化SQL例項》OracleSQL事件優化
- 10046 等待事件可設定的4個級別(level 1,4,8,12)事件