在oracle中跟蹤會(huì)話(huà)執(zhí)行語(yǔ)句的幾種方法分別是什么

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)在oracle中跟蹤會(huì)話(huà)執(zhí)行語(yǔ)句的幾種方法分別是什么,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)公司10多年企業(yè)網(wǎng)站建設(shè)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站建設(shè)及推廣,對(duì)成都小攪拌車(chē)等多個(gè)行業(yè)擁有多年建站經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

生成sql trace可以有以下幾種方式:

1、參數(shù)設(shè)置:非常傳統(tǒng)的方法。

系統(tǒng)級(jí)別:

參數(shù)文件中指定: sql_trace=true

SQL> alter system set sql_trace=true;

注意:系統(tǒng)級(jí)別啟用sql_trace,會(huì)產(chǎn)生大量trace文件,很容易耗盡磁盤(pán)空間,因此一般設(shè)置會(huì)話(huà)級(jí)別,并且及時(shí)關(guān)閉。

會(huì)話(huà)級(jí)別:

SQL> alter session set sql_trace=true;

SQL> 執(zhí)行sql

SQL> alter session set sql_trace=false;

啟用跟蹤后,跟蹤文件保存在user_dump_dest下

可以使用下面的查詢(xún)來(lái)找到生成的跟蹤文件

SQL> select

  2  d.value||'/'||lower(rtrim(i.instance,

  3  chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name

  4  from ( select p.spid

  5  from v$mystat m,

  6  v$session s,v$process p

  7  where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,

  8  ( select t.instance from v$thread  t,v$parameter v

  9  where v.name = 'thread' and

 10  (v.value = 0 or t.thread# = to_number(v.value))) i,

 11  ( select value from v$parameter

 12  where name = 'user_dump_dest') d

 13  /

TRACE_FILE_NAME

--------------------------------------------------------------------------------

/oracle/admin/RLZY/udump/rlzy_ora_721532.trc

也可以給要生成的跟蹤文件指定標(biāo)識(shí)符來(lái)讓你更容易的找到跟文件

SQL> alter session set tracefile_identifier='jingyong';

2、使用10046事件:

10046事件級(jí)別:

Lv0  - 禁用sql_trace,等價(jià)于sql_trace=false

Lv1  - 啟用標(biāo)準(zhǔn)的sql_trace功能,等價(jià)于sql_trace=true

Lv4  - Level 1 + 綁定變量值(bind values)

Lv8  - Level 1 + 等待事件跟蹤(waits)

Lv12 - Level 1 + Level 4 + Level 8

全局設(shè)定:

參數(shù)文件中指定: event="10046 trace name context forever,level 12"

或者

SQL> alter system set events '10046 trace name context forever, level 12';

SQL> alter system set events '10046 trace name context off';

注意:系統(tǒng)級(jí)別啟用sql_trace,會(huì)產(chǎn)生大量trace文件,很容易耗盡磁盤(pán)空間,因此一般設(shè)置會(huì)話(huà)級(jí)別,并且及時(shí)關(guān)閉。

當(dāng)前session設(shè)定:

SQL> alter session set events '10046 trace name context forever, level 12';

SQL> 執(zhí)行sql

SQL> alter session set events '10046 trace name context off';

3、dbms_session包:只能跟蹤當(dāng)前會(huì)話(huà),不能指定會(huì)話(huà)。

跟蹤當(dāng)前會(huì)話(huà):

SQL> exec dbms_session.set_sql_trace(true);

SQL> 執(zhí)行sql

SQL> exec dbms_session.set_sql_trace(false);

dbms_session.set_sql_trace相當(dāng)于alter session set sql_trace,從生成的trace文件可以明確地看

alter session set sql_trace語(yǔ)句。

使用dbms_session.session_trace_enable過(guò)程,不僅可以看到等待事件信息還可以看到綁定變量信息,

相當(dāng)于alter session set events '10046 trace name context forever, level 12';語(yǔ)句從生成的trace文件可以確認(rèn)。

SQL> exec dbms_session.session_trace_enable(waits=>true,binds=>true);

SQL> 執(zhí)行sql

SQL> exec dbms_session.session_trace_enable(); 

4、dbms_support包:不應(yīng)該使用這種方法,非官方支持。

系統(tǒng)默認(rèn)沒(méi)有安裝這個(gè)包,可以手動(dòng)執(zhí)行$ORACLE_HOME/rdbms/admin/bmssupp.sql腳本來(lái)創(chuàng)建該包

跟蹤當(dāng)前會(huì)話(huà):

SQL> exec dbms_support.start_trace

SQL> 執(zhí)行sql

SQL> exec dbms_support.stop_trace

跟蹤其他會(huì)話(huà):等待事件+綁定變量,相當(dāng)于level 12的10046事件。

SQL> select sid,serial#,username from v$session where ...;

SQL> exec dbms_support.start_trace_in_session(sid=>sid,serial=>serial#,waits=>true,binds=>true);

SQL> exec dbms_support.stop_trace_in_session(sid=>sid,serial=>serial#);

5、dbms_system包:

跟蹤其他會(huì)話(huà):

使用dbms_system.set_ev設(shè)置10046事件

SQL> select sid,serial#,username from v$session where ...;

SQL> exec dbms_system.set_ev(sid,serial#,10046,12,'');

SQL> exec dbms_system.set_ev(sid,serial#,10046,0,'');

但經(jīng)過(guò)測(cè)試在10g中使用級(jí)別為8,12的跟蹤并沒(méi)有在跟蹤文件中生產(chǎn)等待事件信息

6、dbms_monitor包:10g提供,功能非常強(qiáng)大??稍谀K級(jí)別、動(dòng)作級(jí)別、客戶(hù)端級(jí)別、數(shù)據(jù)庫(kù)級(jí)別、會(huì)話(huà)級(jí)別進(jìn)行跟蹤。oracle官方支持。

跟蹤當(dāng)前會(huì)話(huà):

SQL> exec dbms_monitor.session_trace_enable;

SQL> 執(zhí)行sql

SQL> exec dbms_monitor.session_trace_disable;

跟蹤其他會(huì)話(huà):

SQL> exec dbms_monitor.session_trace_enable(session_id=>sid,serial_num=>serial#,waits=>true,binds=>true);

SQL> exec dbms_monitor.session_trace_disable(session_id=>sid,serial_num=>serial#);

7、oradebug

這是sqlplus的工具,需要提供OSPID或者oracle PID。

跟蹤當(dāng)前會(huì)話(huà):

SQL> oradebug setmypid;

Statement processed.

SQL> oradebug unlimit;

Statement processed.

SQL> oradebug event 10046 trace name context forever,level 12;

Statement processed.

SQL> 執(zhí)行sql

SQL> oradebug tracefile_name

SQL> oradebug event 10046 trace name context off;

Statement processed.

跟蹤其他會(huì)話(huà):

SQL> select spid,pid2  from v$process

  2  where addr in (select paddr from v$session where sid=(select distinct sid from v$mystat));

SPID                PID

------------ ----------

1457                 313

SQL> oradebug setospid 1457;

Statement processed.

或者

SQL> oradebug setorapid 313;

Statement processed.

SQL> oradebug unlimit;

Statement processed.

SQL> oradebug event 10046 trace name context forever,level 12;

Statement processed.

SQL> oradebug tracefile_name

SQL> oradebug event 10046 trace name context off;

Statement processed.

上述就是小編為大家分享的在oracle中跟蹤會(huì)話(huà)執(zhí)行語(yǔ)句的幾種方法分別是什么了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:在oracle中跟蹤會(huì)話(huà)執(zhí)行語(yǔ)句的幾種方法分別是什么
本文路徑:http://muchs.cn/article38/iehjpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、域名注冊(cè)、企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)、服務(wù)器托管、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化