国产探花免费观看_亚洲丰满少妇自慰呻吟_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;



     /




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白河县| 高台县| 绥化市| 密云县| 洛南县| 图们市| 登封市| 漾濞| 甘孜| 岳阳市| 许昌县| 宾阳县| 沧源| 定兴县| 遂平县| 玉屏| 汉中市| 双辽市| 陆良县| 贡觉县| 台江县| 冷水江市| 宁陕县| 五河县| 秭归县| 黄陵县| 韶关市| 西和县| 乌海市| 巴中市| 祁连县| 新化县| 沈丘县| 舒兰市| 开化县| 泰顺县| 长春市| 玛沁县| 神农架林区| 永善县| 东乡县|