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 13 2
4 35 4
6 3
則執行計畫樹為01
236 4
52.如何設定自動跟蹤
用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 true|false
orexec dbms_session.set_sql_trace(true);
如果跟蹤別人的會話,需要呼叫乙個包
exec dbms_system.set_sql_trace_in_session(sid,serial#,true|false)
跟蹤的資訊在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來解析跟蹤檔案,如
tkprof 原檔案 目標檔案 sys=n
4.怎麼設定整個資料庫系統跟蹤
其實文件上的alter system set sql_trace=true是不成功的,但是可以通過設定事件來完成這個工作,作用相等
alter system set events
'10046 trace name context forever,level 1';
如果關閉跟蹤,可以用如下語句
alter system set events
'10046 trace name context off';
其中的level 1與上面的8都是跟蹤級別
level 1:跟蹤sql語句,等於sql_trace=true
level 4:包括變數的詳細資訊
level 8:包括等待事件
level 12:包括繫結變數與等待事件
ORACLE學習筆記 效能優化1
1.查詢正在執行語句的執行計畫 也就是實際語句執行計畫 select from v sql plan where hash value select sql hash value from v session where sid 1111 其中id和parent id表示了執行數的結構,數值最大的為...
ORACLE學習筆記 效能優化4
13.怎麼樣能固定我的執行計畫 可以使用outline來固定sql語句的執行計畫,用如下語句可以建立乙個outline create oe replace outline outln name on select col1,col2 from table where 如果要刪除outline,可以採...
ORACLE學習筆記 效能優化5
18.怎麼清理臨時段 可以使用如下辦法 1 使用如下語句檢視一下認誰在用臨時段 select username,sid,serial sql address,machine,program,tablespace,segtype,contents from v session se,v sort us...