設定會話TRACE的方法(二)
很多時候需要設定會話的SQL_TRACE,以便於分析,簡單總結一下設定的方法和適用的情況。
這一篇介紹設定其他會話SQL_TRACE的方法。
設定會話TRACE的方法(一):http://yangtingkun.itpub.net/post/468/519830
Oracle10g新增DBMS_MONITOR包(一):http://yangtingkun.itpub.net/post/468/498878
上一篇介紹的三種方法都是對當前會話生效的,但是僅靠登入觸發器來實現其他會話的SQL_TRACE是不夠的,有些時候一個會話是否需要TRACE在登入的時候還不能確定。
在Oracle10g中,Oracle增加了DBMS_MONITOR包,來實現其他會話的TRACE功能:
SQL> EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE(125, 1, TRUE, TRUE)
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE(125, 1)
PL/SQL 過程已成功完成。
可以透過SID和SERIAL#來設定指定會話的SQL_TRACE,同時可以指定是否包含等待和繫結變數資訊。
除了常規的SID方式外,DBMS_MONITOR還支援其他的方式:
SQL> EXEC DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE('TEST', TRUE, TRUE)
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE('TEST')
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('SERVICE', 'MODULE', 'ACTION', TRUE, TRUE)
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE('SERVICE', 'MODULE', 'ACTION')
PL/SQL 過程已成功完成。
可以透過CLIENT_ID對指定客戶端ID的所有會話進行TRACE,而CLIENT_ID是可以進行設定的。還可以透過會話的SERVICE_NAME、MODULE_NAME和ACTION_NAME進行SQL_TRACE的設定,在11g中這種方式還可以在指定例項上生效。
此外,DBMS_MONITOR還可以開啟全庫的SQL_TRACE:
SQL> EXEC DBMS_MONITOR.DATABASE_TRACE_ENABLE(TRUE, TRUE)
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_MONITOR.DATABASE_TRACE_DISABLE
PL/SQL 過程已成功完成。
同樣11g中,這個過程還可以指定單獨的例項進行設定。
DBMS_MONITOR雖然功能很強,可惜有版本限制,9i及以前的版本無法使用這個功能,下面這種DBMS_SYSTEM的功能可以在9i中設定其他會話的TRACE:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
SQL> exec dbms_system.set_sql_trace_in_session(15, 24812, true)
PL/SQL procedure successfully completed.
SQL> exec dbms_system.set_sql_trace_in_session(15, 24812, false)
PL/SQL procedure successfully completed.
這個SET_SQL_TRACE_IN_SESSION過程在9i中也算比較常用的方法了,使用這種方法可以透過SID來設定指定會話是否開啟SQL_TRACE。可惜的是,這種方法不能設定等待事件和繫結變數。
如果在9i中,想要開啟帶繫結變數和等待事情的其他會話的SQL_TRACE,就只能利用DBMS_SYSTEM的SET_EV過程:
SQL> exec dbms_system.set_ev(15, 24812, 10046, 12, null)
PL/SQL procedure successfully completed.
SQL> exec dbms_system.set_ev(15, 24812, 10046, 0, null)
PL/SQL procedure successfully completed.
採用這種方法可以為指定的會話設定EVENTS,上面就是透過設定10046的LEVEL 12來實現包含等待事件和繫結變數的SQL_TRACE的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-700845/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設定會話TRACE的方法(一)會話
- vertica 設定最大會話數會話
- 獲取當前會話資訊的方法(二)會話
- 設定 oracle event traceOracle
- Oracle會話超時退出設定Oracle會話
- 設定SQL*Plus會話環境SQL會話
- 使用sql trace工具和tkprof來跟會話SQL會話
- listener trace的一些設定
- oracle Database Event trace 設定OracleDatabase
- 利用sql_trace跟蹤一個指定會話的操作SQL會話
- -t【Oracle-故障管理】-Trace跟蹤會話和會話執行慢故障分析Oracle會話
- SQL效能的度量 - 會話級別的SQL跟蹤sql_traceSQL會話
- 騰訊會議橫屏如何設定?騰訊會議橫屏設定方法
- 設定Event事件來追蹤Trace事件
- 使用dbms_monitor.session_trace_enable跟蹤一個會話Session會話
- 設定sqlnet.exprire_time=3來清除死的會話SQL會話
- oracle Database Event trace 設定【Blog 搬家】OracleDatabase
- #魔術方法(會話管理)會話
- HTTPS會話裡的敏感Cookie沒有設定Secure屬性HTTP會話Cookie
- sql*plus會話環境相關的引數設定檔案SQL會話
- Kill會話過程分析(二)會話
- 事務複製會話 (二)會話
- Cognos會話快取設定(展現實時資料)會話快取
- 獲取當前會話資訊的方法會話
- 【SQL_TRACE】解決普通使用者無法執行SQL_TRACE跟蹤其他會話問題SQL會話
- SQL 的跟蹤方法traceSQL
- 【TRACE】SQL*Net trace 通過windows客戶端設定,你不得不防SQLWindows客戶端
- rman會話中設定nls_date_format和nls_lang會話ORM
- token 會話設計 (JWT)會話JWT
- 主的設定方法
- 小議服務程式與會話(二)會話
- 用JS設定一個人的程式的話JS
- Java 設定睡眠的方法Java
- 紅米Note4怎麼設定電話自動錄音方法
- 檢視當前會話session id方法:會話Session
- 對話方塊背景色的設定 (轉)
- 定時刪除bdump裡的trace檔案
- 定時刪除udump裡的trace檔案