使用TKPROF转换跟踪文件为可读格式

  Oracle可以使用ALTER SESSION来设置一个底层的跟踪,只要启用该跟踪,Oracle将所有的SQL和应用程序使用的顶层的
PL/SQL调用记录到服务器上的跟踪文件中(udump/*.trc)。该跟踪文件不仅有SQL和PL/SQL调用,也将包括定时的信息、
等待事件的信息,执行的逻辑I/O和物理I/O的数量、CPU和挂钟时间、已经处理的行数、带有行记数的查询计划等,但是.trc
文件很难阅读,我们可以使用TKPROF转换其为易读的格式。
     首先、为了起用跟踪并使得Oracle生成有效的.trc文件我们需要做的第一件事就是在session级别上开启SQL_TRACE:            
sql 代码
  1. alter session set timed_statistics=true;   
  2. alter  session  set  events '10046 trace  name  context forever, level  12';  
       上面的SQL语句1主要是设置定时系统,而第2句主要是开启跟踪:需要注意的一点是level <N>,说明如下:
                1    启用标准的SQL_TRACE工具,等价于SQL_TRACE=true
                4    启用SQL_TRACE并捕捉跟踪文件中的绑定变量
                8    启用SQL_TRACE并捕捉跟踪文件的等待事件
                12  启用标准的SQL_TRACE并捕捉绑定变量和等待事件

    如果您需要确认某个数据库中有多少.trc文件的话,这里有一个查询可以帮助您(Oracle9i)上调试通过:
              
sql 代码
  1. select rtrim(c.value,'/') || '/' || d.instance_name || '_ora_' || ltrim(to_char(a.spid)) || '.trc' from v$process a,v$session b,v$parameter c,v$instance d 
    where a.addr = b.paddr and b.audsid= sys_context('userenv','sessionid') 
    and c.name ='user_dump_dest';  
     测试结果大致为:
              absolute_path\dbname\udump/dbname_ora_384.trc
              absolute_path\dbname\udump/dbname_ora_2000.trc
    下面我们就使用TKPROF来转化dbname_ora_2000.trc为可读的格式(因为本人在win系统上做业,因此转换其为
.txt格式):
        >tkprof  dbname_ora_2000.trc  traceview.txt
    执行完此转化后会有一个traceview.txt文件在当前目录下生成(其内容我们结合具体的跟踪语句说明):
       这里我们随便执行一条查询语句:
      
sql 代码
  1. select count(*)  from test_trace_an;
  2. exit;--退出sql plus 
     
      假设上面的dbname_ora_2000.trc就是目前的跟踪结果:则使用TKPROF转化后的结果文件中,我们可以发现:
select count(*)  from test_trace_an

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          0          3          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.00       0.00          0          3          0           1
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: SYS
Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE
      1   TABLE ACCESS FULL OBJ#(30327)

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
至于该.txt文件该怎么阅读,以及从中可以看到什么信息,并将如何处理它所提供的数据…………待续


   

    

你可能感兴趣的:(oracle,sql,C++,c,C#)