使 SQL_TRACE 设置SQL 跟踪非常简单,SQL_TRACE是一个参数,只需要在会话层将它设置为 TRUE,就开启了 SQL 跟踪,Oracle 将会把 SQL 语句的执行过程记录到跟踪文件中。通过查阅跟踪文件,将利于你了解 SQL 语句的执行过程,这将帮助你调优、排故 SQL语句。

跟踪文件的位置在 user_dump_dest 初始化参数中,如下方法可以显示出跟踪文件的位置:

SQL> show parameter user_dump_dest 
NAME                                 TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
user_dump_dest                       string      E:\ORACLE\PRODUCT\10.2.0\ADMIN 
                                                 \JJONE\UDUMP 
  在我的主机中,跟踪文件在 E:\ORACLE\PRODUCT\10.2.0\ADMIN\JJONE\UDUMP 中。

下面我们练习一次 SQL跟踪。

步 1:启用跟踪: 
SQL> alter session set sql_trace=true; 
会话已更改。

注意要在会话层设置此参数,不要在实例层设置。

步 2:执行需要跟踪的 SQL 语句

SQL> select * from ui1 where id=1; 
        ID NAME 
---------- ----- 
         1 1 
  我们在此随变执行个什么语句都行,Oracle 会将此语句的执行过程记录到跟踪文件中。

步 3:关闭跟踪 
SQL> alter session set sql_trace=false; 
会话已更改。 
  注意,在执行完想要跟踪的语句后,要马上关闭跟踪。以免不必要的语句的执行过程也被记录到跟踪文件中。这将影响阅读跟踪文件的结果。

步 4:查阅跟踪文件: 
  到 E:\ORACLE\PRODUCT\10.2.0\ADMIN\JJONE\UDUMP 目录中,找到日期最新的文件,它就是 Oracle刚刚生成的跟踪文件。在本例中,它的名字“jjone_ora_3600.trc” 。打开它查看,此时它的信息还不是太容易理解,Oracle 为了帮助我们阅读 SQL 的跟踪文件,专门提供了一个 TKPROF 工具,在操作系统命令提示符下(注意不是在 SQLPLUS 中),输入如下命令:

C:\>tkprof E:\ORACLE\PRODUCT\10.2.0\ADMIN\JJONE\UDUMP\jjone_ora_3600.trc sql1.txt 
TKPROF: Release 10.2.0.1.0 - Production on 星期三 10 月 15 12:01:00 2008 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

tkporf 工具的使用非常简单,只需输入:“tkprof 跟踪文件 目标文件”即可,Tkprof将会把跟踪文件处理为更容易阅读的格式,并把处理结果保存到你指定的目标文件中。目标
文件也是普通的文本型文件,可以使用任何文本编辑软件打开。

在目标文件中,我们搜索 UI1,可以方便的找到所跟踪的语句,你将看到如下信息: 
select *  from  ui1 where id=1

call     count       cpu    elapsed       disk      query    current        rows 
------- ------  -------- ---------- ---------- ---------- ----------  ---------- 
Parse        1      0.00       0.02          0          0          0           0 
Execute      1      0.00       0.00          0          0          0           0 
Fetch        2      0.00       0.02          3          4          0           1 
------- ------  -------- ---------- ---------- ---------- ----------  ---------- 
total        4      0.00       0.04          3          4          0           1 
Misses in library cache during parse: 1 
Optimizer mode: ALL_ROWS 
Parsing user id: 66   
Rows     Row Source Operation 
-------  --------------------------------------------------- 
      1  TABLE ACCESS BY INDEX ROWID UI1 (cr=4 pr=3 pw=0 time=27320 us) 
      1   INDEX RANGE SCAN UI1_ID (cr=3 pr=2 pw=0 time=23332 us)(object id 52405)

在你的语句之下,首先是一个表格,它通常有三行组成,它显示该查询各阶段的重要的执行统计数据。这三行代表查询的三个主要阶段:

解析(Parse):此阶段是Oracle 的优化器为 SQL语句生成执行计划的阶段。

执行(Execute):此阶段是服务器进程按照执行计划执行语句的阶段。

抓取(Fetch):此阶段是服务器进程从表中抓取结果的阶段。只有 Select 语句才需要此阶段,Update、Insert、Delete 等这些 DML 语句并不需要抓取行。

这个表格通常包括八列,这八列意义如下: 
Call:说明了语句执行的每个阶段。 
Count:此阶段的执行次数。 
CPU:完成此阶段工作所耗的 CPU 时间,单位是毫秒。 
Elapsed:完成此阶段工作所耗费的 CPU 时间再加上等待的时间,单位也是毫秒。 
Disk:完成此阶段工作所用的物理读次数。 
Query:完成此阶段工作所用的一致读次数。 
Current:完成此阶段工作所用的当前读次数。Query和 Current 加起来就是逻辑读。 
Rows:完成此阶段工作所操作的行数。

接下来一行:“Misses in library cache during parse:”说明硬解析的次数,本例中语句的执行进行了一次硬解析。

“Optimizer mode”是优化器模式,这个我们会在 SQL 调优章节中详细讲述它的意义。

最后几行是执行计划,这也是后面章节的内容。 
  另外,我们在目标文件中还会发现大量的其他语句,注意,我们在跟踪其间,只执行了一条 SQL 语句,跟踪文件中其他的语句,其实就是所谓的递归调用。也就是为了完成我们的语句,Oracle 内部执行的一些其他的 SQL 语句。

通过观察跟踪文件的目标文件,我们可以观察到比较精确的 CPU 时间、物理读逻辑读等信息,这有助于我们了解一条 SQL语句是否有效。

SQL_TRACE的作用相关推荐

  1. SQL_TRACE与tkprof分析

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

  2. oracle trace进程,ORACLE SQL_TRACE的使用

    "SQL TRACE"是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,"SQL TRACE"是非常常用的方 ...

  3. oracle看一条sql的trace,SQL_TRACE和10046事件详解

    sql_trace和10046事件都是我们在优化sql上面应用的非常多的工具,我们可以使用这两个工具知道当前正在执行的sql究竟在做什么 一,SQL_TRACE: SQL_TRACE命令会将执行的整个 ...

  4. Oracle Hints,Oracle并行模式(Parallel) /*+parallel(t,4)*/ 在SQL调优中的重要作用

    /*+parallel(t,4)*/在SQL调优中的重要作用! 2013年11月17日 12:59:24 雾里看花5566 阅读数:5422更多 个人分类: 数据库-oracle 谈谈HINT /*+ ...

  5. Object的finalize()方法的作用是否与C++的析构函数作用相同

    Object的finalize()方法的作用是否与C++的析构函数作用相同 public class Finalization {private static Finalization finaliz ...

  6. 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin

    1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...

  7. 【B/S实践】解决:vs中修改样式表后不起作用的问题

    缓存,有好多,cpu和内存之间的三级缓存,浏览器内的缓存! 缓存是因为速率不对等,通过缓存来加速内容的显示! 今天我在敲牛腩的时候遇到一个问题,找了半小时,才发现是缓存导致的问题! 试着运行aspx文 ...

  8. 卷积神经网络之卷积计算、作用与思想 深度学习

    博客:blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域,卷积核.滤波器通常为较小尺寸的矩阵,比如3×33×3.从这个角度看,多层卷积是在进行逐层映射,整 ...

  9. 机器学习——标准化/归一化的目的、作用和场景

    对每个特征进行归一化处理,使得每个特征的取值缩放到0~1之间.这样做有两个好处: 模型训练更高效. 特征前的权重大小可代表该变量对预测结果的贡献度(因为每个特征值本身的范围相同). (一)归一化的作用 ...

最新文章

  1. GAAFET与FinFET架构
  2. Ubuntu16.04LTS安装集成开发工具IDE: CodeBlocks 和Eclipse-cdt
  3. C#学习笔记之线程 - 同步上下文
  4. HDU4394(数论中的广搜)
  5. 又跑回去拿的即时通讯
  6. 压测|关于PHP7和5.6的压测对比
  7. opensource项目_最佳Opensource.com:开放的组织文化
  8. indesign照片放入太大_照片打印机,小米、华为到底哪家强?
  9. 机器学习之SVM多分类
  10. 公式中的引号怎么输_Excel计数函数中这些奇怪的参数让我百思不得其解!
  11. mysql里的char和varchar
  12. python13文件_python中13个实用的文件操作
  13. 闲置笔记本的群晖NAS初体验
  14. 西数云存储 重置 使用手册_如何重置IE浏览器(以IE8 为例),并添加信任网址...
  15. 代挂php源码,[PHP源码]开心QQ等级代挂源码,无后门任意搭建分站
  16. 无法为此计算机验证安装的驱动,无法为此计算机验证正在安装的驱动程序怎么办?...
  17. 判断字符是否为字母或者数字
  18. Out of range value for column
  19. STM32外部中断干扰解决方案
  20. 示波器常用的13个概念

热门文章

  1. 扣扣浏览器mini java_WebQQ Mini各种浏览器试用
  2. SAP STMS导入队列显示队列末尾
  3. OpenCV视频质量诊断----视频遮挡诊断
  4. word图文混排复制到wangEditor图片不显示
  5. 通过RSA实现数字签名
  6. DNS域名劫持的几种解决方法
  7. 【Java基础】Java入门(一)
  8. 线性泛函分析之对偶基
  9. 作为通信人,我们究竟该如何看待AI?
  10. Parsec [error-800] Internet无法访问的解决方案