ACCESSOracle sql trace用法

二、用法:
   1、文件跟踪的分类:
      跟踪DBA可以动用两种方式开展跟踪:
    . 跟踪整个数据库实例。只须求容易的修改参数文件(pfile/spfile)参数
SQL_TRACE = TRUE
,然后再度起动数据库即可。在大局启用SQL_TRACE会导致所有进度的移位被跟踪,包含后台进度及拥有用户进度,那样也会数据库导致性能下降比较明显。
    .
会话级跟踪。SQL_TRACE的不以为奇采用格局是仅跟踪一个对话。被跟踪的对话可以是你自己的,也得以是此外用户的对话。若是是投机的对话,只必要在SQL*PLUS中运行一下命令即可:
      SQL> alter session set sql_trace = true;
      类似的只要废除对会话的跟踪,运行一下下令:
      SQL> alter session set sql_trace = false;
     
      如若必要跟踪一个特定的对话,首先须要得到会话的SID和Serial#,那么些音信能够在视图V$SESSION中得到,一旦领悟了那七个参数,就足以运作一下指令:
      SQL> execute
SYS.dbms_system.set_sql_trace_in_session(13,9,true);
      同样也可以利用那些进度关闭会话跟踪:
    SQL> execute
SYS.dbms_system.set_sql_trace_in_session(13,9,false);
 
  2、跟踪文件的职位:
     一旦为会话激活了SQL_TRACE,ORACLE就会在udump管理区创造跟踪文件,文件的目的地方由参数user_dump_dest来确定。每个
操作都不会覆盖原来的文书,新的跟踪记录将会被追加到文件末尾。日常状态下,可以按照文件的修改时间判定目录下哪些文件是新型的文书。
   SQL> show parameter user_dump_dest;
  
   NAME                                 TYPE        VALUE

   ———————————— ———–

   user_dump_dest                       string      d:oracleadminora9iudump
  
   也足以因而以下SQL来确定文件名:
    
     select d.value||”||lower(rtrim(i.instance,
chr(0)))||’_ora_’||p.spid||’.trc’ trace_file_name 
   from 
   (
    select p.spid     
      from sys.v$mystat m,sys.v$session s,sys.v$process p
     where m.statistic# = 1
       and s.sid = m.sid
       and p.addr = s.paddr
   ) p,
   (
   select t.instance
     from sys.v$thread  t,sys.v$parameter  v 
    where v.name = ‘thread’
      and ( v.value = 0 or t.thread# = to_number(v.value) )
   ) i, 
   (
   select value from sys.v$parameter where name = ‘user_dump_dest’
   ) d ;

   TRACE_FILE_NAME
   ——————————————————————————–
  
   d:oracleadminora9iudumpora9i_ora_2060.trc  
 
 3、计时音讯:
    为了最大限度的选用跟踪文件,应该开辟计时声明,通过参数TIMED_STATISTICTS=TRUE举办设置,那样可以对各类SQL语句的执行时间等举行记录,这些效果对系统性能的负责很小。
    打开对话的计时新闻:
    SQL> alter session set timed_statistics = true ;
    打开数据库系统的计时音信
    SQL> alter system set timed_statistics = true ;
 
 4、TKPROF:
    通过前三步的设置已经知晓哪些生成SQL跟踪文件了,ORACLE生成的跟踪文件阅读起来很困难(也就是易读性很差),可以看跟踪文件的一局地,执行以下SQL语句:
   SQL> select count(*) from sys_dept;
  
    COUNT(*)
   ———-
          16   
   执行完后,查看跟踪文件中这一个讲话的情节如下:
   
    PARSING IN CURSOR #1 len=31 dep=0 uid=62 oct=3 lid=62
tim=14727407741 hv=2200985491 ad=’128e3820′
   select count(*) from sys_dept
   END OF STMT
   PARSE
#1:c=0,e=16348,p=1,cr=31,cu=0,mis=1,r=0,dep=0,og=4,tim=14727407735
   EXEC
#1:c=0,e=24,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=14727407814
   FETCH
#1:c=0,e=15641,p=5,cr=7,cu=0,mis=0,r=1,dep=0,og=4,tim=14727423807
   =====================
   PARSING IN CURSOR #2 len=61 dep=0 uid=62 oct=47 lid=62
tim=14727508742 hv=3517412409 ad=’12bbcff4′
   begin :id := sys.dbms_transaction.local_transaction_id; end;
   END OF STMT
   PARSE
#2:c=0,e=122,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=14727508735
   EXEC
#2:c=0,e=144,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=4,tim=14727508945
   =====================
   PARSING IN CURSOR #2 len=61 dep=0 uid=62 oct=47 lid=62
tim=14727587562 hv=3517412409 ad=’12bbcff4′
   begin :id := sys.dbms_transaction.local_transaction_id; end;
   END OF STMT
   PARSE
#2:c=0,e=121,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=14727587556
   EXEC
#2:c=0,e=97,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=4,tim=14727587721
  
   那样不仅涉猎麻烦,并且也有很多情节难以领悟。ORACLE提供了一个格式化跟踪文件的工具

  • TKPROF( Transient Kernel Profiler
    ),通过那么些工具能将SQL文件转载为分析人士不难领会的格式。
       
        一般TKPROF工具的利用的简要方法,只用到了七个举足轻重字:跟踪文件名和输出文件名
    (TKPROF的现实请参阅其余材料):
        TKPROF <trace file> <output file>
       
        在命令行格局下运作(数据库在window2000下安装的)
        C:>tkprof D:oracleadminora9iudumpora9i_ora_2060.trc
    d:report.txt
       
        执行完后,在reprot.txt中查询刚才的口舌内容如下:
        select count(*)
       from
       sys_dept
     
     
       call     count       cpu    elapsed       disk      query    current        rows
       ——- ——  ——– ———- ———- ———-
    ———-  ———-
       Parse        1      0.00       0.01          1         31          0           0
       Execute      1      0.00       0.00          0          0          0           0
       Fetch        1      0.00       0.01          5          7          0           1
       ——- ——  ——– ———- ———- ———-
    ———-  ———-
       total        3      0.00       0.03          6         38          0           1
      
       Misses in library cache during parse: 1
       Optimizer goal: CHOOSE
       Parsing user id: 62     
     
       通过设置tkprof的根本字[EXPLAIN =
    <username/password>],也足以在跟踪文件中扩张SQL语句的施行陈设:
      C:>tkprof D:oracleadminora9iudumpora9i_ora_2060.trc d:report.txt
    explain=test/test;  
      
      ********************************************************************************
     
      select count(*)
      from
       sys_dept
     
     
      call     count       cpu    elapsed       disk      query    current        rows
      ——- ——  ——– ———- ———- ———-
    ———-  ———-
      Parse        2      0.00       0.01          1         31          0           0
      Execute      2      0.00       0.00          0          0          0           0
      Fetch        2      0.00       0.01          5         14          0           2
      ——- ——  ——– ———- ———- ———-
    ———-  ———-
      total        6      0.00       0.03          6         45          0           2
     
      Misses in library cache during parse: 1
      Optimizer goal: CHOOSE
      Parsing user id: 62 
     
      Rows     Row Source Operation
      ——-  —————————————————
            1  SORT AGGREGATE
           16   TABLE ACCESS FULL SYS_DEPT

一、概述:
    SQL_TRACE是Oracle的一个要命强大的工具。打开SQL_TRACE就足以逐步捕获任何一个会话的数据库活动,或者捕获整个数据库的活动,并将数据库活动记录成跟踪文件。每一回使用完将来必要关闭跟踪,否则会下跌系统的性质。
    SQL_TRACE可以帮忙诊断许多题目,其中囊括:

sql_trace是oracle提供的一个那么些好的跟踪工具,主要用来检查数据库的相当意况,通过跟踪数据库的位移,找到有问题的讲话。

相关文章