Chinaunix首页 | 论坛 | 博客
  • 博客访问: 218026
  • 博文数量: 57
  • 博客积分: 1376
  • 博客等级: 中尉
  • 技术积分: 658
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-09 09:51
文章分类

全部博文(57)

文章存档

2012年(1)

2011年(56)

分类: Oracle

2011-10-27 21:05:05

出现了一个问题,当想确认是否有人开启了 系统的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), 其他平台没有测试。
希望能帮到各位。:)


阅读(1761) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~