`
liubaoshan
  • 浏览: 41811 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ORACLE中SQL TRACE和TKPROF的使用

阅读更多
SQL TRACE 和 tkprof sql语句分析工具

一 SQL TRACE 使用方法:
  1.初始化sql trace
    参数:
      timed_statistics=true  允许sql trace 和其他的一些动态性能视图收集与时间有关的参数、
      SQL>alter session set titimed_statistics=true
      max_dump_file_size=500 指定跟踪文件的大小
      SQL> alter system set max_dump_file_size=500;
      user_dump_dest  指定跟踪文件的路径
      SQL> alter system set user_dump_dest=/oracle/oracle/diag/rdbms/orcl/orcl/trace;
  
  2.为一个session 启动sql trace
   
     2.1命令方式
      alter session set sql_trace=true
     2.2 通过存储过程启动sqltrace
       select sid,serial#,osuser from v$session;
       SID    SERIAL# OSUSER
       168         1  oracle

       execute rdbms_system.set_sql_trace_in_session (168 ,1,true);
  3.停止一个sql trace 会话
      3.1 命令方式
       alter session set sql_trace=false
      3.2 储存过程的方式
        execute rdbms_system.set_sql_trace_in_session (168 ,1,false);
  4. 为整个实例启动SQL trace (一般消耗系统性能较高,不会用)
       alter system set sql_trace=true scope=spfile
     从新启动数据库
  5. 停止一个实例的sql trace
       alter system set sql_trace=flase scope=spfile

    启动sql trace 之后收集的信息包括
      1.解析、执行、返回数据的次数
      2.cpu和执行命令的时间
      3.物理读和逻辑读的次数
      4.系统处理的记录数
      5.库缓冲区错误
二 TKPROF的使用
     tkprof 的目的是将sql trace 生成的跟踪文件转换成用户可以理解的格式
    1. 格式
      tkprof inputfile outputfile [optional | parameters ]
    参数和选项:
     explain=user/password 执行explain命令将结果放在SQL trace的输出文件中
     table=schema.table 指定tkprof处理sql trace文件时临时表的模式名和表名
     insert=scriptfile 创建一个文件名为scriptfile的文件,包含了tkprof存放的输出sql语句
     sys=[yes/no] 确定系统是否列出由sys用户产生或重调的sql语句
     print=number 将仅生成排序后的第一条sql语句的输出结果
     record=recordfile 这个选项创建一个名为recorderfile的文件,包含了所有重调用的sql语句
     sort=sort_option 按照指定的方法对sql trace的输出文件进行降序排序
             sort_option 选项
                prscnt  按解析次数排序
                prscpu  按解析所花cpu时间排序
                prsela  按解析所经历的时间排序
                prsdsk  按解析时物理的读操作的次数排序
                prsqry  按解析时以一致模式读取数据块的次数排序
                prscu   按解析时以当前读取数据块的次数进行排序
                execnt  按执行次数排序
                execpu  按执行时花的cpu时间排序
                exeela  按执行所经历的时间排序
                exedsk  按执行时物理读操作的次数排序
                exeqry  按执行时以一致模式读取数据块的次数排序
                execu   按执行时以当前模式读取数据块的次数排序
                exerow  按执行时处理的记录的次数进行排序
                exemis  按执行时库缓冲区的错误排序
                fchcnt  按返回数据的次数进行排序
                fchcpu  按返回数据cpu所花时间排序
                fchela  按返回数据所经历的时间排序
                fchdsk  按返回数据时的物理读操作的次数排序
                fchqry  按返回数据时一致模式读取数据块的次数排序
                fchcu   按返回数据时当前模式读取数据块的次数排序
                fchrow  按返回数据时处理的数据数量排序
三 sql trace 的输出结果
         count:提供OCI过程的执行次数
         CPU:  提供执行CPU所花的时间单位是秒
         Elapsed:提供了执行时所花的时间。单位是秒。这个参数值等于用户响应时间
         Disk:提供缓存区从磁盘读取的次数
         Query:以一致性模式从缓存区获得数据的次数
         Current:以当前模式从缓存区获得数据的次数
         ROWs: 返回调用或执行调用时,处理的数据行的数量。

在report.txt文件头有各个数据的解释,根据以下一些指标可以分析一下SQL的执行性能:
query+current/rows 平均每行所需的block数,太大的话(超过20)SQL语句效率太低
Parse count/Execute count parse count应尽量接近1,如果太高的话,SQL会进行不必要的reparse。要检查Pro*C程序的MAXOPENCURSORS是不是太低了,或不适当的使用的RELEASE_CURSOR选项
rows Fetch/Fetch Fetch Array的大小,太小的话就没有充分利用批量Fetch的功能,增加了数据在客户端和服务器之间的往返次数。在Pro*C中可以用prefetch=NN,Java/JDBC中可调用SETROWPREFETCH,在PL/SQL中可以用BULK COLLECT,SQLPLUS中的arraysize(缺省是15)
disk/query+current 磁盘IO所占逻辑IO的比例,太大的话有可能是db_buffer_size过小(也跟SQL的具体特性有关)
elapsed/cpu 太大表示执行过程中花费了大量的时间等待某种资源
cpu  OR  elapsed 太大表示执行时间过长,或消耗了大量的CPU时间,应该考虑优化
执行计划中的Rows 表示在该处理阶段所访问的行数,要尽量减少

四:举例:
         sql>alter session set sql_trace=true              
         SQL>select * from dba_users;
         SQL>show parameter user_dump_dest
         user_dump_dest     string  /oracle/oracle/diag/rdbms/orcl/orcl/trace
         SQL>exit
         cd /oracle/oracle/diag/rdbms/orcl/orcl/trace
         tkprof orcl_ora_11066.trc /oracle/oracle/trace1.out sys=yes
         vi trace.out
分享到:
评论

相关推荐

    SQL Trace and TKPROF

    SQL Trace 和 TKPROF 是 Oracle 数据库中非常强大的性能分析工具,它们可以帮助 DBA 和开发人员深入了解数据库的运行状态,及时发现并解决性能问题。通过正确配置 SQL Trace 参数,启用 SQL Trace,以及合理使用 ...

    Oracle跟踪文件分析工具TKPROF使用简介[文].pdf

    总的来说,TKPROF是Oracle数据库管理和开发中不可或缺的工具,它通过对跟踪文件的解析,提供了深入了解SQL执行情况的能力,从而帮助提升系统的整体性能。正确理解和使用TKPROF,可以有效地诊断和解决数据库性能问题...

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

    使用Tidy,我们可以更直观地观察到SQL语句在执行过程中绑定变量的具体值,这对于理解和调试SQL性能问题至关重要。此外,Tidy可能还提供了更丰富的分析选项,如图表、时间线视图等,以便于性能分析人员更好地理解...

    SQL执行计划之sql_trace

    ### SQL执行计划之sql_trace详解 #### 一、SQL Trace简介 SQL Trace 是 Oracle 提供的一种强大工具,用于记录 SQL 语句的执行过程。...无论是日常维护还是性能调优,掌握 SQL Trace 和 tkprof 的使用都是非常重要的。

    10046事件和sql_trace.docx

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

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

    SQL TRACE是Oracle数据库中一种强大的诊断工具,它用于收集数据库操作的详细信息,帮助DBA(数据库管理员)和开发人员定位性能问题、分析查询执行路径以及优化SQL语句。本篇文章将深入探讨SQL TRACE的原理、使用方法...

    大牛出手Oracle SQL优化实例讲解

    6.sql trace分析工具--TKPROF详细讲解 7.V$SQL视图详解加几个实例 8.autotrace验证压缩表性能 9.autotrace验证消除子查询后的性能 10.基于基本的优化CBO 11.如何统计数据库数据 12.Oracle如何统计操作系统数据 13./*...

    OracleSQL跟踪技术TDV10.ppt

    除了SQL Trace和TKPROF,Oracle还提供了许多其他工具和视图,例如`v$session_wait`用于查看会话等待事件,`v$pgastat`显示PGA内存使用情况,以及`v$sql`和`v$sqlarea`记录SQL语句的历史执行信息。通过结合使用这些...

    ORACLE_SQL性能优化(全).ppt

    如使用SQL Trace和 TKPROF 分析查询执行过程,找出性能瓶颈;使用AWR(Automatic Workload Repository)和ASH(Active Session History)进行性能监控和诊断;通过EXPLAIN PLAN理解优化器的执行计划。 总的来说,...

    使用 Tkprof 分析 ORACLE 跟踪文件

    使用 Tkprof 分析 ORACLE 跟踪文件 Tkprof 是一个功能强大的工具,用于分析 Oracle 跟踪文件,生成一个更加清晰合理的输出结果。通过 Tkprof,可以对 Oracle 跟踪文件进行分析,找出有问题的 SQL 语句,并对其进行...

    Oracle SQL语句跟踪

    在Oracle中,有两种主要的跟踪方法:SQL Trace和10046事件。SQL Trace是最传统的跟踪方式,通过DBMS_SESSION包中的TRACE_ON和TRACE_OFF过程来开启和关闭跟踪。10046事件是更现代的方法,它允许更细粒度的控制和更...

    oracle数据库sql优化大全

    此外,还可以利用Oracle数据库提供的各种性能监控和分析工具,如SQL Trace、 tkprof 和AWR报告,来诊断和改进SQL性能。通过这些工具,可以找出执行慢的查询,分析其执行计划,然后进行相应的调整,如重构查询、创建...

    oracle sql优化

    Oracle提供了许多内置的性能分析工具,如SQL Trace、TKPROF、AWR报告等。通过这些工具,我们可以定位性能问题,进行针对性的优化。 总结来说,Oracle SQL优化是一个综合性的任务,需要考虑索引、连接方式、查询结构...

    Oracle sql performance

    书中会讲解如何使用Oracle的性能分析工具,如SQL Trace、 tkprof 和AWR报告,来定位和解决慢查询的问题。此外,它还会探讨数据库的物理结构优化,如表分区、索引优化、内存管理以及I/O调优,这些都是提升数据库性能...

    ORACLE数据库SQL语句编写优化总结.rar

    - **SQL Trace和TKPROF**:利用这些工具进行性能调试和优化。 4. **性能监控与调优**: - **V$视图**:了解如V$SESSION、V$SQL、V$SQLAREA等监控视图,用于跟踪SQL执行情况。 - **AWR和ASH报告**:分析数据库的...

    oracle sql 跟踪

    Oracle SQL跟踪是数据库管理员和开发人员用来诊断性能问题、调试SQL语句以及优化数据库操作的强大工具。在Oracle数据库系统中,SQL跟踪可以...正确使用和解读SQL跟踪,对于提升数据库性能和维护数据库健康至关重要。

    Oracle_SQL_Server.rar_oracle

    - **Oracle** 提供了强大的性能分析工具,如 SQL Trace、TKPROF 和 AWR 报告。 - **SQL Server** 提供 SQL Profiler、DMVs 和 Performance Monitor 来监控和优化性能。 在实际应用中,选择 Oracle 还是 SQL ...

    企业应用开发中Oracle的SQL优化.pdf

    - 《Oracle Performance Tuning with SQL Trace and TKPROF》:介绍如何使用SQL Trace和TKPROF进行性能诊断。 综上所述,Oracle SQL优化是一个综合性的任务,涉及到数据库设计、SQL编写、索引管理等多个方面。企业...

    Oracle.SQL必备参考

    12. **性能调优**:涉及EXPLAIN PLAN、V$视图、SQL Trace和TKPROF等工具,用于诊断和改进SQL查询的执行效率。 13. **存储过程与函数**:在Oracle中,存储过程和函数可以封装复杂的业务逻辑,提高代码复用和系统性能...

    oracle高级sql讲座

    8. **索引的使用和优化**:理解何时创建和使用索引,以及如何通过索引提高查询性能,是高级SQL的重要部分。 9. **游标(Cursor)**:游标允许逐行处理查询结果,对于迭代处理数据和动态SQL非常有用。 10. **存储...

Global site tag (gtag.js) - Google Analytics