`
winzenghua
  • 浏览: 1354355 次
  • 性别: Icon_minigender_2
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论
阅读更多

使用跟踪事件10046 很多时候,对数据库进行性能诊断可以使用SQL跟踪的方法,把一些信息记录在trace文件里以后分析。一般情况下我们可以通过初始化参数SQL_TRACE=TRUE来设置SQL跟踪。
  
  我们也可以通过设置10046事件来进行SQL跟踪,并且可以设置不同的跟踪级别,比使用SQL_TRACE获得更多的信息。
  
  Level 0 停用SQL跟踪,相当于SQL_TRACE=FALSE
  Level 1 标准SQL跟踪,相当于SQL_TRACE=TRUE
  Level 4 在level 1的基础上增加绑定变量的信息
  Level 8 在level 1的基础上增加等待事件的信息
  Level 12 在level 1的基础上增加绑定变量和等待事件的信息
  
  10046事件不但可以跟踪用户会话(trace文件位于USER_DUMP_DEST ),也可以跟踪background进程(trace文件位于BACKGROUND_DUMP_DEST )。trace文件的大小决定于4个因素:跟踪级别,跟踪时长,会话的活动级别和MAX_DUMP_FILE_SIZE参数。
  
  启用跟踪事件10046

  1.在全局设置
  
  修改初始化参数
  EVENT = '10046 trace name context forever, level 8'
  
  2.在当前session设置
  
  alter session set events '10046 trace name context forever, level 8';
  alter session set events '10046 trace name context off';
  
  3.对其他用户session设置
  
  首先获得要跟踪的session的session id和serial number
  select sid,serial#,username from v$session where username='TRACE_USERNAME';

  exec dbms_support.start_trace_in_session(sid => 1234,serial# => 56789,waits => true,binds => true);
  exec dbms_support.stop_trace_in_session(sid => 1234,serial# => 56789);
  
  或者
  exec dbms_system.set_ev( 1234, 56789, 10046, 8, '');
  exec dbms_system.set_ev( 1234, 56789, 10046, 0, '');
  
  或者
  exec dbms_monitor.session_trace_enable(session_id => 1234,serial_num => 56789,waits => true,binds => true);
  exec dbms_monitor.session_trace_disable(session_id => 1234,serial_num => 56789);

对当前会话跟踪
1 set serveroutput on --开启信息回放
2 alter session set tracefile_identifier='zfktrace'; --设置跟踪文件名
3 alter session set events '10046 trace name context forever,level 12'; --设置跟踪级别
4 show parameter user_dump_dest --以sys用户查看
5 Select f_yearmonth,f_lotid,f_lotname,SUM (f_ticketoutmoney) AS money --执行语句
FROM t_base_proj_suc
Where f_expectenddate > to_date('2010-01-01','yyyy-mm-dd')
AND f_expectenddate < trunc(sysdate,'dd')
GROUP BY (f_yearmonth,f_lotid,f_lotname)
6 alter session set events '10046 trace name context off'; --关闭监控

7 到linux下数据库的udump 目录下 比如:/data/shark_dump/udump
8 tkprof ba_ora_21511_zfktrace.trc zfktrac.txt --格式化下跟踪文件

resutl:

TKPROF: Release 10.2.0.3.0 - Production on ÐÇÆÚÈý 1ÔÂ 13 17:11:44 2010

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

Trace file: ba_ora_21511_zfktrace.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
********************************************************************************
Select f_yearmonth,f_lotid,f_lotname,SUM (f_ticketoutmoney) AS money
FROM t_base_proj_suc
Where f_expectenddate > to_date('2010-01-01','yyyy-mm-dd')
AND f_expectenddate < trunc(sysdate,'dd')
GROUP BY (f_yearmonth,f_lotid,f_lotname)

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 15.03 28.34 34321 69197 0 15
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 15.04 28.35 34321 69197 0 15

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 55

Rows Row Source Operation
------- ---------------------------------------------------
15 HASH GROUP BY (cr=69197 pr=34321 pw=0 time=28345680 us)
2201633 FILTER (cr=69197 pr=34321 pw=0 time=24234543 us)
2201633 PARTITION RANGE ITERATOR PARTITION: 37 KEY (cr=69197 pr=34321 pw=0 time=22032901 us)
2201633 TABLE ACCESS FULL T_BASE_PROJ_SUC PARTITION: 37 KEY (cr=69197 pr=34321 pw=0 time=17629607 us)


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.13 0.15
db file scattered read 394 0.40 14.29
log file switch completion 2 0.09 0.11
buffer busy waits 1 0.00 0.00
db file sequential read 54 0.01 0.15



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

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 8 0.00 0.00 0 0 0 0
Execute 8 0.00 0.00 0 0 0 4
Fetch 3 15.03 28.34 34321 69197 0 17
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 19 15.04 28.35 34321 69197 0 21

Misses in library cache during parse: 1

Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 11 0.00 0.00
SQL*Net message from client 11 84.84 169.93
db file scattered read 394 0.40 14.29
log file switch completion 2 0.09 0.11
buffer busy waits 1 0.00 0.00
db file sequential read 54 0.01 0.15


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 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 0 0.00 0.00 0 0 0 0

Misses in library cache during parse: 0

7 user SQL statements in session.
0 internal SQL statements in session.
7 SQL statements in session.
********************************************************************************
Trace file: ba_ora_21511_zfktrace.trc
Trace file compatibility: 10.01.00
Sort options: default

0 session in tracefile.
7 user SQL statements in trace file.
0 internal SQL statements in trace file.
7 SQL statements in trace file.
3 unique SQL statements in trace file.
566 lines in trace file.
198 elapsed seconds in trace file.

分享到:
评论

相关推荐

    How to collect 10046 trace_Chinese

    ### 如何收集10046 Trace (SQL_TRACE) 以诊断性能问题 #### 概述 10046 Trace是一种高级的SQL追踪技术,主要用于深入分析Oracle数据库中的SQL语句执行情况,包括但不限于SQL语句的执行计划、绑定变量、等待事件等。...

    10046事件跟踪详细指南

    《10046事件跟踪详细指南》 在Oracle数据库管理中,10046事件跟踪是一项重要的诊断工具,它允许管理员深入分析SQL语句的执行过程,从而定位并解决问题。本文将详细介绍如何启用和使用SQL_TRACE以及10046事件跟踪。 ...

    oracle的10046事件跟踪.pdf

    Oracle的10046事件跟踪是数据库性能分析的关键工具,尤其在解决应用程序性能瓶颈时。这个功能允许数据库管理员深入观察SQL语句的执行过程,获取详细的执行信息,包括解析次数、执行次数、CPU使用时间等,从而进行...

    10046事件和sql_trace.docx

    【10046事件与SQL_TRACE】是Oracle数据库中用于诊断和优化SQL语句执行性能的重要工具。当面临SQL语句执行效率低下时,我们可以启用SQL_TRACE来追踪其执行流程,获取详细的执行信息,从而找出性能瓶颈。 一、启用SQL...

    10046跟踪事件.txt

    10046跟踪事件

    Oracle的重要诊断工具events_如10046事件来进行SQL跟踪

    ### Oracle的重要诊断工具events_如10046事件来进行SQL跟踪 #### 一、Oracle跟踪文件概述 在Oracle数据库管理中,为了更好地理解和解决性能问题以及系统异常,Oracle提供了多种跟踪文件,这些文件能够帮助数据库...

    Oracle的重要诊断工具events_如10046事件来进行SQL跟踪.docx

    ### Oracle的重要诊断工具events_如10046事件来进行SQL跟踪 #### 一、Oracle跟踪文件概述 在Oracle数据库管理中,跟踪文件是用于诊断问题的重要工具之一。Oracle跟踪文件主要分为三种类型: 1. **后台报警日志...

    JB 10046—1999 机床电器噪声的限值及测定方法.doc

    JB 10046—1999 机床电器噪声的限值及测定方法doc,JB 10046—1999 机床电器噪声的限值及测定方法

    2021版山东省安全员A证企业主要负责人安全考核题库(第10046期)100题含答案.docx

    2021版山东省安全员A证企业主要负责人安全考核题库(第10046期)100题含答案.docx

    2021-2022计算机二级等级考试试题及答案No.10046.docx

    根据提供的文档内容,我们可以总结出一系列与计算机二级等级考试相关的知识点。这些知识点涵盖了编程语言的基础概念、计算机基础知识、网络知识以及数据库系统等方面。下面将详细解释每个知识点。...

    tvdxtat_40beta9

    这个工具名为 "tvdxtat",它主要用于处理Oracle数据库的10046级别跟踪文件。在Oracle数据库中,10046是一个事件ID,当启用时,会生成详细的性能跟踪信息,这对于诊断和优化SQL查询非常有用。 描述中的“格式化”...

    0008-Install_USB_Win10_10009_07202016.zip

    标题“0008-Install_USB_Win10_10009_07202016.zip”表明这是一个与安装USB网卡驱动程序相关的软件包,专为Windows 10操作系统设计。日期“07202016”可能表示该软件包是在2016年7月20日创建或更新的,这对于我们...

    对于oracle对session进行跟踪的分析

    - `ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER,LEVEL 12`:同样用于开启特定 session 的 10046 事件跟踪。 4. **TKPROF**: - 为了使 SQL Trace 文件更易解读,Oracle 提供了 TKPROF 工具。它能将跟踪文件...

    oracle事件跟踪器

    Oracle事件跟踪器,也被称为SQL Trace或10046事件,是Oracle数据库提供的一种强大的诊断工具,用于收集关于数据库操作的详细信息。这个功能对于性能优化、问题排查以及理解数据库内部工作流程至关重要。在Oracle环境...

    Oracle数据库诊断事件详解-用于数据维护诊断使用.doc

    - **示例**: `ALTER SYSTEM SET EVENTS '10046 trace name context forever, level 12';` ##### 3. 禁用设置的诊断事件 - **语法**: `ALTER SYSTEM SET EVENTS 'event_name context off';` - **示例**: `ALTER ...

    Oracle中通过触发器来追踪用户的活动

    在Oracle数据库中,跟踪用户活动是一项重要的管理任务,有助于监控系统的使用情况、保障安全和优化性能。Oracle从Oracle8i开始引入了一类特殊触发器,它们不再局限于传统的DML事件,而是扩展到了系统级别,包括...

    SQL TRACE原理、方法、事件查看总结

    总结,SQL TRACE是Oracle数据库诊断和性能优化的重要工具,通过10046和10053事件,我们可以深入理解SQL的执行过程,从而针对性地优化数据库性能。掌握SQL TRACE的使用,对于提升数据库系统的效率具有重要意义。

    如何收集Oracle进程中SQL跟踪信息

    - 方法二:使用`sys.dbms_system.set_ev`,设置和清除10046事件,如`sys.dbms_system.set_ev (sid, serial, 10046, 8, '');`开启跟踪,`sys.dbms_system.set_ev (sid, serial, 10046, 0, '');`关闭跟踪。 在跟踪...

Global site tag (gtag.js) - Google Analytics