1. 查询正在执行语句的执行计划(也就是实际语句执行计划)
select * from v$sql_plan where hash_value = (select sql_hash_value from v$session where sid = 1111);
其中id和parent_id表示了执行数的结构,数值最大的为最先执行
比如
id parent_id
-------------
0
1 0
2 1
3 2
4 3
5 4
6 3
------------则执行计划树为
0
1
2
3
6 4
5
2.如何设置自动跟踪
用system登录
执行$oracle_home/rdbms/admin/utlxplan.sql创建计划表
执行$oracle_home/sqlplus/admin/plustrce.sql创建plustrace角色
如果想计划表让每个用户都能使用,则
sql>create public synonym plan_table for plan_table;
sql> grant all on plan_table to public;
如果想让自动跟踪的角色让每个用户都能使用,则
sql> grant plustrace to public;
通过如下语句开启/停止跟踪
set autotrace on off
on explain on statistics traceonly traceonly explain
3.如何跟踪自己的会话或者是别人的会话
跟踪自己的会话很简单
alter session set sql_trace truefalse
or
exec dbms_session.set_sql_trace(true);
如果跟踪别人的会话,需要调用一个包
exec dbms_system.set_sql_trace_in_session(sid,serial#,truefalse)
跟踪的信息在user_dump_dest 目录下可以找到或通过如下脚本获得文件名称(适用于win环境,如果是unix需要做一定修改)
select p1.value'\'p2.value'_ora_'p.spid'.ora' filename
from
v$process p,
v$session s,
v$parameter p1,
v$parameter p2
where p1.name = 'user_dump_dest'
and p2.name = 'db_name'
and p.addr = s.paddr
and s.audsid = userenv ('sessionid')
最后,可以通过tkprof来解析跟踪文件,如
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器