免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1269 | 回复: 0
打印 上一主题 下一主题

How to check events in system and session? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 03:17 |只看该作者 |倒序浏览
出现了一个问题,当想确认是否有人开启了 系统的trace 事件。

可以通过如下方法去确认,我们可以通过如下实验去看:

1. 在没有开任何事件时,做一次oradebug
  1. SYS@liuzhou> oradebug setmypid
  2. Statement processed.
  3. SYS@liuzhou>
  4. SYS@liuzhou> oradebug dump events 4
  5. Statement processed.


2. 查看udump的trace文件
  1. SYS@liuzhou> oradebug tracefile_name
  2. /u01/app/oracle/admin/liuzhou/udump/liuzhou_ora_3232.trc

  3. [oracle@milo ~]$ tail /u01/app/oracle/admin/liuzhou/udump/liuzhou_ora_3232.trc
  4. *** 2011-10-26 06:15:33.543
  5. Dump event group for level SYSTEM
  6. TC Addr Evt#(b10) Action TR Addr Arm Life


3. 开启 系统 10046 事件
  1. SYS@liuzhou> alter system set events '10046 trace name context forever, level 4';

  2. System altered.


4. 再做一次oradebug
  1. SYS@liuzhou> oradebug setmypid
  2. Statement processed.
  3. SYS@liuzhou>
  4. SYS@liuzhou> oradebug dump events 4
  5. Statement processed.


5. 查看生成到的trace文件
  1. SYS@liuzhou> oradebug tracefile_name
  2. /u01/app/oracle/admin/liuzhou/udump/liuzhou_ora_3232.trc
  3. SYS@liuzhou>

6. 查看具体生成的trace文件内容
  1. [oracle@milo ~]$ tail /u01/app/oracle/admin/liuzhou/udump/liuzhou_ora_3232.trc
  2. *** 2011-10-26 06:17:01.698
  3. Dump event group for level SYSTEM
  4. TC Addr Evt#(b10) Action TR Addr Arm Life
  5. 36042A04 10046 1 36042a70 0 0
  6.         TR Name TR level TR address TR arm TR life TR type
  7.         CONTEXT 4 0 -1 2 952320028



需要注意的是:
a. 只有系统事件才会有记录。
b. "immediate trace"这种一次性的trace,也不会被记录。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dump Session event的过程:

  1. oradebug setospid 449
  2. oradebug dump events 1
  3. oradebug tracefile_name


trace文件里有如下信息:
  1. *** 2011-10-25 12:08:53.131
  2. Received ORADEBUG command 'dump events 1' from process Unix process pid: 13235, image:
  3. Dump event group for level SESSION
  4. TC Addr Evt#(b10) Action TR Addr Arm Life
  5. B7F900B0 10046 1 b7f9011c 0 0
  6.         TR Name TR level TR address TR arm TR life TR type
  7.         CONTEXT 10 0 -1 2 -1208418192
  8. Received ORADEBUG command 'tracefile_name' from process Unix process pid: 13235, image:




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
自己写了个脚本,去获取所有session的event状态,但是如果session多的话,可能会涉及到很多trace文件:


1. 获取当前的客户端连接进程,并生成获取每个session的脚本到get_sess_event.sql
  1. $ ps -ef | grep LOCAL= | grep -v grep | grep -i <instance_name> |awk 'BEGIN{print "spool sess_trc.txt\n" } {print "oradebug setospid " $2 "\n" "oradebug dump events 1 \n" "oradebug tracefile_name\n"}END{print "spool off"}' > get_sess_event.sql


2. 执行脚本,结果输出到sess_trc.txt
  1. $ sqlplus / as sysdba
  2. SQL> @get_sess_event.sql


3. 查看生成出来的trace文件:
  1. $ grep -E ".trc" sess_trc.txt | sort -u
  2. /opt/oracle/admin/myrac/udump/myrac1_ora_449.trc
  3. /opt/oracle/admin/myrac/udump/myrac1_ora_679.trc

在自己的环境测试过(RHEL 5.5), 其他平台没有测试。
希望能帮到各位。:)


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP