程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 詳談捕獲Oracle SQL語句執行計劃

詳談捕獲Oracle SQL語句執行計劃

編輯:Oracle數據庫基礎

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

  1. select id,lpad(' ',2*(level-1))||Operation||' '||options||' '||object_name||' '  
  2. ||decode(id,0,'Cost = '||position) "Query Plan"  
  3. from (select *  
  4. from v$sql_plan   
  5. where address='&a') sql_plan  
  6. start with id = 0 
  7. connect by prior id = parent_id 

4.第三方工具,如pl/sql developer,TOAD,以上介紹捕獲Oracle SQL語句。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved