`
hanjian861202
  • 浏览: 165080 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Oracle:sql_trace的增强—10046事件

阅读更多

10046:不能根据sid设置跟踪。

dbms_system:只能sys用户执行,赋予他人只能sysdba执行,要慎重,因为含有set_ev这个很重要的存储过程。

dbms_support:不需要sysdba权限,但是没有客户端级别和组件级别的跟踪。

dbms_monitor:不需要sysdba权限,含有数据库级、会话级、客户端级和组件级的跟踪

 

===================================================================================================================

 

很多时候,对数据库进行性能诊断可以使用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);

也可以通过使用oradebug工具来设置10046事件

首先通过V$PROCESS获得该session的os process id。

select s.username, p.spid os_process_id, p.pid oracle_process_id

from v$session s, v$process p

where s.paddr = p.addr and s.username = upper('TRACE_USERNAME');

oradebug setospid 12345;

oradebug unlimit;

oradebug event 10046 trace name context forever, level 8;

oradebug event 10046 trace name context off;

获取跟踪文件

1.使用oradebug

SQL> oradebug setmypid

Statement processed.

SQL> oradebug tracefile_name

/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183.trc

2.设置初始参数TRACEFILE_IDENTIFIER

alter session set tracefile_identifier = 'MyTrace';

这样在生成的trace文件名中会包含有MyTrace字样

/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183_MyTrace.trc

3.通过SQL查询

select d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name

from

    ( select p.spid

      from sys.v$mystat m,sys.v$session s,sys.v$process p

      where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,

   ( select t.instance from sys.v$thread t,sys.v$parameter v

      where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,

    ( select value from sys.v$parameter where name = 'user_dump_dest') d;

?/rdbms/log/uxdb_ora_9183.trc

查看当前session的跟踪级别

SQL>Set serveroutput on

SQL> declare

  event_level number;

  begin

  dbms_system.read_ev(10046,event_level);

  dbms_output.put_line(to_char(event_level));

  end;

  /

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xieyunchao/archive/2010/01/06/5140059.aspx

分享到:
评论

相关推荐

    10046事件和sql_trace.docx

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

    如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况

    如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况?Sql性能非常差的时候,oracle提供了SQL_TRACE来跟踪sql的执行情况。注:分析sql的方式比较多,还有根据优化器、sql执行计划来分析。SQL_TRACE能够将sql执行的过程...

    SQL执行计划之sql_trace

    SQL Trace 是 Oracle 提供的一种强大工具,用于记录 SQL 语句的执行过程。它能够帮助数据库管理员和开发人员详细了解 SQL 语句是如何被 Oracle 数据库处理的,从而更好地进行性能调优。 #### 二、SQL Trace命令详解...

    10046事件跟踪详细指南

    总结,10046事件跟踪和SQL_TRACE是Oracle数据库管理员的强大工具,它们能够帮助我们深入理解SQL执行过程,排查性能瓶颈,并进行有效的故障排除。正确地使用这些工具,对于提升数据库系统的稳定性和效率至关重要。在...

    Oracletrace

    其中,SQL_TRACE与10046事件是最常用的追踪方式。除了这些标准方法外,Oracle还提供了ORADEBUG等其他高级追踪技术。本文将详细介绍Oracle中的追踪机制,包括追踪文件的位置、不同版本之间的差异,以及如何使用追踪...

    BLOG_Oracle_lhr_【方法整理】Oracle 获取trace跟踪文件名的几种常用方式.pdf

    ALTER SESSION SET EVENTS '10046 trace name SQL_trace format OUTFILE'; ``` 其中`10046`是事件号,用于触发SQL跟踪;`trace name SQL_trace`指定了跟踪文件名的前缀;`format OUTFILE`表示将输出写入文件。 **...

    Oracle_SQL_Server.rar_oracle

    - **Oracle** 提供了强大的性能分析工具,如 SQL Trace、TKPROF 和 AWR 报告。 - **SQL Server** 提供 SQL Profiler、DMVs 和 Performance Monitor 来监控和优化性能。 在实际应用中,选择 Oracle 还是 SQL ...

    oracle sql 跟踪

    另外,Oracle还提供了其他高级跟踪选项,如10046事件(扩展SQL跟踪),它可以提供更详细的调用堆栈和优化器信息。例如,你可以这样启用10046事件: ```sql ALTER SYSTEM SET events='10046 trace name context ...

    Oracle跟踪工具SQlTracker

    Oracle数据库监听工具

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

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

    SQL Trace and TKPROF

    **SQL Trace** 是 Oracle 数据库提供的一种性能分析工具,它能够收集执行 SQL 语句时的相关统计信息,如 CPU 时间、等待时间等。通过这些信息,DBA 或开发人员可以对数据库性能进行更深入的诊断和优化。 **SQL ...

    优化SQl语句的十个重要步骤:

    7. **使用tkprof工具**:tkprof是Oracle提供的一个实用工具,用于格式化和分析SQL_TRACE产生的跟踪文件,它可以提供SQL语句的执行时间、I/O统计等信息。 8. **研究跟踪输出文件**:通过tkprof生成的输出,可以发现...

    oracle跟踪sql语句.txt

    oracle有三种方式跟踪sql: 1、审计 2、trigger 3、利用 dbms_support 查看sql_trace 现在主要讲第三种方式: 参见网址:https://www.cnblogs.com/shenfeng/p/oracle_sql_trace.html,步聚如下:

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

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

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

    1. 事件10046:这是SQL TRACE中最常用的事件,它允许我们追踪SQL语句的详细执行信息。通过设置10046事件,可以获取到SQL的执行计划、绑定变量值、等待事件等。例如:`ALTER SESSION SET EVENTS '10046 trace name ...

    Oracle_DBA_数据库日常维护手册常用SQL_脚本

    ### Oracle DBA 数据库日常维护手册:常用SQL脚本解析 在IT行业中,数据库的高效稳定运行对于企业的业务连续性和数据安全至关重要。Oracle作为全球领先的数据库管理系统之一,其日常维护工作是确保系统性能、安全与...

    ct.zip_trace

    《Oracle SQL Trace解析工具——ct.zip_trace》 在Oracle数据库管理中,SQL Trace是一个强大的诊断工具,它能够记录SQL语句及其执行的详细过程,帮助DBA深入理解SQL的执行性能,找出潜在的问题并进行优化。本文将...

    深入浅出Oracle:DBA入门_进阶与诊断案例.pdf

    Oracle性能优化是DBA的重要职责,这包括SQL查询优化、索引策略、数据库统计信息的收集和分析,以及使用SQL Trace和 tkprof 工具进行性能诊断。 6. 高可用性与故障恢复: Oracle提供多种高可用性解决方案,如RAC...

    Oracle_Database_10g_SQL_Tuning_Workshop

    SQL Trace是用于捕获SQL语句执行过程中的详细信息的一种工具,包括等待事件、执行时间等,有助于定位性能瓶颈。而自动工作量仓库(AWR)则提供了数据库实例级别的性能数据收集和历史记录,对于长时间跨度内的性能趋势...

    sqlmonitor

    sqlmonitor 1. 找出sid和serial# select sid,serial#,osuser from v$session t where t.USERNAME='USERNAME' 2. 开始sqltrace ... execute dbms_system.set_... 例: tkprof sqltrace文件.trc a.out 8. 打开a.out

Global site tag (gtag.js) - Google Analytics