tkprof

 1.设置sql trace

  (1)实例级

  初始化参数据SQL_TRACE=TRUE

  (2)对话级

  ALTER SESSION SET SQL_TRACE=TRUE

  DBMS_SESSION.SQL_TRACE(SQL_TRACE)

  DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(SID,SERIAL#,S QL_TRACE);

  (3).trc文件存放的位置

  查看初始化参数:用户跟踪文件user_dump_dest

  2.设置时间统计(这样就可以统计每个sql执行的时间)

  alter system set timed_statistics=true scope=both;

  3.tkprof的使用

  tkprof可对.trc文件进行分析,并天生一个分析文件.并且在分析.trc文件,天生分析文件时按各种选项进行排序,其中比较有用的一个排序选项是fchela,即按照elapsed time fetching来对分析的结果排序(记住要设置初始化参数time_statistics=true),天生的.prf文件将把最消耗时间的sql放在最前面显示。另外一个有用的参数就是sys,这个参数设置为no可以阻止所有以sys用户执行的sql被显示出来,这样可以减少分析出来的文件的复杂度,便于查看。

  举例:

  (1)设置跟踪SID,SERIAL#O为12.73

  exec dbms_system.SET_SQL_TRACE_IN_SESSION(12,73,true);

  (2)查询天生的.trc文件号

  select spid from v$process where addr = (select paddr from v$session where sid=12);

  (3)使用tkprof天生分析文件

  c:\>tkprof e:\oracle\admin\rainny\rainny_ora_4188.trc c:\rainny.prf aggregate=yes sys=no sort=fchela(此例中将执行最耗时的sql放在分析文件的开头)

  (4)打开.prf文件

  可用ultraedit打开查看天生的分析文件

  1.Tkprof是一个分析ORACLE跟踪文件并且产生一个更加人性化清楚的输出结果的可执行工具。C:\oracle\ora92\bin\tkprof.exe

  2. tkprof 全称

  参考信息

  .itpub./showthread.php?s=cbfea4845ef5 b2a3f4adb00de0de9317&threadid=&highlight=tkpr of

  3. 基本的使用步骤

  1) SQL> alter system set timed_statistics=true;

  2) 用户级自跟踪:

  SQL>ALTER SESSION SET SQL_TRACE=TRUE;

  SQL>ALTER SESSION SET SQL_TRACE=FALSE;

  用户级DBA跟踪:(例如sys跟踪test,需要用sysdba登录)

  a). SQL>select s.USERNAME,s.SID,s.SERIAL#,s.COMMAND from v$session s

  where s.USERNAME='COLM' ;

  b). SQL>exec sys.dbms_system.set_sql_trace_in_session(9,7,true) ;

  c). SQL>exec sys.dbms_system.set_sql_trace_in_session(9,7,false );

  ps:9为SID,7为SERIAL#

  3) C:> cd C:\oracle\admin\COLM\udump

  4) C:\oracle\admin\COLM\udump> tkprof colm_ora_2056.trc trace.txt print=100 record=sql.txt sys=no

  5) 查看trace.txt文件

  范例:

  ************************************************** *****************************

  SELECT *

  FROM

  col_case

  call count cpu elapsed disk query current rows

  ------- ------ -------- ---------- ---------- ---------- ---------- ----------

  Parse 1 0.00 0.00 0 0 0 0

  Execute 0 0.00 0.00 0 0 0 0

  Fetch 0 0.00 0.00 0 0 0 0

  ------- ------ -------- ---------- ---------- ---------- ---------- ----------

  total 1 0.00 0.00 0 0 0 0

  Misses in library cache during parse: 1

  Optimizer goal: CHOOSE

  Parsing user id: 62 需要调整的语句符合以下几点:(1).CPU占用过多(2).Parse,Execute,Fetch花费太多时间(3).DISK读取太多,query/current(SGA)中数据块读取太少(4).访问很多块,只返回2行

  首先解释输出文件中列的含义:

  CALL:每次SQL语句的处理都分成三个部分

  Parse:这步将SQL语句转换成执行计划,包括检查是否有正确的授权和所需要用到的表、列以及其他引用到的对象是否存在。

  Execute:这步是真正的由Oracle来执行语句。对于insert、update、delete操纵,这步会修改数据,对于select操纵,这步就只是确定选择的记录。

  Fetch:返回查询语句中所获得的记录,这步只有select语句会被执行。

  COUNT:这个语句被parse、国货护肤品execute、fetch的次数。

  CPU:这个语句对于所有的parse、execute、fetch所消耗的cpu的时间,以秒为单位。

  ELAPSED:这个语句所有消耗在parse、execute、fetch的总的时间。

  DISK:从磁盘上的数据文件中物理读取的块的数目。一般来说更想知道的是正在从缓存中读取的数据而不是从磁盘上读取的数据。

  QUERY:在一致性读模式下,所有parse、execute、fetch所获得的buffer的数目。一致性模式的buffer是用于给一个长时间运行的事务提供一个一致性读的快照,缓存实际上在头部存储了状态。

  CURRENT:在current模式下所获得的buffer的数目。一般在current模式下执行insert、update、delete操纵都会获取buffer。在current模式下假如在高速缓存区发现有新的缓存足够给当前的事务使用,则这些buffer都会被读进了缓存区中。

  ROWS: 所有SQL语句返回的记录数目,但是不包括子查询中返回的记录数目。对于select语句,返回记录是在fetch这步,对于insert、update、delete操纵,返回记录则是在execute这步。

  sort参数是用来指定输出的SQL是按什么数据来排序(如cpu时间或elapsed时间,详见tkprof的使用参数说明)

  在report.txt中有关于每个SQL的parse/execute/fetch/disk read/buffer get/cpu time/执行计划(包括每一步运行时的行数),

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值