跟踪文件的位置
show parameter user_dump_dest
sql_trace分析步骤
1. 启用跟踪
alter session set sql_trace=true;
2.执行sql
select * from emp where id='id' ;
3.关闭跟踪
alter session set sql_trace=false;
4.查阅跟踪文件
在跟踪文件的位置找到跟踪文件,用下面的命令格式化输出到sql.txt中
C:\>tkprof xxxx.trc sql.txt
格式化后的文件说明
解析(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语句,跟踪文件中其他的语句,其实就是所谓的递归调用。也就是为了完成我们的
语句,Oracle内部执行的一些其他的 sql语句。
通过观察跟踪文件的目标文件,我们可以观察到比较精确的 cpu时间、物理读逻辑读等
信息,这有助于我们了解一条 sql语句是否有效。
跟踪方法二:10046事件
我们用10046事件也能完成 sql跟踪,只需要将“alter session set sql_trace=true”
换成“alter session set events ‘10046 trace name context forever,level 1’”,
就可以完成一模一样的工作,这条语句也是开启sql 跟踪。结束跟踪的语句是:
alter session set events ‘10046 trace name context off’;
转 http://www.cnblogs.com/shenfeng/p/oracle_sql_trace.html
转http://www.cnblogs.com/zhaoguan_wang/p/5127982.html
转http://luoping.blog.51cto.com/534596/1097826/
转http://blog.itpub.net/29320885/viewspace-1223962/
转http://www.eygle.com/archives/2011/02/dba_event_10046_10053.html
转http://www.jb51.cc/article/p-bcbaanpm-bmn.html
转http://www.cnblogs.com/andy6/p/5846943.html
转http://czmmiao.iteye.com/blog/1497509
转http://blog.csdn.net/yuzhenhuan01/article/details/5834838
转http://blog.itpub.net/519536/viewspace-216982/
转http://www.2cto.com/database/201308/232838.html
转http://www.docin.com/p-758931828.html
转http://www.jb51.net/article/39931.htm
转http://blog.chinaunix.net/uid-26922071-id-4033774.html
转http://www.jb51.cc/article/p-aflucwpq-bhv.html
转http://blog.itpub.net/17252115/viewspace-751541/