`

使用trace跟踪sql执行情况(转)

阅读更多

            使用trace跟踪sql执行情况

1.跟踪自己的session

  • alter session set events ‘10046 trace name context forever, level 12′;
  • 执行需要跟踪的sql….
  • alter session set events ‘10046 trace name context off’;
  • 查看trace文件名字:

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

  • 分析结果 tkprof tracefilename outputfilename
  • 例子

    SQL> set time on
    22:43:26 SQL> set timing on
    22:43:28 SQL> alter session set events ‘10046 trace name context forever,level 12′;

    会话已更改。

    已用时间: 00: 00: 00.00
    22:43:39 SQL> declare
    22:44:03 2 v_num integer;
    22:44:03 3 begin
    22:44:03 4 v_num := 0;
    22:44:03 5 while v_num < 10000
    22:44:03 6 loop
    22:44:03 7 insert into t2 values(v_num,’def’);
    22:44:03 8 v_num := v_num + 1;
    22:44:03 9 end loop;
    22:44:03 10 commit;
    22:44:03 11 end;
    22:44:03 12 /

    PL/SQL 过程已成功完成。

    已用时间: 00: 00: 01.18
    22:44:06 SQL> alter session set events ‘10046 trace name context off’;

    会话已更改。

    已用时间: 00: 00: 00.02
    22:44:28 SQL> select d.value||’/'||lower(rtrim(i.instance, chr(0)))||’_ora_’
    ||p.spid||’.trc’ trace_file_name
    23:02:28 2 from ( select p.spid from v$mystat m,v$session s,v$process
    p
    23:02:28 3 where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,
    23:02:28 4 ( select t.instance from v$thread t,v$parameter v
    23:02:28 5 where v.name = ‘thread’ and (v.value = 0 or t.thread# = to_num
    ber(v.value))) i,
    23:02:28 6 ( select value from v$parameter where name = ‘user_dump_dest
    ‘) d
    23:02:29 7
    23:02:30 SQL> /

    TRACE_FILE_NAME
    ——————————————————————————–

    D:ORACLEPRODUCT10.2.0ADMINORCLUDUMP/orcl_ora_2536.trc

    D:oracleproduct10.2.0adminorcludump>tkprof orcl_ora_2536 lyf3.txt

    TKPROF: Release 10.2.0.1.0 – Production on 星期日 10月 8 22:39:36 2006

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    D:oracleproduct10.2.0adminorcludump>

    2.了解raw trace的更多内容

    可以参看

    3. 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 from v$session where username is not null;

    SID SERIAL# USERNAME
    ———- ———- ——————————
    10 617 LYF
    11 18 SYS

    设置跟着:
    SQL> exec dbms_system.set_sql_trace_in_session(10,617,true);

    PL/SQL 过程已成功完成。

    ….
    可以等候片刻,跟踪session执行任务,捕获sql操作…
    在10,617上执行insert into t2 values(‘cc’);

    ….

    停止跟踪
    SQL> exec dbms_system.set_sql_trace_in_session(10,617,false);

    PL/SQL 过程已成功完成。

    到udump目录下,按照日期排序可以看到新生成的文件。

  • 分享到:
    评论

    相关推荐

      如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况

      如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况?Sql性能非常差的时候,oracle提供了SQL_TRACE来跟踪sql的执行情况。注:分析sql的方式比较多,还有根据优化器、sql执行计划来分析。SQL_TRACE能够将sql执行的过程...

      SQL执行计划之sql_trace

      ### SQL执行计划之sql_trace详解 #### 一、SQL Trace简介 SQL Trace 是 Oracle 提供的一种强大工具,用于记录 SQL 语句的执行过程。它能够帮助数据库管理员和开发人员详细了解 SQL 语句是如何被 Oracle 数据库处理...

      SQL Trace and TKPROF

      4. **禁用 SQL Trace 并格式化 trace 文件**:在收集完所需的统计数据后,需要禁用 SQL Trace,并使用 TKPROF 工具格式化 trace 文件以便于阅读和分析。 5. **解析 TKPROF 输出**:最后一步是分析 TKPROF 的输出...

      SQLTracker Oracle跟踪工具(支持64位)

      它能够实时监控数据库中的SQL语句执行情况,包括执行频率、执行时间、资源消耗等关键指标。通过这些数据,管理员可以快速定位到影响系统性能的关键SQL,从而进行针对性优化。 其次,SQLTracker具备详细的性能分析...

      SQLTracker(sql跟踪器).zip

      - **资源消耗统计**:统计数据库CPU、内存、I/O等资源的使用情况,帮助调整数据库配置。 - **报告与日志**:生成性能报告,提供详细的查询历史记录,便于问题排查和性能回顾。 - **报警机制**:设置阈值,当特定...

      The ABAP SQL Trace (ST05)

      这篇博客旨在为您提供 ABAP SQL 跟踪的快速介绍,展示如何执行跟踪、如何获取结果概要,以及如何解释结果。 使用 ABAP SQL 跟踪非常简单: 1. 在第二模式下调用 ABAP SQL 跟踪 2. 确保您的测试程序至少执行了一次...

      SQL TRACE原理、方法、事件查看总结

      SQL TRACE的基本原理是跟踪SQL语句的执行过程,记录从解析到执行的每一个步骤,包括硬解析、软解析、执行计划、等待事件等。通过启用SQL TRACE,我们可以获取到关于SQL语句的元数据、执行计划、资源消耗等重要信息,...

      显示 sql 执行效率.

      SQL*Plus 提供了一个非常实用的功能——自动跟踪(Auto Trace),它可以帮助用户分析 SQL 语句的执行情况,包括执行时间、资源消耗等关键性能指标。通过设置 Auto Trace,可以方便地获取 SQL 语句的执行计划...

      10046事件和sql_trace.docx

      通过`ALTER DATABASE SET SQL_TRACE=true`可以开启实例级别的SQL_TRACE,这将跟踪实例中所有SQL语句,但由于跟踪范围广,可能会导致大量的跟踪信息,一般不建议在生产环境中使用。 二、设置TRACE文件标识 为了方便...

      如何用T-SQL语句建立跟踪

      例如,事件类别12代表SQL批处理的开始或结束,我们可以使用`sp_trace_setevent`存储过程来开启这些事件的跟踪: ```sql DECLARE @on BIT SET @on = 1 EXEC sp_trace_setevent @TraceID, 12, 1, @on EXEC sp_trace_...

      sql跟踪工具

      它不仅可以跟踪SQL,还可以收集存储过程和函数的执行信息。 2. **使用10046事件**:通过设置10046事件,可以在会话级别开启SQL和PL/SQL的跟踪。例如,运行`ALTER SESSION SET EVENTS '10046 trace name context ...

      Oracle SQL语句跟踪

      在Oracle数据库系统中,SQL语句跟踪能够帮助我们收集关于SQL执行的详细信息,包括执行计划、资源消耗、等待事件等,这对于理解和改进数据库的性能至关重要。 首先,我们来了解Oracle SQL语句跟踪的基础知识。在...

      sql2008查询事件跟踪器

      SQL Server 2008 查询事件跟踪器是一个强大的工具,用于监控和分析SQL Server数据库的运行情况,特别是针对查询性能的诊断和优化。这个绿色版可能是为了方便用户快速部署和使用,无需安装即可运行。在MS Server 2008...

      oracle sql 跟踪

      在PL/SQL中,可以使用`DBMS_SESSION.SPECIAL_REGISTERS`过程,设置`SQL_TRACE`参数为TRUE来启动跟踪。对于特定会话,可以使用如下命令: ```sql BEGIN DBMS_SESSION.SPECIAL_REGISTERS( USERENV('SESSIONID') =&gt; ...

      BLOG_Oracle_lhr_【方法整理】Oracle 获取trace跟踪文件名的几种常用方式.pdf

      例如,为了记录SQL执行计划,可以使用如下命令: ```sql ALTER SESSION SET EVENTS '10046 trace name SQL_trace format OUTFILE'; ``` 其中`10046`是事件号,用于触发SQL跟踪;`trace name SQL_trace`指定了跟踪...

      Tidy 代替tkprof,Oracle Trace 跟踪文件格式化工具

      这些跟踪文件包含了数据库执行的详细信息,如SQL语句、执行计划、等待事件等,但原始的跟踪文件数据往往混乱且不易读。这时,我们就需要一些工具来帮助我们解析和格式化这些信息。"Tidy" 和 "tkprof" 就是两个这样的...

      weblogic配置SQL跟踪

      可以使用Oracle的 tkprof 工具或者第三方工具(如SQL Developer)来解析和分析这些跟踪文件,以便更好地理解SQL语句的执行情况。 **五、注意事项** - SQL跟踪会产生大量的日志数据,因此在生产环境中谨慎使用,...

      跟踪PB提供的SQL的程序

      用法:先运行PB程序,然后运行HOOK。EXE,选择第一个图标,然后在程序列表中选择要跟踪的P B程序即可。当你继续运行PB程序后,所有的SQL 语句都会在HOOK 中被列出。

      使用扩展SQL跟踪数据诊断性能

      【使用扩展SQL跟踪数据诊断性能】 在数据库性能优化领域,正确地诊断问题至关重要。本文以Oracle数据库为例,探讨如何利用扩展SQL跟踪数据来有效地找出性能瓶颈。作者Cary Millsap指出,传统的检查清单方法,如关注...

    Global site tag (gtag.js) - Google Analytics