ORACLE性能优化笔记
上一篇 / 下一篇 2007-12-27 15:41:52 / 个人分类:调优
a7Zoi2sXn-`I[0 select * from v$sql_plan where hash_value = (select sql_hash_value from v$session where sid = 1111);ITPUB个人空间"CP/T*RR2k*i
其中id和parent_id表示了执行数的结构,数值最大的为最先执行比如
ID PARENT_ID
vsSY$J{e`SR0------------- ITPUB个人空间b&EB ~-i @c
0
"Mi!MSmWd/A%F01 0ITPUB个人空间0Y/A;a2TU8K]
2 1ITPUB个人空间/Qj0tI(\
3 2ITPUB个人空间!S-_l8o
`#k
4 3ITPUB个人空间U[
Xa P4m0u;Y+L
5 4
Uk3P$C1d
yr"tu06 3
则执行计划树为
$K"@6G VI{c0 0
0u\vA} e`Q0 1ITPUB个人空间)A E;a5P\
2ITPUB个人空间i&S)Kd/`ou|&m
3ITPUB个人空间#a:yo]zEz
6 4
mXs9AYBE?5Ex0 5
2.如何设置自动跟踪ITPUB个人空间 Iu0i8p.~B!a!QU a]!z6Q
用system登录
Xa-G&K`\9\ G0 执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建计划表
JHXa'^E!{*I0 执行$ORACLE_HOME/sqlplus/admin/plustrce.sql创建plustrace角色ITPUB个人空间#]l5v(Pt f0`6W-i
如果想计划表让每个用户都能使用,则ITPUB个人空间/R,e6l^n5j
SQL>create public synonym plan_table for plan_table;ITPUB个人空间f
AZ` [
SQL> grant all on plan_table to public;
如果想让自动跟踪的角色让每个用户都能使用,则
)e5M*ZKW)v s*b0 SQL> grant plustrace to public;
/iX!|,E)qZ6W\0 通过如下语句开启/停止跟踪
^#u^ib'X0 SET AUTOTRACE ON |OFF | ON EXPLAIN | ON STATISTICS | TRACEONLY | TRACEONLY EXPLAIN
3.如何跟踪自己的会话或者是别人的会话ITPUB个人空间
e4dIfgz
跟踪自己的会话很简单ITPUB个人空间B,|
`}9FAd
Alter session set sql_trace true|falseITPUB个人空间i!Sod!D{$vqw3B(h[
Or
3x K
\I`1I0 Exec dbms_session.set_sql_trace(TRUE);
如果跟踪别人的会话,需要调用一个包
,K;Y}@+}w0 exec dbms_system.set_sql_trace_in_session(sid,serial#,true|false)
跟踪的信息在user_dump_dest 目录下可以找到或通过如下脚本获得文件名称(适用于Win环境,如果是unix需要做一定修改)
8RK YW.B9l:?0 SELECT p1.value||'\'||p2.value||'_ora_'||p.spid||'.ora' filename
O.jF8E+XKYN_4w|0 FROM
`,u hK^!f{1X0 v$process p,
|GheY zq0 v$session s,ITPUB个人空间 bFWk4nE&m'oy
v$parameter p1,
7zT/A Q5q{x~0 v$parameter p2ITPUB个人空间%{rB3D
Lv2K
WHERE p1.name = 'user_dump_dest'ITPUB个人空间X/x'p,F&J