永发信息网

oracle 检查数据库设置哪些event

答案:2  悬赏:0  手机版
解决时间 2021-11-13 06:50
  • 提问者网友:趣果有间
  • 2021-11-12 19:43
oracle 检查数据库设置哪些event
最佳答案
  • 五星知识达人网友:長槍戰八方
  • 2021-11-12 20:44
如何查询会话 event
  很多时候,我们在数据库中设置了event,如何确认设置的event生效或者如何确认你的库中设置了什么event.下面的文章测试了在11g中比较方便的方法数据库版本
  [sql] view plain copy 在CODE上查看代码片派生到我的代码片SQL>select*fromv$version;
  BANNER
  --------------------------------------------------------------------------------OracleDatabase11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionPL/SQL Release 11.2.0.3.0 - Production
  CORE 11.2.0.3.0 Production
  TNSforSolaris: Version 11.2.0.3.0 - ProductionNLSRTL Version 11.2.0.3.0 - Production
  设置测试event
  [sql] view plain copy 在CODE上查看代码片派生到我的代码片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] view plain copy 在CODE上查看代码片派生到我的代码片SQL>create pfile='/tmp/pfile'fromspfile;
  File created.
  solaris*orcl-/home/oracle$ grep -i event /tmp/pfile--无记录
  SQL> show parameter event;
  NAME TYPE VALUE------------------------------------ ----------- -----------------event stringxml_db_events string enable证明设置event不会在spfile中记录
  查询会话event
  [sql] view plain copy 在CODE上查看代码片派生到我的代码片--dbms_system实现
  SQL> set serveroutput on size 1000000
  SQL> declare
  2 event_level number;
  3 begin
  4 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));
  9 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经过学习和测试,总结可以使用oradebug来实现:
  [sql] view plain copy 在CODE上查看代码片派生到我的代码片SQL> oradebug SETMYPID
  Statement processed.
  SQL> oradebug eventdump session
  或
  SQL> oradebug eventdump system
  就可以查看系统级或会话级的事件设置了
全部回答
  • 1楼网友:鸠书
  • 2021-11-12 21:53
select * from v$event_name
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯