1.跟踪自己的session
alter session set events ‘10046 trace name context forever, level 12′;
执行需要跟踪的sql….
alter session set events ‘10046 trace name context off’;
查看trace文件名字:
select d.value||’/'||lower(rtrim(i.instance, chr(0)))||’_ora_’||p.spid||’.trc’ trace_file_name from ( select p.spid from v$mystat m,v$session s,v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p, ( select t.instance from v$thread t,v$parameter v where v.name = ‘thread’ and (v.value = 0 or t.thread# = to_number(v.value))) i, ( select value from v$parameter where name = ‘user_dump_dest’) d
分析结果 tkprof tracefilename outputfilename
例子
SQL> set time on
22:43:26 SQL> set timing on
22:43:28 SQL> alter session set events ‘10046 trace name context forever,level 12′;
会话已更改。
已用时间: 00: 00: 00.00
22:43:39 SQL> declare
22:44:03 2 v_num integer;
22:44:03 3 begin
22:44:03 4 v_num := 0;
22:44:03 5 while v_num < 10000
22:44:03 6 loop
22:44:03 7 insert into t2 values(v_num,’def’);
22:44:03 8 v_num := v_num + 1;
22:44:03 9 end loop;
22:44:03 10 commit;
22:44:03 11 end;
22:44:03 12 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 01.18
22:44:06 SQL> alter session set events ‘10046 trace name context off’;
会话已更改。
已用时间: 00: 00: 00.02
22:44:28 SQL> select d.value||’/'||lower(rtrim(i.instance, chr(0)))||’_ora_’
||p.spid||’.trc’ trace_file_name
23:02:28 2 from ( select p.spid from v$mystat m,v$session s,v$process
p
23:02:28 3 where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,
23:02:28 4 ( select t.instance from v$thread t,v$parameter v
23:02:28 5 where v.name = ‘thread’ and (v.value = 0 or t.thread# = to_num
ber(v.value))) i,
23:02:28 6 ( select value from v$parameter where name = ‘user_dump_dest
‘) d
23:02:29 7
23:02:30 SQL> /
TRACE_FILE_NAME
——————————————————————————–
D:ORACLEPRODUCT10.2.0ADMINORCLUDUMP/orcl_ora_2536.trc
D:oracleproduct10.2.0adminorcludump>tkprof orcl_ora_2536 lyf3.txt
TKPROF: Release 10.2.0.1.0 – Production on 星期日 10月 8 22:39:36 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
D:oracleproduct10.2.0adminorcludump>
2.了解raw trace的更多内容
可以参看
3. 3. 跟踪其他用户进程
在很多时候我们需要跟踪其他用户的进程,而不是当前用户,这可以通过Oracle提供的系统包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION
来完成
SET_SQL_TRACE_IN_SESSION过程序要提供三个参数:
SQL> desc dbms_system
…
PROCEDURE SET_SQL_TRACE_IN_SESSION
Argument Name Type In/Out Default?
—————————— ———————– —— ——–
SID NUMBER IN
SERIAL# NUMBER IN
SQL_TRACE BOOLEAN IN
…
通过v$session我们可以获得sid、serial#等信息:
获得进程信息,选择需要跟踪的进程:
SQL> select sid,serial#,username from v$session where username is not null;
SID SERIAL# USERNAME
———- ———- ——————————
10 617 LYF
11 18 SYS
设置跟着:
SQL> exec dbms_system.set_sql_trace_in_session(10,617,true);
PL/SQL 过程已成功完成。
….
可以等候片刻,跟踪session执行任务,捕获sql操作…
在10,617上执行insert into t2 values(‘cc’);
….
停止跟踪
SQL> exec dbms_system.set_sql_trace_in_session(10,617,false);
PL/SQL 过程已成功完成。
到udump目录下,按照日期排序可以看到新生成的文件。
相关推荐
如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况?Sql性能非常差的时候,oracle提供了SQL_TRACE来跟踪sql的执行情况。注:分析sql的方式比较多,还有根据优化器、sql执行计划来分析。SQL_TRACE能够将sql执行的过程...
### SQL执行计划之sql_trace详解 #### 一、SQL Trace简介 SQL Trace 是 Oracle 提供的一种强大工具,用于记录 SQL 语句的执行过程。它能够帮助数据库管理员和开发人员详细了解 SQL 语句是如何被 Oracle 数据库处理...
4. **禁用 SQL Trace 并格式化 trace 文件**:在收集完所需的统计数据后,需要禁用 SQL Trace,并使用 TKPROF 工具格式化 trace 文件以便于阅读和分析。 5. **解析 TKPROF 输出**:最后一步是分析 TKPROF 的输出...
它能够实时监控数据库中的SQL语句执行情况,包括执行频率、执行时间、资源消耗等关键指标。通过这些数据,管理员可以快速定位到影响系统性能的关键SQL,从而进行针对性优化。 其次,SQLTracker具备详细的性能分析...
- **资源消耗统计**:统计数据库CPU、内存、I/O等资源的使用情况,帮助调整数据库配置。 - **报告与日志**:生成性能报告,提供详细的查询历史记录,便于问题排查和性能回顾。 - **报警机制**:设置阈值,当特定...
这篇博客旨在为您提供 ABAP SQL 跟踪的快速介绍,展示如何执行跟踪、如何获取结果概要,以及如何解释结果。 使用 ABAP SQL 跟踪非常简单: 1. 在第二模式下调用 ABAP SQL 跟踪 2. 确保您的测试程序至少执行了一次...
SQL TRACE的基本原理是跟踪SQL语句的执行过程,记录从解析到执行的每一个步骤,包括硬解析、软解析、执行计划、等待事件等。通过启用SQL TRACE,我们可以获取到关于SQL语句的元数据、执行计划、资源消耗等重要信息,...
SQL*Plus 提供了一个非常实用的功能——自动跟踪(Auto Trace),它可以帮助用户分析 SQL 语句的执行情况,包括执行时间、资源消耗等关键性能指标。通过设置 Auto Trace,可以方便地获取 SQL 语句的执行计划...
通过`ALTER DATABASE SET SQL_TRACE=true`可以开启实例级别的SQL_TRACE,这将跟踪实例中所有SQL语句,但由于跟踪范围广,可能会导致大量的跟踪信息,一般不建议在生产环境中使用。 二、设置TRACE文件标识 为了方便...
例如,事件类别12代表SQL批处理的开始或结束,我们可以使用`sp_trace_setevent`存储过程来开启这些事件的跟踪: ```sql DECLARE @on BIT SET @on = 1 EXEC sp_trace_setevent @TraceID, 12, 1, @on EXEC sp_trace_...
它不仅可以跟踪SQL,还可以收集存储过程和函数的执行信息。 2. **使用10046事件**:通过设置10046事件,可以在会话级别开启SQL和PL/SQL的跟踪。例如,运行`ALTER SESSION SET EVENTS '10046 trace name context ...
在Oracle数据库系统中,SQL语句跟踪能够帮助我们收集关于SQL执行的详细信息,包括执行计划、资源消耗、等待事件等,这对于理解和改进数据库的性能至关重要。 首先,我们来了解Oracle SQL语句跟踪的基础知识。在...
SQL Server 2008 查询事件跟踪器是一个强大的工具,用于监控和分析SQL Server数据库的运行情况,特别是针对查询性能的诊断和优化。这个绿色版可能是为了方便用户快速部署和使用,无需安装即可运行。在MS Server 2008...
在PL/SQL中,可以使用`DBMS_SESSION.SPECIAL_REGISTERS`过程,设置`SQL_TRACE`参数为TRUE来启动跟踪。对于特定会话,可以使用如下命令: ```sql BEGIN DBMS_SESSION.SPECIAL_REGISTERS( USERENV('SESSIONID') => ...
例如,为了记录SQL执行计划,可以使用如下命令: ```sql ALTER SESSION SET EVENTS '10046 trace name SQL_trace format OUTFILE'; ``` 其中`10046`是事件号,用于触发SQL跟踪;`trace name SQL_trace`指定了跟踪...
这些跟踪文件包含了数据库执行的详细信息,如SQL语句、执行计划、等待事件等,但原始的跟踪文件数据往往混乱且不易读。这时,我们就需要一些工具来帮助我们解析和格式化这些信息。"Tidy" 和 "tkprof" 就是两个这样的...
可以使用Oracle的 tkprof 工具或者第三方工具(如SQL Developer)来解析和分析这些跟踪文件,以便更好地理解SQL语句的执行情况。 **五、注意事项** - SQL跟踪会产生大量的日志数据,因此在生产环境中谨慎使用,...
用法:先运行PB程序,然后运行HOOK。EXE,选择第一个图标,然后在程序列表中选择要跟踪的P B程序即可。当你继续运行PB程序后,所有的SQL 语句都会在HOOK 中被列出。
【使用扩展SQL跟踪数据诊断性能】 在数据库性能优化领域,正确地诊断问题至关重要。本文以Oracle数据库为例,探讨如何利用扩展SQL跟踪数据来有效地找出性能瓶颈。作者Cary Millsap指出,传统的检查清单方法,如关注...