`

oracle tkprof 分析sql执行计划

阅读更多

oracle   tkprof  分析sql执行计划

 

 

1)开启系统级sql追踪

alter system set sql_trace= true ;

select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr = b.addr and a.machine='yangyang(计算机名)';

 

----http://www.iteye.com/topic/19024  (部分引用)
SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr = b.addr and a.machine='yangyang'; 

SPID                SID    SERIAL#
------------ ---------- ----------
MACHINE
----------------------------------------------------------------
4007               5487          4
yangyang

4009               5483          1
yangyang

4013               5482          2
yangyang

SQL> execute sys.dbms_system.set_ev(49, 3406,10046,1,'');                                                       

SQL> execute sys.dbms_system.set_ev(5487,4,10046,1,'');

PL/SQL procedure successfully completed.

SQL> execute sys.dbms_system.set_ev(5487,4,10046,0,'');

 

获取本机

2) 访问数据库后,要关闭追踪

alter system set sql_trace= false ;

 

3)获得追踪计划保存的文件

SELECT    d.VALUE
       || '/'
       || LOWER (RTRIM (i.INSTANCE, CHR (0)))
       || '_ora_'
       || p.spid
       || '.trc' trace_file_name
  FROM (SELECT p.spid
          FROM v$mystat m, v$session s, v$process p
         WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
       (SELECT t.INSTANCE
          FROM v$thread t, v$parameter v
         WHERE v.NAME = 'thread'
           AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
       (SELECT VALUE
          FROM v$parameter
         WHERE NAME = 'user_dump_dest') d

可以制作成sql文件放在linux系统下 例如保存为 trace_sql.sql

 

@/home/netmessage/trace_sql.sql


SQL> @/home/netmessage/trace_sql.sql
 17  ;

TRACE_FILE_NAME
--------------------------------------------------------------------------------
/opt/oracle/admin/orcl/udump/orcl_ora_11822.trc

 

 

4)分析追踪计划 用tkprof (linux 下tkprof 报错,所以在xp下进行分析了一下,linux 找到tkprof 所在的bin 就可以了,应该是8i 以上 在oracle bin中有存在)

    C:\Documents and Settings\Administrator>tkprof d:\sql.trc d:\sql.txt

 

 

 

看一下执行计划的分析结果:

 

 


TKPROF: Release 10.2.0.1.0 - Production on 星期一 3月 26 18:39:22 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Trace file: d:\sql.trc
Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************

alter system set sql_trace=true


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      1      0.00       0.06          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        1      0.00       0.06          0          0          0           0

Misses in library cache during parse: 0
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
********************************************************************************

SELECT PT.VALUE
FROM
 SYS.V_$SESSTAT PT WHERE PT.SID=:1 AND PT.STATISTIC# IN (7,47,50,54,134,335,
  336,337,341,342) ORDER BY PT.STATISTIC#


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 mode: ALL_ROWS
Parsing user id: SYS
********************************************************************************

select obj#,type#,ctime,mtime,stime,status,dataobj#,flags,oid$, spare1,
  spare2
from
 obj$ where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null
  and linkname is null and subname is null


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          4          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.00       0.00          0          4          0           1

Misses in library cache during parse: 0
Optimizer mode: CHOOSE
Parsing user id: SYS   (recursive depth: 1)

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=0 pw=0 time=71 us)
      1   INDEX RANGE SCAN I_OBJ2 (cr=3 pr=0 pw=0 time=50 us)(object id 37)

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

select cols,audit$,textlength,intcols,property,flags,rowid
from
 view$ where obj#=:1


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 mode: CHOOSE
Parsing user id: SYS   (recursive depth: 1)

 

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

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.06          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.06          0          0          0           0

Misses in library cache during parse: 1
Misses in library cache during execute: 1


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        2      0.00       0.00          0          0          0           0
Execute      2      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          7          0           2
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        6      0.00       0.00          0          7          0           2

Misses in library cache during parse: 0

    2  user  SQL statements in session.
    2  internal SQL statements in session.
    4  SQL statements in session.
********************************************************************************
Trace file: d:\sql.trc
Trace file compatibility: 10.01.00
Sort options: default

       2  sessions in tracefile.
       3  user  SQL statements in trace file.
       2  internal SQL statements in trace file.
       4  SQL statements in trace file.
       4  unique SQL statements in trace file.
      45  lines in trace file.
      82  elapsed seconds in trace file.

 

分享到:
评论

相关推荐

    oracle怎么查看执行计划

    假设我们需要分析以下SQL语句的执行计划: ```sql SELECT d.dname, e.ename, e.sal FROM dept d, emp e WHERE d.deptno = e.deptno; ``` 我们可以按照以下步骤操作: 1. 开启AUTOTRACE: ```sql SQL> set ...

    Oracle跟踪文件分析工具TKPROF使用简介[文].pdf

    使用TKPROF分析时,它会提供详细的执行计划、执行时间、I/O信息以及可能的优化建议。通过这些信息,可以识别出低效的SQL语句,并进行相应的优化,比如调整索引、重写SQL或者修改应用程序逻辑,以提升数据库性能。 ...

    Oracle高性能SQL调整

    资源名称:Oracle高性能SQL调整内容简介:本书由Oracle公司授权,向读者详尽阐述如何调整SQL语句、查看内部执行计划和更改执行计划以提高语句性能。主要内容包括:理解SQL调整在Oracle总体微调中地地位,使用诸如...

    使用 Tkprof 分析 ORACLE 跟踪文件

    使用 Tkprof 分析 ORACLE 跟踪文件 Tkprof 是一个功能强大的工具,用于分析 Oracle 跟踪文件...通过 Tkprof 工具,可以对 Oracle 跟踪文件进行分析,找出有问题的 SQL 语句,并对其进行优化,从而提高系统的执行效率。

    oracle高性能sql调整

    通过EXPLAIN PLAN或DBMS_XPLAN可以查看执行计划,分析其效率。 2. **索引优化**:索引能显著提升查询速度,但过度使用或错误使用可能导致写操作变慢。选择合适的数据类型和索引类型(如B树、位图、函数索引等)至关...

    《Oracle高性能SQL调整》

    使用语如内嵌视图和BIF扩展提高QraleSQL性能,确定并报告程序库缓存中的SQL语句,调整SQL表访问、完整表扫描和平行查询,运行TKPROF获得SQL跟踪报告,使用Oracle线索为OracleSQL语句更改执行计划,使用Oracle8i优化...

    读懂oracle的执行计划

    在数据库管理系统领域中,Oracle数据库是其中的佼佼者,特别是在企业级应用中。...对于任何希望深化对Oracle数据库优化理解的数据库管理员或开发者来说,学会读懂和分析执行计划是实现高效数据库管理的基础。

    Tidy 代替tkprof,Oracle Trace 跟踪文件格式化工具

    tkprof通过解析跟踪文件中的SQL语句,生成包含执行计划、统计信息和性能指标的输出文件。它还可以帮助识别绑定变量,但其功能相对有限,尤其是在处理大量数据或复杂查询时,tkprof可能无法提供足够的细节,特别是...

    oracle执行计划建立与阅读

    了解和分析执行计划对于提升SQL语句的性能至关重要。 一、生成执行计划的方法 1. **使用EXPLAIN PLAN** 在`SQL*Plus`环境中,可以使用`EXPLAIN PLAN FOR`命令来生成执行计划。例如: ``` SQL> explain plan for...

    SQL执行计划之sql_trace

    - 当使用 `explain=` 参数时,tkprof 会为每一个 SQL 语句生成 EXPLAIN PLAN 结果,这些结果可以帮助分析 SQL 语句的执行计划,了解每一步操作的具体情况,包括使用的索引、访问的数据量等信息。 3. **TRACE 文件...

    ORACLE执行计划和SQL调优知识概述.pptx

    EXPLAIN PLAN 是一种分析执行计划的工具,可以帮助开发者了解 SQL 语句的执行计划和成本。SQL_TRACE 是一种追踪 SQL 语句执行的工具,可以帮助开发者了解 SQL 语句的执行时间和资源消耗。TKPROF 是一种格式化 SQL_...

    Oracle高性能SQL调整.pdf

    SQL性能分析是调优的第一步,它包括识别慢查询、理解执行计划和资源消耗。通过工具如Explain Plan或SQL Trace,我们可以分析SQL语句的执行路径和成本,找出可能导致性能问题的因素。 二、索引策略 索引是提高查询...

    Tkprof工具介绍和分析

    在实际操作中,我们还可以结合`explain=`选项来查看这些SQL语句的执行计划,进一步分析其性能问题的原因。此外,使用`insert=`选项将SQL语句以INSERT格式输出,可以帮助我们更快地重现问题,并进行针对性的测试和...

    Oracle SQL语句跟踪

    在Oracle数据库系统中,SQL语句跟踪能够帮助我们收集关于SQL执行的详细信息,包括执行计划、资源消耗、等待事件等,这对于理解和改进数据库的性能至关重要。 首先,我们来了解Oracle SQL语句跟踪的基础知识。在...

    oracle高性能SQL调整

    了解并监控优化器的行为,如通过EXPLAIN PLAN分析执行计划,可以帮助我们理解查询优化过程,并找到潜在的性能问题。 此外,绑定变量、执行计划稳定性、物化视图、分区策略等也是SQL调整的重要方面。绑定变量可以...

    oracle高性能sql调整(全)

    理解SQL调整在Oracle总体微调中地地位,使用诸如内嵌视图和BIF扩展提高Oracle SQL性能,确定并报告程式库缓存中的SQL语句,调整SQL表访问、完整表扫描和平行查询,运行TKPROF获得SQL跟踪报告,使用Oracle线索 ...

    oracle sql优化

    通过分析执行计划,我们可以识别潜在的性能瓶颈,例如高成本的操作,然后针对这些环节进行优化。 二、索引策略 索引是提高查询速度的重要手段。合理创建单列索引、复合索引、唯一索引和函数索引,可以显著提升查询...

    Oracle SQL Tuning.pdf

    优化阶段,Oracle的查询优化器会分析SQL语句,选择最有效的执行计划;最后是执行阶段,按照优化后的执行计划执行SQL语句。 二、识别问题SQL 识别问题SQL是调优的第一步。通常,可以通过监控工具或日志文件来识别...

Global site tag (gtag.js) - Google Analytics