Chinaunix首页 | 论坛 | 博客
  • 博客访问: 288855
  • 博文数量: 60
  • 博客积分: 1437
  • 博客等级: 中尉
  • 技术积分: 632
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-10 14:12
文章存档

2012年(7)

2011年(53)

分类: Oracle

2011-02-12 09:25:28

有时候,我们做troubleshooting的时候,往往通过会话一级的跟踪找不到会话执行的SQL了或者不能确定是哪个会话引起来的问题,这个时候我们可以在系统一级创建一个用户登录/登出的触发器来跟踪用户执行的SQL语句:
CREATE OR REPLACE TRIGGER trig_marsngadmin_logon
after logon on database
begin
      if login_user = 'MARSNGADMIN'
        then
                execute immediate 'alter session set events ''10046 trace name context forever,level 12''';
       end if;
end trig_marsngadmin_logon;
/

CREATE OR REPLACE TRIGGER trig_marsngadmin_logoff

before logoff on database
-- For Oracle 11g
begin
      if login_user = 'MARSNGADMIN'
        then
               execute immediate 'alter session set events ''10046 trace name context off''';
       end if;
end trig_marsngadmin_logon;
/
通过这种方式,我们就可以跟踪到用户的活动情况了!
阅读(2403) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~