sql_trace/10046事件是oracle提供的用于进行sql跟踪的手段,其内容包括sql的解析过程、sql的执行计划、绑定变量的使用、会话发生的等待事件。

在使用sql_trace/10046事件前,有两个参数需要注意:
sys@ORCL> show parameter max_dump_file_size --对trace文件的大小限制
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_dump_file_size string UNLIMITED
sys@ORCL> show parameter timed_statistics --对重要信息的收集
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics boolean TRUE
sql_trace的作用域:
1)对所有用户:
i)在参数文件中指定sql_trace=true
ii)alter system set sql_trace=true/false
2) 对当前用户:
启用当前session的跟踪:alter session set sql_trace=true;
结束跟踪:alter session set sql_trace=false;
3)对其他用户:
选择跟踪的进程(用户)
sys@ORCL> select sid,serial#,username from v$session where username is not null;
SID SERIAL# USERNAME
---------- ---------- ------------------------------
142 14 HR
159 5 SYS
设置跟踪:
sys@ORCL> exec dbms_system.set_sql_trace_in_session(142,14,true)
PL/SQL procedure successfully completed.
停止跟踪:
sys@ORCL> exec dbms_system.set_sql_trace_in_session(142,14,false)
PL/SQL procedure successfully completed.
*************************************↖(^ω^)↗**********************************
10046事件是对sql_trace的增强,可分4个级别,具体如下:
1)level 1:等价于sql_trace
2)level 4:level 1+绑定值
3)level 8:level 1+等待事件跟踪
4)level 12:等价于level 1+level 4+level 8
10046事件的作用域:
1)对所有用户
i)在参数文件中修改:event=“10046 trace name context forever,level 12”
ii)alter system set events ‘10046 trace name context forever,level 8';
/ alter system set events '10046 trace name context off';
2)对当前用户
alter session set events '10046 trace name context forever,level 12'; 或者
alter session set events '10046 trace name context off';
3)对其他用户
查询要跟踪的对象
sys@ORCL> select sid,serial#,username from v$session where username is not null;
SID SERIAL# USERNAME
---------- ---------- ------------------------------
142 14 HR
159 5 SYS
执行跟踪
sys@ORCL> exec dbms_system.set_ev(142,14,10046,8,'hr');
PL/SQL procedure successfully completed.
结束跟踪
sys@ORCL> exec dbms_system.set_ev(142,14,10046,0,'hr');
PL/SQL procedure successfully completed.
*********************************~(@^_^@)~*************************************
由于trace文件的格式比较难以阅读,我们可以通过TKPROF工具进行格式化,最终生成符合我们阅读习惯的sql trace 文件。
格式如下:
tkprof tracefile outputfile [options]
其中,option选项的说明和使用,我们可以通过在bash环境罗列:
[oracle@localhost ~]$ tkprof
Usage: tkprof tracefile outputfile [explain= ] [table= ]
[print= ] [insert= ] [sys= ] [sort= ]
table=schema.tablename Use 'schema.tablename' with 'explain=' option.
explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.
print=integer List only the first 'integer' SQL statements.
aggregate=yes|no
insert=filename List SQL statements and data inside INSERT statements.
sys=no TKPROF does not list SQL statements run as user SYS.
record=filename Record non-recursive statements found in the trace file.
waits=yes|no Record summary for any wait events found in the trace file.
sort=option Set of zero or more of the following sort options:
prscnt number of times parse was called
prscpu cpu time parsing
prsela elapsed time parsing
prsdsk number of disk reads during parse
prsqry number of buffers for consistent read during parse
prscu number of buffers for current read during parse
prsmis number of misses in library cache during parse
execnt number of execute was called
execpu cpu time spent executing
exeela elapsed time executing
exedsk number of disk reads during execute
exeqry number of buffers for consistent read during execute
execu number of buffers for current read during execute
exerow number of rows processed during execute
exemis number of library cache misses during execute
fchcnt number of times fetch was called
fchcpu cpu time spent fetching
fchela elapsed time fetching
fchdsk number of disk reads during fetch
fchqry number of buffers for consistent read during fetch
fchcu number of buffers for current read during fetch
fchrow number of rows fetched
userid userid of user that parsed the cursor
我们通过一个例子来介绍对tkprof的使用:
SQL> show parameter timed_statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics boolean TRUE
SQL> show parameter max_dump_file_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_dump_file_size string UNLIMITED
sys@ORCL> alter session set sql_trace=true;
sys@ORCL> select * from hr.departments;
sys@ORCL> alter session set sql_trace=false; --最好是关闭跟踪,减小对性能的开销
sys@ORCL> exit; --在运行完查询后,要退出sql*plus(断开连接),这样才能完全关闭跟踪文件,使trace文件的所有信息都是有效的。
然后,我们就可以使用tkprof:
[oracle@localhost ~]$ tkprof /u01/app/oracle/admin/orcl/udump/orcl_ora_5467.trc tkprof_think.txt
TKPROF: Release 10.2.0.1.0 - Production on Fri Jul 27 11:18:13 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
[oracle@localhost ~]$ ls
tkprof_think.txt
分享到:
相关推荐
【10046事件与SQL_TRACE】是Oracle数据库中用于诊断和优化SQL语句执行性能的重要工具。当面临SQL语句执行效率低下时,我们可以启用SQL_TRACE来追踪其执行流程,获取详细的执行信息,从而找出性能瓶颈。 一、启用SQL...
深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 ... 10.4 使用SQL_TRACE/10046事件进行数据库诊断 10.5 使用物化视图进行翻页性能调整 10.6 一次横跨两岸的问题诊断 10.7 总结
深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 ... 10.4 使用SQL_TRACE/10046事件进行数据库诊断 10.5 使用物化视图进行翻页性能调整 10.6 一次横跨两岸的问题诊断 10.7 总结
深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 ... 10.4 使用SQL_TRACE/10046事件进行数据库诊断 10.5 使用物化视图进行翻页性能调整 10.6 一次横跨两岸的问题诊断 10.7 总结
10046事件跟踪生成的trace文件包含了大量的诊断信息,包括SQL执行计划、等待事件、资源使用情况等,这对于分析性能问题、优化SQL语句以及理解数据库行为极其有用。在分析这些文件时,需要具备一定的Oracle知识和解析...
在Oracle数据库管理中,追踪(Trace)是一种重要的工具,它可以帮助数据库管理员(DBA)诊断问题、优化性能以及理解SQL语句的执行过程。Oracle提供了多种追踪手段,如会话追踪、SQL追踪等。其中,SQL_TRACE与10046...
SQL Server 2008 查询事件跟踪器是一个强大的工具,用于监控和分析SQL Server数据库的运行情况,特别是针对查询性能的诊断和优化。这个绿色版可能是为了方便用户快速部署和使用,无需安装即可运行。在MS Server 2008...
### Oracle的重要诊断工具events_如10046事件来进行SQL跟踪 #### 一、Oracle跟踪文件概述 在Oracle数据库管理中,为了更好地理解和解决性能问题以及系统异常,Oracle提供了多种跟踪文件,这些文件能够帮助数据库...
### Oracle的重要诊断工具events_如10046事件来进行SQL跟踪 #### 一、Oracle跟踪文件概述 在Oracle数据库管理中,跟踪文件是用于诊断问题的重要工具之一。Oracle跟踪文件主要分为三种类型: 1. **后台报警日志...
总结,SQL TRACE是Oracle数据库诊断和性能优化的重要工具,通过10046和10053事件,我们可以深入理解SQL的执行过程,从而针对性地优化数据库性能。掌握SQL TRACE的使用,对于提升数据库系统的效率具有重要意义。
在Oracle数据库管理中,SQL Trace是一个强大的诊断工具,它能够记录SQL语句及其执行的详细过程,帮助DBA深入理解SQL的执行性能,找出潜在的问题并进行优化。本文将详细介绍如何使用"ct.zip_trace"这个简单而实用的...
### SQL Trace 和 TKPROF 相关知识点 #### 一、SQL Trace 概述 ...通过正确配置 SQL Trace 参数,启用 SQL Trace,以及合理使用 TKPROF 对 trace 文件进行格式化处理,可以极大地提高数据库系统的性能和稳定性。
通过使用10046事件进行SQL跟踪,我们可以获得SQL语句执行过程中的详细信息,这对于性能优化和故障排查具有重要意义。不同的跟踪级别能够提供不同层次的信息,从而帮助我们更精确地定位问题所在。希望本文能够为读者...
10046 Trace是一种高级的SQL追踪技术,主要用于深入分析Oracle数据库中的SQL语句执行情况,包括但不限于SQL语句的执行计划、绑定变量、等待事件等。对于性能调优而言,10046 Trace是一项非常重要的工具。本文档将...
综上所述,Oracle SQL跟踪是诊断和优化数据库性能的关键技术,通过它我们可以深入理解SQL语句的执行过程,找出潜在的问题并进行针对性的优化。正确使用和解读SQL跟踪,对于提升数据库性能和维护数据库健康至关重要。
TRACE文件是Oracle数据库在运行过程中生成的一种特殊日志文件,它记录了数据库操作的详细信息,对于诊断问题、性能调优等方面具有不可替代的作用。本文将详细探讨如何生成、获取以及解读TRACE文件,特别是针对Oracle...
2. **Alert日志文件**:用于记录重要的警告信息以及启动、关闭等数据库生命周期事件。 3. **Trace文件**:在特定情况下由Oracle生成的跟踪文件,用于深入分析问题。 4. **Listener日志文件**:记录网络监听器的相关...
设置Oracle数据库诊断事件有多种方式,包括在初始化参数文件中设置、通过`ALTER SYSTEM`语句全局设置、通过`ALTER SESSION`语句为当前会话设置以及使用`ORADEBUG`命令针对特定进程或会话设置。 ##### 1. 在初始化...
在Oracle数据库管理与维护过程中,跟踪文件(trace file)是一种非常重要的诊断工具,它可以帮助DBA和开发人员定位问题并解决性能瓶颈。本文将详细介绍如何获取Oracle的trace跟踪文件名,包括通过`user_dump_dest`...
10046 事件是 Oracle 数据库中的一个非常重要的诊断事件,主要用于追踪 SQL 语句的执行过程,包括解析统计信息、等待事件以及所有 I/O 操作等。该事件可以提供详尽的信息,帮助 DBA 分析 SQL 执行效率低下的原因,...