Welcome 微信登录

首页 / 数据库 / MySQL / 在Oracle中跟踪某几个用户的SQL

在Oracle中做SQL跟踪,估计大部分都会用sqlplus中的autotrace或者设置10046跟踪。但是,如果是调试某个应用系统的话,特别是打开了连接池的系统,靠以上两种方法基本上就歇菜了。还是SQL Server的SQL Server Profiler好啊。最近在看冯大辉翻译的《Oracle性能诊断艺术》,发现一个很好的技巧,思路是建一个Logon,现摘录如下(稍作了一个修改):
01create role trace_10046_role; 
02  
03CREATE OR REPLACE TRIGGER SYS.set_10046_trace_on_logon
04AFTER LOGON ON DATABASE
05BEGIN
06  if ( dbms_session.is_role_enabled("trace_10046_role"and user not in "SYS","SYSTEM")  ) then
07    EXECUTE IMMEDIATE "alter session set statistics_level=ALL";
08    EXECUTE IMMEDIATE "alter session set max_dump_file_size=UNLIMITED";
09    EXECUTE IMMEDIATE "alter session set tracefile_identifier="""||user||"_10046""";
10    EXECUTE IMMEDIATE "alter session set events ""10046 trace name context forever, level 12""";
11  end if; 
12END set_10046_trace_on_logon;
启用和禁用对系统进行做10046跟踪SQL: 
01SQL> show user;
02USER is "SYS"
03SQL> grant trace_10046_role to cms_text;
04SQL> select * from dba_ROLE_PRIVS where granted_role="TRACE_10046_ROLE";
05  
06GRANTEE                        GRANTED_ROLE                   ADM DEF
07------------------------------ ------------------------------ --- ---
08SYS                            TRACE_10046_ROLE               YES YES
09CMS_TEXT                       TRACE_10046_ROLE               NO  YES
10Grant succeeded.
11SQL> revoke trace_10046_role from cms_text; 
12SQL> select * from dba_ROLE_PRIVS where granted_role="TRACE_10046_ROLE";
13  
14GRANTEE                        GRANTED_ROLE                   ADM DEF
15------------------------------ ------------------------------ --- ---
16SYS                            TRACE_10046_ROLE               YES YES
其实就是将 trace_10046_role grant/revoke 给相应的用户。当具有 trace_10046_role 角色的用户登录后在udump下就会出现相应的trc文件: 
1[oracle@test-server udump]$ pwd
2/u01/app/admin/ora8i/udump
3[oracle@test-server udump]$ ls
4ora8i_ora_8259_CMS_TEXT_10046.trc
SQL语句创建Oracle Spatial的图层方法简介在Oracle中手工对任务进行分区的方法相关资讯      oracle 
  • [INS-32052] Oracle基目录和Oracle  (07/22/2014 07:41:41)
  • Oracle 4个大对象(lobs)数据类型  (02/03/2013 12:33:05)
  • Oracle按时间段分组统计  (07/26/2012 10:36:48)
  • [Oracle] dbms_metadata.get_ddl的  (07/12/2013 07:37:30)
  • Liferay Portal 配置使用Oracle和  (07/31/2012 20:07:18)
  • Concurrent Request:Inactive   (07/20/2012 07:44:05)
本文评论 查看全部评论 (0)
表情: 姓名: 字数