Oracle經過長時間的發展,很多用戶都很了解捕獲Oracle SQL語句了,這裡我發表一下個人理解,和大家討論討論。在好多情況下,Oracle自動選擇的執行計劃並不是最優的,這時需要我們人工去干預。(什麼是執行計劃?)
對SQL調優基本步驟:
a)捕獲Oracle SQL語句
b)產生SQL語句的執行計劃;
c)驗證統計信息(SQL語句涉及到的表格是否做過分析),表格信息(結果集的記錄數,索引),字段上面數據分布特點
d)通過手工收集到的信息,形成自己理想的執行計劃。
e)如果做過分析,則重新分析相關表格或者做柱狀圖分析。
f)如果沒有做過分析,則通過嘗試不同的Hint,從而獲得合適的執行計劃。
g)當我們正常無法調優到位時,可以打開10053事件打開優化器的跟蹤,看看Oracle如何選擇的.
如何捕獲Oracle SQL語句
捕獲Oracle SQL語句的方法有如下幾種:
1.SQL TRACE或10046跟蹤某個模塊。
2.PERFSTAT性能統計包,使用方法見附錄二。
3.V$SQL,V$SESSION_WAIT,V$SQL_TEXT
如何查看執行計劃
查看SQL語句的執行計劃有以下幾種:
1.Set autotrace on(set autotrace traceonly exp)
2.Explain plan for …..@?/rdbms/admin/utlxpls.sql
3.V$SQL_PLAN視圖
◆column Operation format a16
◆column "Query Plan" format a60
◆column options format a15
◆column object_nameformat a20
◆column idformat 99
- select id,lpad(' ',2*(level-1))||Operation||' '||options||' '||object_name||' '
- ||decode(id,0,'Cost = '||position) "Query Plan"
- from (select *
- from v$sql_plan
- where address='&a') sql_plan
- start with id = 0
- connect by prior id = parent_id
4.第三方工具,如pl/sql developer,TOAD,以上介紹捕獲Oracle SQL語句。