如何查詢會話 event


聯繫:手機(13429648788) QQ(107644445)QQ諮詢惜分飛

標題:如何查詢會話 event

作者:惜分飛©版權所有[未經本人同意,請不得以任何形式轉載,否則有進一步追究法律責任的權利.]

很多時候,我們在數據庫中設置了event,如何確認設置的event生效或者如何確認你的庫中設置了什麼event.下面的文章測試了在11g中比較方便的方法
數據庫版本

SQL> select * from v$version;
 
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Solaris: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

設置測試event

SQL> alter session set events '10510 trace name context forever,level 1';
 
Session altered.
 
SQL> alter session set events
  '10046 trace name context forever,level 4';
 
Session altered.
 
SQL> alter system set events '60025 trace name context forever';
 
System altered.
 
SQL> alter system set events '10513 trace name context forever,level 2';
 
System altered.

測試spfile參數中是否有event

SQL> create pfile='/tmp/pfile' from spfile;
 
File created.
 
solaris*orcl-/home/oracle$ grep -i event /tmp/pfile
--無記錄
 
SQL> show parameter event;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------
event                                string
xml_db_events                        string      enable
證明設置event不會在spfile中記錄


查詢會話event

--dbms_system實現
SQL> set serveroutput on size 1000000
SQL> declare
  2  event_level number;
  begin
  for i in 1..100000 loop
  5  sys.dbms_system.read_ev(i,event_level);
  6  if (event_level > 0) then
  7  dbms_output.put_line('Event '||to_char(i)||' set at level '||
  8  to_char(event_level));
  end if;
 10  end loop;
 11  end;
 12  /
Event 10510 set at level 1
Event 10513 set at level 2
Event 60025 set at level 1
 
PL/SQL procedure successfully completed.
 
--oradebug實現
SQL> oradebug SETMYPID
Statement processed.
SQL> oradebug eventdump session
10510 trace name context forever,level 1
10513 trace name context forever,level 2
60025 trace name context forever
sql_trace level=4

測試證明使用dbms_system可以捕獲到event,oradebug可以捕獲到本身會話,還可以通過setospid/setorapid來跟蹤其他會話的event設置情況.event 10046對應的本質是sql_trace所以使用dbms_system不能捕獲到10046


原文地址:http://www.xifenfei.com/2012/10/%E5%A6%82%E4%BD%95%E6%9F%A5%E8%AF%A2%E4%BC%9A%E8%AF%9D-event.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章