一.SQL_TRACE说明

1.1.在全局启用
在参数文件(pfile/spfile)中指定:sql_trace =true 1.2.在当前session级设置
启用当前session的跟踪:
alter session set sql_trace=true;
结束跟踪:
alter session set sql_trace=false; 1.3.跟踪其他用户进程
跟踪其他用户的进程,可以通过Oracle提供的系统包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION来完成.SET_SQL_TRACE_IN_SESSION过程序要提供三个参数: SQL> desc dbms_system
...
PROCEDURE SET_SQL_TRACE_IN_SESSION
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SID NUMBER IN
SERIAL# NUMBER IN
SQL_TRACE BOOLEAN IN
... 通过v$session我们可以获得sid、serial#等信息:
SQL> select sid,serial#,username
2 from v$session
3 where username is not null; SID SERIAL# USERNAME
---------- ---------- -------------
8 2041 SYS
9 437 SCOTT 启用跟踪:
exec dbms_system.set_sql_trace_in_session(9,437,true) 停止跟踪:
exec dbms_system.set_sql_trace_in_session(9,437,false)

二.10046事件说明

10046事件是Oracle提供的内部事件,是对SQL_TRACE的增强.10046事件可以设置以下四个级别:
1 - 启用标准的SQL_TRACE功能,等价于sql_trace
4 - Level 1 加上绑定值(bind values)
8 - Level 1 + 等待事件跟踪
12 - Level 1 + Level 4 + Level 8
类似sql_trace,10046事件可以在全局设置,也可以在session级设置。 2.1.在全局设置
在参数文件中增加:
event="10046 trace name context forever,level 12" 此设置对所有用户的所有进程生效、包括后台进程. 2.2 对当前session设置
通过alter session的方式修改,需要alter session的系统权限:
执行跟踪:
SQL> alter session set events '10046 trace name context forever';
SQL> alter session set events '10046 trace name context forever, level 8'; 结束跟踪:
SQL> alter session set events '10046 trace name context off'; 2.3 对其他用户session设置
通过DBMS_SYSTEM.SET_EV系统包来实现: SQL> desc dbms_system
...
PROCEDURE SET_EV
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SI BINARY_INTEGER IN
SE BINARY_INTEGER IN
EV BINARY_INTEGER IN
LE BINARY_INTEGER IN
NM VARCHAR2 IN ... 其中的参数SI、SE来自v$session视图,查询获得需要跟踪的session信息:
select sid,serial#,username
from v$session
where username is not null; SID SERIAL# USERNAME
---------- ---------- ------------------------------
8 2041 SYS
9 437 SCOTT 执行跟踪:
SQL> exec dbms_system.set_ev(9,437,10046,8,'SCOTT'); 结束跟踪:
SQL> exec dbms_system.set_ev(9,437,10046,0,'SCITT');

三.与SQL Trace相关的参数

在打开10046时间的SQL Trace之前,要先设置好下面几个参数。

timed_statistics
是否收集与时间相关的统计信息,如果这个参数为FALSE的话,那么SQL Trace的结果基本没有多大的用处,默认情况下这个参数设置为TRUE。 max_dump_file_size
dump文件的大小,在一个很忙的系统上面做SQL Trace的话可能会生成很多的信息,因此最好在会话级别将这个参数设置成unlimited。 3.1 在全局设置
这些参数可以加载spfile中,让系统启动时自动做全局设置。 3.2 对当前session设置
ALTER SESSION SET timed_statistics=true
ALTER SESSION SET max_dump_file_size=unlimited 3.3 对其他用户session设置
SYS.DBMS_SYSTEM.SET_BOOL_PARAM_IN_SESSION(:sid, :serial,'timed_statistics', true)
SYS.DBMS_SYSTEM.SET_INT_PARAM_IN_SESSION(:sid, :serial,'max_dump_file_size', unlimited)

四.获取跟踪文件

以上生成的跟踪文件位于user_dump_dest目录中,位置及文件名可以通过以下SQL查询获得:

select d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name
from ( select p.spid from sys.v$mystat m,sys.v$session s,sys.v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,
( select t.instance from sys.v$thread t,sys.v$parameter v where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,
( select value from sys.v$parameter where name = 'user_dump_dest') d;
/

整理自互联网

Oracle sql trace的更多相关文章

  1. Oracle SQL Trace 和 10046 事件

    http://blog.csdn.net/tianlesoftware/article/details/5857023 一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRAC ...

  2. Oracle 课程八之性能优化之Oracle SQL Trace

    一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL ...

  3. Oracle sql trace用法

    sql_trace是oracle提供的一个非常好的跟踪工具,主要用来检查数据库的异常情况,通过跟踪数据库的活动,找到有问题的语句. 一.概述:    SQL_TRACE是Oracle的一个非常强大的工 ...

  4. Oracle 11g R2性能优化 SQL TRACE

    作为Oracle官方自带的一种基本性能诊断工具,SQL Trace可以用来评估当前正在运行的SQL语句的效率,同时为该语句生成统计信息等,并保存这些信息到指定路径下的跟踪文件(trace)当中.SQL ...

  5. Oracle核心技术之 SQL TRACE

    1.SQL TRACE说明: 参数类型 布尔型 缺省值 false 参数类别 动态 取值范围 True|false 2.类型 1)sql trace参数:alter system改变对全局进程影响,如 ...

  6. Oracle SQL explain/execution Plan

    From http://blog.csdn.net/wujiandao/article/details/6621073 1. Four ways to get execution plan(anyti ...

  7. Oracle中有个tkprof来格式化oracle的trace文件

    1.MySQL日志文件系统的组成2.慢查询日志3.慢查询日志演示long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10sslow_query_lo ...

  8. PLSQL_性能优化效能跟踪工具SQL Trace分析(案例)

    2014-06-25 Created By BaoXinjian

  9. Could not load oracle/sql/converter_xcharset/lx20354.glb.

    一.错误描述: 此错误导致了web 服务器停止服务,应该属于“不能连接Oracle”的错误. 二.具体错误信息: 信息: Illegal access: this web application in ...

随机推荐

  1. jsp页面

    //获取根目录 ${pageContext.request.contextPath} //(父页面提交,嵌入页面显示)提交表单,设置响应方法和返回结果页面显示在frame中 <input typ ...

  2. unresolved external symbol "public: virtual __thiscall...错误

    今天自己在编写类模板的程序时,遇到了如下的错误:unresolved external symbol "public: virtual __thiscall...错误 调试修改了半天程序,还 ...

  3. DAY13 Matlab实现图像错切源代码

    Matlab实现图像错切源代码 %错切im=(imread('robot.jpg'));im1=rgb2gray(im);figure,imshow(im1);[row,col]=size(im1); ...

  4. git 如何恢复只是提交到本地的文件(或者commit)

    今天早上傻逼了,把四天的代码commit到了本地,然后fetch一下,然后就全没了,不过git还是挺强大的 参考:http://blog.163.com/jiams_wang/blog/static/ ...

  5. OpenStack和Redis

    前言: 最近开始捣鼓OpenStack了,在用RDO部署OpenStack的时候,发现装了Redis, 遂决定看看OpenStack哪些地方(可以)用到Redis.  Redis作为OpenStack ...

  6. 关于Rational Functional Tester (RFT)的简单介绍

    前段时间给客户做了个RFT的简单培训,以下.因为涉及到公司的框架,所以中间省去了很多框架里的细节,只留了一个框架的总体结构的概览. RFT IBM Rational Functional Tester ...

  7. oracle创建job权限

    grant create job to ja_ods; grant manage scheduler to ja_ods;

  8. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  9. SQL 1:常用SQL语句

    导读:最近写代码,几乎是天天泡在SQL语句里,各种代码各种写.但一直缺少总结,要不就是觉得简单,要不就是觉得大家都知道.想来,我还是没能明白总结的价值在哪里.现在也就写写最近都常写的一些语句. 一,i ...

  10. centos7 pxe minimal install

    # 01-78-2b-cb-69-10-f3 default menu.c32 prompt 0 timeout 50 label CentOS 7 MENU DEFAULT MENU LABEL C ...