[转自]http://wjhaishun.iteye.com/blog/657083
【更全面】http://www.sudu.cn/info/html/edu/20070101/283645.html
这个是对全局的
alter system set sql_trace=true
alter system set sql_trace=false
使 SQL_TRACE设置 SQL跟踪非常简单,SQL_TRACE 是一个参数,只需要在会话层将它设
置为TRUE,就开启了 SQL跟踪,Oracle将会把 SQL 语句的执行过程记录到跟踪文件中。通
过查阅跟踪文件,将利于你了解 SQL语句的执行过程,这将帮助你调优、排故 SQL语句。
跟踪文件的位置在 user_dump_dest 初始化参数中,如下方法可以显示出跟踪文件的位
置:
SQL> show parameter user_dump_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string E:\ORACLE\PRODUCT\10.2.0\ADMIN
\JJONE\UDUMP
在我的主机中,跟踪文件在 E:\ORACLE\PRODUCT\10.2.0\ADMIN\JJONE\UDUMP中。
下面我们练习一次 SQL跟踪。
步1:启用跟踪:
SQL> alter session set sql_trace=true;
会话已更改。
注意要在会话层设置此参数,不要在实例层设置。
步2:执行需要跟踪的 SQL语句
SQL> select * from ui1 where id=1;
ID NAME
---------- -----
1 1
我们在此随变执行个什么语句都行,Oracle会将此语句的执行过程记录到跟踪文件中。
步3:关闭跟踪
SQL> alter session set sql_trace=false;
会话已更改。
注意,在执行完想要跟踪的语句后,要马上关闭跟踪。以免不必要的语句的执行过程也
被记录到跟踪文件中。这将影响阅读跟踪文件的结果。
步4:查阅跟踪文件:
到 E:\ORACLE\PRODUCT\10.2.0\ADMIN\JJONE\UDUMP 目录中,找到日期最新的文件,它
就是Oracle刚刚生成的跟踪文件。在本例中,它的名字是“jjone_ora_3600.trc” 。打开它
查看,此时它的信息还不是太容易理解,Oracle 为了帮助我们阅读 SQL 的跟踪文件,专门
提供了一个TKPROF工具,在操作系统命令提示符下(注意不是在 SQLPLUS中),输入如下命
令:
C:\>tkprof E:\ORACLE\PRODUCT\10.2.0\ADMIN\JJONE\UDUMP\jjone_ora_3600.trc sql1.txt
TKPROF: Release 10.2.0.1.0 - Production on 星期三 10月 15 12:01:00 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
tkporf工具的使用非常简单,只需输入:“tkprof 跟踪文件 目标文件”即可,Tkprof
将会把跟踪文件处理为更容易阅读的格式,并把处理结果保存到你指定的目标文件中。目标
文件也是普通的文本型文件,可以使用任何文本编辑软件打开。 ORACLE 交流第一群:48949977
TG-903 Oracle 性能调优 22
在目标文件中,我们搜索UI1,可以方便的找到所跟踪的语句,你将看到如下信息:
select *
from
ui1 where id=1
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.02 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.00 0.02 3 4 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.04 3 4 0 1
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 66
Rows Row Source Operation
------- ---------------------------------------------------
1 TABLE ACCESS BY INDEX ROWID UI1 (cr=4 pr=3 pw=0 time=27320 us)
1 INDEX RANGE SCAN UI1_ID (cr=3 pr=2 pw=0 time=23332 us)(object id 52405)
...
在你的语句之下,首先是一个表格,它通常有三行组成,它显示该查询各阶段的重要的
执行统计数据。这三行代表查询的三个主要阶段:
解析(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’;
事件
需要得到sql的值
启动跟踪
SQL>alter system set events '10046 trace name context forever,level 4';
关闭
SQL>alter system set events '10046 trace name context off';
方式二:
设置步骤:
SQL> conn system/oracle
SQL> alter system set sql_trace=true scope=spfile;
SQL> alter system set timed_statistics=true;
SQL> conn sys/oracle as sysdba
SQL> startup force
SQL> grant dba to scoott;
SQL> conn scott/tiger
SQL> select * from dept;--执行的查询语句
SQL> select a.spid from v$process a,v$session b
2 where a.addr=b.paddr
3 and b.audsid=userenv('sessionid')
4 /
SPID
------------
2756
--根据spid copy报告文件,进行查看。
C:\> tkprof F:\oracle\product\10.1.0\admin\orcl\udump\orcl_ora_5320.trc c:\report.txt
分享到:
相关推荐
【10046事件与SQL_TRACE】是Oracle数据库中用于诊断和优化SQL语句执行性能的重要工具。当面临SQL语句执行效率低下时,我们可以启用SQL_TRACE来追踪其执行流程,获取详细的执行信息,从而找出性能瓶颈。 一、启用SQL...
SQL Trace 是 Oracle 提供的一种强大工具,用于记录 SQL 语句的执行过程。它能够帮助数据库管理员和开发人员详细了解 SQL 语句是如何被 Oracle 数据库处理的,从而更好地进行性能调优。 #### 二、SQL Trace命令详解...
另外,Oracle还提供了其他高级跟踪选项,如10046事件(扩展SQL跟踪),它可以提供更详细的调用堆栈和优化器信息。例如,你可以这样启用10046事件: ```sql ALTER SYSTEM SET events='10046 trace name context ...
如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况?Sql性能非常差的时候,oracle提供了SQL_TRACE来跟踪sql的执行情况。注:分析sql的方式比较多,还有根据优化器、sql执行计划来分析。SQL_TRACE能够将sql执行的过程...
通过了解Oracle提供的跟踪文件和跟踪事件,尤其是10046事件及其不同的跟踪级别,DBA可以在遇到性能问题或系统异常时,更准确地获取相关信息并采取相应的措施。合理利用这些工具不仅能够提高问题解决效率,还能有效...
### Oracle的重要诊断工具events_如10046事件来进行SQL跟踪 #### 一、Oracle跟踪文件概述 在Oracle数据库管理中,跟踪文件是用于诊断问题的重要工具之一。Oracle跟踪文件主要分为三种类型: 1. **后台报警日志...
在Oracle中,有两种主要的跟踪方法:SQL Trace和10046事件。SQL Trace是最传统的跟踪方式,通过DBMS_SESSION包中的TRACE_ON和TRACE_OFF过程来开启和关闭跟踪。10046事件是更现代的方法,它允许更细粒度的控制和更...
Oracle数据库监听工具
总结,10046事件跟踪和SQL_TRACE是Oracle数据库管理员的强大工具,它们能够帮助我们深入理解SQL执行过程,排查性能瓶颈,并进行有效的故障排除。正确地使用这些工具,对于提升数据库系统的稳定性和效率至关重要。在...
Oracle性能优化是DBA的重要职责,这包括SQL查询优化、索引策略、数据库统计信息的收集和分析,以及使用SQL Trace和 tkprof 工具进行性能诊断。 6. 高可用性与故障恢复: Oracle提供多种高可用性解决方案,如RAC...
### Oracle中的Trace跟踪详解 #### 一、概述 在Oracle数据库管理中,追踪(Trace)是一种重要的工具,它可以帮助数据库管理员(DBA)诊断问题、优化性能以及理解SQL语句的执行过程。Oracle提供了多种追踪手段,如...
SQL Trace 和 TKPROF 是 Oracle 数据库中非常强大的性能分析工具,它们可以帮助 DBA 和开发人员深入了解数据库的运行状态,及时发现并解决性能问题。通过正确配置 SQL Trace 参数,启用 SQL Trace,以及合理使用 ...
`开启SQL跟踪,其中level 8包含了等待事件和绑定变量信息。level值有0到12的不同级别,分别对应不同的跟踪详细程度。 5. 最后,当需要停止跟踪时,使用`ALTER SESSION SET EVENTS '10046 trace name context off';`...
除了SQL Trace和TKPROF,Oracle还提供了许多其他工具和视图,例如`v$session_wait`用于查看会话等待事件,`v$pgastat`显示PGA内存使用情况,以及`v$sql`和`v$sqlarea`记录SQL语句的历史执行信息。通过结合使用这些...
在Oracle中,事件探查器通过启用特定的跟踪事件来工作,这些事件包括但不限于10046(用于跟踪执行计划和调用堆栈)、10053(用于跟踪优化器决策过程)和10040(用于跟踪服务器进程)。通过设置这些事件,我们可以...
oracle有三种方式跟踪sql: 1、审计 2、trigger 3、利用 dbms_support 查看sql_trace 现在主要讲第三种方式: 参见网址:https://www.cnblogs.com/shenfeng/p/oracle_sql_trace.html,步聚如下:
在Oracle数据库管理中,跟踪文件(Trace Files)是用于记录数据库操作详细信息的重要工具,它可以帮助DBA(数据库管理员)诊断性能问题、错误和异常。本文将深入探讨如何通过SQL查询语句在Linux和Windows环境下获取...