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】是Oracle数据库中用于诊断和优化SQL语句执行性能的重要工具。当面临SQL语句执行效率低下时,我们可以启用SQL_TRACE来追踪其执行流程,获取详细的执行信息,从而找出性能瓶颈。 一、启用SQL...
如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况?Sql性能非常差的时候,oracle提供了SQL_TRACE来跟踪sql的执行情况。注:分析sql的方式比较多,还有根据优化器、sql执行计划来分析。SQL_TRACE能够将sql执行的过程...
SQL Trace 是 Oracle 提供的一种强大工具,用于记录 SQL 语句的执行过程。它能够帮助数据库管理员和开发人员详细了解 SQL 语句是如何被 Oracle 数据库处理的,从而更好地进行性能调优。 #### 二、SQL Trace命令详解...
总结,10046事件跟踪和SQL_TRACE是Oracle数据库管理员的强大工具,它们能够帮助我们深入理解SQL执行过程,排查性能瓶颈,并进行有效的故障排除。正确地使用这些工具,对于提升数据库系统的稳定性和效率至关重要。在...
其中,SQL_TRACE与10046事件是最常用的追踪方式。除了这些标准方法外,Oracle还提供了ORADEBUG等其他高级追踪技术。本文将详细介绍Oracle中的追踪机制,包括追踪文件的位置、不同版本之间的差异,以及如何使用追踪...
ALTER SESSION SET EVENTS '10046 trace name SQL_trace format OUTFILE'; ``` 其中`10046`是事件号,用于触发SQL跟踪;`trace name SQL_trace`指定了跟踪文件名的前缀;`format OUTFILE`表示将输出写入文件。 **...
- **Oracle** 提供了强大的性能分析工具,如 SQL Trace、TKPROF 和 AWR 报告。 - **SQL Server** 提供 SQL Profiler、DMVs 和 Performance Monitor 来监控和优化性能。 在实际应用中,选择 Oracle 还是 SQL ...
另外,Oracle还提供了其他高级跟踪选项,如10046事件(扩展SQL跟踪),它可以提供更详细的调用堆栈和优化器信息。例如,你可以这样启用10046事件: ```sql ALTER SYSTEM SET events='10046 trace name context ...
Oracle数据库监听工具
### Oracle的重要诊断工具events_如10046事件来进行SQL跟踪 #### 一、Oracle跟踪文件概述 在Oracle数据库管理中,为了更好地理解和解决性能问题以及系统异常,Oracle提供了多种跟踪文件,这些文件能够帮助数据库...
**SQL Trace** 是 Oracle 数据库提供的一种性能分析工具,它能够收集执行 SQL 语句时的相关统计信息,如 CPU 时间、等待时间等。通过这些信息,DBA 或开发人员可以对数据库性能进行更深入的诊断和优化。 **SQL ...
7. **使用tkprof工具**:tkprof是Oracle提供的一个实用工具,用于格式化和分析SQL_TRACE产生的跟踪文件,它可以提供SQL语句的执行时间、I/O统计等信息。 8. **研究跟踪输出文件**:通过tkprof生成的输出,可以发现...
oracle有三种方式跟踪sql: 1、审计 2、trigger 3、利用 dbms_support 查看sql_trace 现在主要讲第三种方式: 参见网址:https://www.cnblogs.com/shenfeng/p/oracle_sql_trace.html,步聚如下:
### Oracle的重要诊断工具events_如10046事件来进行SQL跟踪 #### 一、Oracle跟踪文件概述 在Oracle数据库管理中,跟踪文件是用于诊断问题的重要工具之一。Oracle跟踪文件主要分为三种类型: 1. **后台报警日志...
1. 事件10046:这是SQL TRACE中最常用的事件,它允许我们追踪SQL语句的详细执行信息。通过设置10046事件,可以获取到SQL的执行计划、绑定变量值、等待事件等。例如:`ALTER SESSION SET EVENTS '10046 trace name ...
### Oracle DBA 数据库日常维护手册:常用SQL脚本解析 在IT行业中,数据库的高效稳定运行对于企业的业务连续性和数据安全至关重要。Oracle作为全球领先的数据库管理系统之一,其日常维护工作是确保系统性能、安全与...
《Oracle SQL Trace解析工具——ct.zip_trace》 在Oracle数据库管理中,SQL Trace是一个强大的诊断工具,它能够记录SQL语句及其执行的详细过程,帮助DBA深入理解SQL的执行性能,找出潜在的问题并进行优化。本文将...
Oracle性能优化是DBA的重要职责,这包括SQL查询优化、索引策略、数据库统计信息的收集和分析,以及使用SQL Trace和 tkprof 工具进行性能诊断。 6. 高可用性与故障恢复: Oracle提供多种高可用性解决方案,如RAC...
SQL Trace是用于捕获SQL语句执行过程中的详细信息的一种工具,包括等待事件、执行时间等,有助于定位性能瓶颈。而自动工作量仓库(AWR)则提供了数据库实例级别的性能数据收集和历史记录,对于长时间跨度内的性能趋势...
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