淺析Oracle追蹤工具SQL Trace的啟用方式
SQL Trace是Oracle提供的用于舉行SQL追尋的手段,是強有力的幫助診斷工具。在平時的數(shù)據(jù)庫問題診斷和處理中,SQL TRACE是極其常用的措施。
SQL TRACE的順次追尋能夠分為以下幾步:
1、界定必需追尋的目標范圍,并利用貼切的號召啟用所需追尋。
2、穿越一段工夫后,靜止追尋。此刻該當發(fā)生了一個追尋收獲文件。
3、找到追尋文件,并對其舉行款式化,然后閱讀或分析。
本文就SQL TRACE的這些利用作容易摸索,并穿越翔實案例對SQL_TRACE的利用舉行解釋。
SQL TRACE的啟用
SQL_TRACE解釋:SQL_TRACE能夠作為初始化參數(shù)在大局啟用,也能夠穿越號召行措施在翔實session啟用。
1.在大局啟用
在參數(shù)文件(pfile/spfile)中指定: SQL_TRACE = true。
在大局啟用SQL_TRACE會導(dǎo)致所有歷程的行動被追尋,包括后臺歷程及所有用戶歷程,這等閑會導(dǎo)致比擬嚴重的功能問題,因而在出產(chǎn)環(huán)境中要持重利用。
提醒: 穿越在大局啟用SQL_TRACE,我們能夠追尋到所有后臺歷程的行動,許多在文檔中的籠統(tǒng)解釋,穿越追尋文件的實時改變,我們能夠打聽的看到各個歷程之間的緊湊調(diào)停。
2.在目前session級設(shè)置
大多數(shù)時候我們利用SQL_TRACE追尋目前會話的歷程。穿越追尋目前歷程能夠覺察目前壟斷的后臺數(shù)據(jù)庫遞歸行動(這在琢磨數(shù)據(jù)庫新個性時尤其管用),琢磨SQL厲行,覺察后臺訛謬等。
在session級啟用和靜止SQL_TRACE措施如下:
啟用目前session的追尋:
- SQL> alter session set SQL_TRACE=true;
- Session alteredbr.brandmats.cn.
此刻的SQL壟斷將被追尋:
- SQL> select count(*) from dba_users;
- COUNT(*)
- ----------
- 34
告終追尋:
- SQL> alter session set SQL_TRACE=false;
- Session altered.
3.追尋其它用戶歷程
在許多時候我們必需追尋其他用戶sc.scjszp.com的歷程,而不是目前用戶,這能夠穿越Oracle供給的系統(tǒng)包DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION來告終。
SET_SQL_TRACE_IN_SESSION過程序要供給三個參數(shù):
- SQL> desc DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION;
- Parameter Type Mode Default?
- --------- ------- ---- --------
- SID NUMBER IN
- SERIAL# NUMBER IN
- SQL_TRACE BOOLEAN IN
穿越v$session我們能夠獲得sid、serial#等消息:
獲得歷程消息,抉擇必需追尋的歷程:
- SQL> select sid,serial#,username from v$session
- 2 where username is not null;
- SID SERIAL# USERNAME
- ---------- ---------- ------------------------------
- 8 2041 SYS
- 9 437 EYGLE
設(shè)置跟著:
- SQL> exec dbms_system.set_SQL_TRACE_in_session(9,437,true)
- PL/SQL procedure successfully completed.
- ….
能夠期待剎那,追尋session厲行任務(wù),捉拿sql壟斷…
靜止追尋:
- SQL> exec dbms_system.set_SQL_TRACE_in_session(9,437,false)
- PL/SQL procedure successfully completed.
10046事件解釋
10046事件是Oracle供給的內(nèi)部事件,是對SQL_TRACE的加深。
10046事件能夠設(shè)置以下四個級別:
- 1 - 啟用規(guī)范的SQL_TRACE功能,等價于SQL_TRACE。
- 4 - Level 1 加上綁定值(bind values)
- 8 - Level 1 + 期待事件追尋
- 12 - Level 1 + Level 4 + Level 8
相仿SQL_TRACE措施,10046事件能夠在大局設(shè)置,也能夠在session級設(shè)置。
關(guān)于Oracle數(shù)據(jù)庫追蹤工具SQL Trace的知識就介紹到這里了,希望本次的介紹能夠帶給您一些收獲!
【編輯推薦】


2009-07-29 14:12:45
2010-04-14 14:14:42




