亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在oracle中跟蹤會話執行語句的幾種方法分別是什么

發布時間:2021-11-03 16:28:34 來源:億速云 閱讀:267 作者:柒染 欄目:建站服務器

這期內容當中小編將會給大家帶來有關在oracle中跟蹤會話執行語句的幾種方法分別是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

1、參數設置:非常傳統的方法。

系統級別:

參數文件中指定: sql_trace=true

SQL> alter system set sql_trace=true;

注意:系統級別啟用sql_trace,會產生大量trace文件,很容易耗盡磁盤空間,因此一般設置會話級別,并且及時關閉。

會話級別:

SQL> alter session set sql_trace=true;

SQL> 執行sql

SQL> alter session set sql_trace=false;

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

可以使用下面的查詢來找到生成的跟蹤文件

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

也可以給要生成的跟蹤文件指定標識符來讓你更容易的找到跟文件

SQL> alter session set tracefile_identifier='jingyong';

2、使用10046事件:

10046事件級別:

Lv0  - 禁用sql_trace,等價于sql_trace=false

Lv1  - 啟用標準的sql_trace功能,等價于sql_trace=true

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

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

Lv12 - Level 1 + Level 4 + Level 8

全局設定:

參數文件中指定: 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';

注意:系統級別啟用sql_trace,會產生大量trace文件,很容易耗盡磁盤空間,因此一般設置會話級別,并且及時關閉。

當前session設定:

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

SQL> 執行sql

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

3、dbms_session包:只能跟蹤當前會話,不能指定會話。

跟蹤當前會話:

SQL> exec dbms_session.set_sql_trace(true);

SQL> 執行sql

SQL> exec dbms_session.set_sql_trace(false);

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

alter session set sql_trace語句。

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

相當于alter session set events '10046 trace name context forever, level 12';語句從生成的trace文件可以確認。

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

SQL> 執行sql

SQL> exec dbms_session.session_trace_enable(); 

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

系統默認沒有安裝這個包,可以手動執行$ORACLE_HOME/rdbms/admin/bmssupp.sql腳本來創建該包

跟蹤當前會話:

SQL> exec dbms_support.start_trace

SQL> 執行sql

SQL> exec dbms_support.stop_trace

跟蹤其他會話:等待事件+綁定變量,相當于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包:

跟蹤其他會話:

使用dbms_system.set_ev設置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,'');

但經過測試在10g中使用級別為8,12的跟蹤并沒有在跟蹤文件中生產等待事件信息

6、dbms_monitor包:10g提供,功能非常強大。可在模塊級別、動作級別、客戶端級別、數據庫級別、會話級別進行跟蹤。oracle官方支持。

跟蹤當前會話:

SQL> exec dbms_monitor.session_trace_enable;

SQL> 執行sql

SQL> exec dbms_monitor.session_trace_disable;

跟蹤其他會話:

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。

跟蹤當前會話:

SQL> oradebug setmypid;

Statement processed.

SQL> oradebug unlimit;

Statement processed.

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

Statement processed.

SQL> 執行sql

SQL> oradebug tracefile_name

SQL> oradebug event 10046 trace name context off;

Statement processed.

跟蹤其他會話:

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中跟蹤會話執行語句的幾種方法分別是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保山市| 井冈山市| 宁陕县| 洮南市| 永吉县| 东港市| 镇平县| 绥棱县| 阳原县| 石狮市| 收藏| 沐川县| 恩施市| 沾益县| 奎屯市| 鄂托克前旗| 涟源市| 安多县| 绵阳市| 南溪县| 随州市| 汝州市| 渝北区| 宁阳县| 达拉特旗| 扎鲁特旗| 台湾省| 康定县| 治县。| 新河县| 竹山县| 宝山区| 南江县| 本溪市| 公安县| 晋中市| 临颍县| 石渠县| 榆中县| 永安市| 白朗县|