当前位置:  数据库>oracle

在Oracle中利用SQL_TRACE跟踪SQL的执行

    来源: 互联网  发布时间:2017-05-08

    本文导语: 当你在执行一条SQL语句非常慢的时候,你是不是想问Oracle怎么执行这条语句的呢?Oracle提供的SQL_TRACE工具可以让你知道你执行的SQL究竟做了什么.执行的过程会被输出到trace文件中。 下面用例子来跟踪一个SQL语句的执行情况: SQL> creat...

当你在执行一条SQL语句非常慢的时候,你是不是想问Oracle怎么执行这条语句的呢?
Oracle提供的SQL_TRACE工具可以让你知道你执行的SQL究竟做了什么.执行的过程会被输出到trace文件中。

下面用例子来跟踪一个SQL语句的执行情况:

SQL> create table t as select rownum as id,object_name from dba_objects;
Table created.
SQL> create index t_ind on t(id);
Index created.
SQL> alter session set tracefile_identifier='mysession';
Session altered.




生成的trace文件的路径是$ORACLE_BASE/admin/SID/udump目录.
上面的语句是让生产trace文件名包括mysession,如本例中在

D:oracleproduct10.2.0adminorcludump生成了orcl_ora_5732_mysession.trc
SQL> alter session set sql_trace=true;
Session altered.
SQL> select * from t where id=123;
ID     OBJECT_NAME
123    I_ACCESS1
SQL> alter session set sql_trace=false;
Session altered.






一般来讲生成的trace文件比较难读,可以用tkprof来生成一个更可读的文件.
注意tkprof是Oracle带的一个命令行工具,不是SQLPLUS命令.

在另外一个命令行中进入D:oracleproduct10.2.0adminorcludump目录
D:oracleproduct10.2.0adminorcludump>tkprof orcl_ora_5732_mysession.trc orcl_ora_5732_mysession.txt
TKPROF: Release 10.2.0.1.0 - Production on Fri Sep 14 16:59:12 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.


打开 orcl_ora_5732_mysession.txt文件,可以看到执行SQL的信息:
select *
from
 t where id=123
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.04       0.30          0          2          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          4          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.04       0.30          0          6          0           1
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 61 
Rows     Row Source Operation
-------  ---------------------------------------------------
      1  TABLE ACCESS BY INDEX ROWID T (cr=4 pr=0 pw=0 time=86 us)
      1   INDEX RANGE SCAN T_IND (cr=3 pr=0 pw=0 time=67 us)(object id 57205)

















    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • win2000+jbuilder6+oracle817编出的程序,在win2000下执行很好,在win98下却访问不了oracle数据库 iis7站长之家
  • win2000+jbuilder6+oracle817编出的程序,在win2000下执行很好,在win98下却访问不了oracle数据库
  • oracle 可以在crontab 中定时执行吗?
  • oracle sql执行过程(流程图)
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • ORACLE安装时/tmp/orainstRoot.sh 执行发生错误
  • 求救:HPUNIX下的ORACLE7执行select * from tablename提示权限不足!!
  • 为什么 export ORACLE_SID=test写在程序里面就不会执行?
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • shell调用oracle储存过程,怎么判断储存过程执行结果是否正确
  • shell 执行oracle sql脚本的问题
  • oracle单库彻底删除干净的执行步骤
  • 查看Oracle的执行计划一句话命令
  • 关于ORACLE中执行批处理的问题
  • oracle中得到一条SQL语句的执行时间的两种方式
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • Nagios check_oracle_health 关于执行SQL问题
  • 执行Commit时Oracle做哪些工作
  • RedHat AS 4 安装oracle9i的时候,执行Disk1下的runInstaller后提示正在初始化虚拟机,请等待后就再无反应
  • JBUILDER如何执行ORACLE的储存过程
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,