国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

使用跟蹤事件10046

2024-07-21 02:05:40
字體:
來源:轉載
供稿:網友

最大的網站源碼資源下載站,


很多時候,對數據庫進行性能診斷可以使用sql跟蹤的方法,把一些信息記錄在trace文件里以后分析。一般情況下我們可以通過初始化參數sql_trace=true來設置sql跟蹤。








 


 



我們也可以通過設置10046事件來進行sql跟蹤,并且可以設置不同的跟蹤級別,比使用sql_trace獲得更多的信息。








 


 



level 0   停用sql跟蹤,相當于sql_trace=false







level 1   標準sql跟蹤,相當于sql_trace=true







level 4   在level 1的基礎上增加綁定變量的信息







level 8   在level 1的基礎上增加等待事件的信息







level 12  在level 1的基礎上增加綁定變量和等待事件的信息








 


 



10046事件不但可以跟蹤用戶會話(trace文件位于user_dump_dest ),也可以跟蹤background進程(trace文件位于background_dump_dest )。trace文件的大小決定于4個因素:跟蹤級別,跟蹤時長,會話的活動級別和max_dump_file_size參數。








 


 



啟用跟蹤事件10046








 


 



1.在全局設置








 


 



修改初始化參數







event = "10046 trace name context forever, level 8"








 


 



2.在當前session設置








 


 



alter session set events '10046 trace name context forever, level 8';







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








 


 



3.對其他用戶session設置








 


 



首先獲得要跟蹤的session的session id和serial number







select sid,serial#,username from v$session where username='trace_username';








 


 




 


 



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







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








 


 



或者







exec dbms_system.set_ev( 1234, 56789, 10046, 8, '');







exec dbms_system.set_ev( 1234, 56789, 10046, 0, '');








 


 



或者







exec dbms_monitor.session_trace_enable(session_id => 1234,serial_num => 56789,waits => true,binds => true);







exec dbms_monitor.session_trace_disable(session_id => 1234,serial_num => 56789);








 


 



也可以通過使用oradebug工具來設置10046事件








 


 



首先通過v$process獲得該session的os process id。







select s.username, p.spid os_process_id, p.pid oracle_process_id







from v$session s, v$process p







where  s.paddr = p.addr and  s.username = upper('trace_username');








 


 



oradebug setospid 12345;







oradebug unlimit;







oradebug event 10046 trace name context forever, level 8;







oradebug event 10046 trace name context off;








 


 



獲取跟蹤文件








 


 



1.使用oradebug



sql> oradebug setmypid







statement processed.







sql> oradebug tracefile_name







/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183.trc








 


 



2.設置初始參數tracefile_identifier



alter session set tracefile_identifier = 'mytrace';







這樣在生成的trace文件名中會包含有mytrace字樣







/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183_mytrace.trc








 


 



3.通過sql查詢



select d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name







from 







    ( select p.spid 







      from sys.v$mystat m,sys.v$session s,sys.v$process p 







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







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







      where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, 







    ( select value from sys.v$parameter where name = 'user_dump_dest') d;



?/rdbms/log/uxdb_ora_9183.trc







查看當前session的跟蹤級別




 


sql>set serveroutput on



sql> declare



     event_level number;



     begin



     dbms_system.read_ev(10046,event_level);



     dbms_output.put_line(to_char(event_level));



     end;



     /




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德阳市| 共和县| 兴城市| 平遥县| 荆门市| 丹东市| 罗定市| 抚顺市| 民丰县| 武乡县| 菏泽市| 获嘉县| 张家界市| 江川县| 张家川| 赤城县| 安泽县| 太保市| 黄陵县| 平远县| 宿松县| 馆陶县| 镇宁| 新巴尔虎右旗| 嘉定区| 栾川县| 武冈市| 托里县| 澳门| 西畴县| 鹰潭市| 承德市| 洛南县| 白玉县| 衡山县| 宜宾县| 凤城市| 宁河县| 清原| 攀枝花市| 乐昌市|