DBMS_XPLAN的不同資料來源呼叫的不同方法

xypincle發表於2017-03-24

  1. 方法                    使用                    資料來源
  2. display                 explain                計劃表
  3. display_cursor          real plan              庫快取中的遊標快取
  4. display_awr             history                awr倉庫基表wrh$sql_play
  5. display_sqlset          sql tuning set         sql set檢視
  6. .dbms_xplan.display
  7. display函式返回儲存在計劃表中的執行計劃,返回值為集合dbms_xplan_type_table例項。
  8. 注意:使用前把sqlplus的linesize引數的值調整到至少120.
  9. 語法:
  10. select * from table(dbms_xplan.display('table_name','statement_id','format','filter_preds')) ;
  11. 引數:
  12. 1.table_name 指定計劃表的名字,預設為plan_table
  13. 2.statement_id 指定sql的語句的名字,當sql語句explain plan執行時,此引數是可選的。預設為null,在使用預設值的情況下,
  14. 將顯示最近插入計劃表中的執行變化(如果沒有指定filter_preds的引數)
  15. 3.format 指定輸出內容,除了基本的basic,typical,serial,all和advanced,為了更好地控制,還有一些額外的修飾符可以新增在後面(alias,bytes等)
  16.     format引數的取值有:
  17.         3.1.basic        僅顯示很少的資訊,基本上只包含操作和操作的物件;
  18.         3.2.typical        顯示大部分相關物件,基本上包含了除別名,提綱和欄位投影外的所有物件
  19.         3.3.serial        和typical類似,只是並行操作沒有顯示出來
  20.         3.4.all            顯示除了提綱外的所有資訊
  21.         3.5.advanced    顯示所有資訊
  22. 4.filter_preds 指定在查詢計劃表時新增的一個約束,約束的內容是基於計劃表中某個欄位一個尋常的sql謂詞(比如statement_id='xxx'),預設值是null。
  23. 如果使用預設值,將顯示最近一條插入到計劃表中的執行計劃。

  24. 修飾符:
  25. 1.alias        控制包含查詢塊名和物件別名部分的顯示
  26. 2.bytes        控制執行計劃表中欄位bytes的顯示
  27. 3.cost        控制執行計劃表中欄位cost的顯示
  28. 4.note        控制包含注意資訊(note)部分的顯示
  29. 5.outline    控制包含提綱(outline)部分的顯示
  30. 6.parallel    控制並行處理資訊的顯示,尤其是執行計劃表中欄位TQ、IN-OUT、PQ Distrib的顯示
  31. 7.partition    控制分割槽資訊的顯示,尤其是執行計劃表中欄位pstart和pstop的顯示
  32. 8.peeked_binds    控制包含被窺視的繫結變數部分的顯示,既然sql語句explain plan的當前實現不執行繫結變數窺視,這部分內容就不會顯示
  33. 9.predicate        控制包含謂詞filter和access部分的顯示
  34. 10.projection    控制包含欄位投影資訊部分的顯示
  35. 11.remote        控制遠端執行的sql語句的顯示
  36. 12.rows            控制執行計劃表中欄位rows的顯示
  37. 舉例如下:
  38. SQL> explain plan for select count(*) from t1 ;
  39. SQL> select * from table(dbms_xplan.display(null,null,'basic')) ;

  40. 二、dbms_xplan.display_cursor
  41. 顯示儲存在庫快取中的執行計劃。
  42. 語法:
  43. select * from table(dbms_xplan.display_cursor('sql_id',cursor_child_no,'format')) ;
  44. 引數:
  45. 1.sql_id    指定被返回執行計劃的sql語句的父遊標,預設值是null,如果使用了預設值,當前會話的最後一條sql語句的執行計劃將被返回
  46. 2.cursor_child_no    指定父遊標下子游標的序號,即指定被返回執行計劃的sql語句的子游標,預設值是0。如果設定為null,sql_id所指父遊標下所有子游標的執行計劃都被返回
  47. 3.format    指定要顯示哪些資訊,預設值為typical,可用引數和display相同,此外,如果執行統計開啟(引數statistics_level為all或sql語句使用了提示gather_plan_statistics),則可以顯示更多的資訊
  48.     foramt引數的修飾符
  49.     3.1 allstats    這是iostats+memstats的快捷方式
  50.     3.2 iostats        控制i/o統計的顯示
  51.     3.3 last        顯示所有執行計算過的統計,如果指定了這個值,只顯示最後一次執行的統計資訊
  52.     3.4 memstats    控制pga相關統計的顯示
  53.     3.5 runstats_last    和iostats last相同,只能用於10gR1
  54.     3.6 runstats_tot    和iostats相同,只能用於10gR1
  55. 舉例如下:
  56. SQL> select count(*) from t1 ;
  57. SQL> select sql_id,address,hash_value,plan_hash_value,child_number from v$sql where sql_text like 'select count(*) from t1%' and sql_text not like '%v$sql%';
  58. SQL> select * from table(dbms_xplan.display_cursor('b73dhvfrh3ada',0,'advanced+allstats')) ;

  59. 三、dbms_xplan.display_awr
  60. display_awr函式返回儲存在awr中的執行計劃,從10g起可用,返回值是集合dbms_xplan_type_table的一個例項
  61. 語法:
  62. select * from table(dbms_xplan.display_awr('sql_id',plan_hash_value,db_id,'format')) ;
  63. 引數:
  64. 1.sql_id    指定被返回執行計劃的sql語句的父遊標,無預設值
  65. 2.plan_hash_value    指定被返回執行計劃的sql語句的雜湊值,預設值為null。如果使用了預設值,與sql_id引數指定的父遊標相關的所有執行計劃都會返回
  66. 3.db_id        指定被返回執行計劃的sql語句所在的資料庫,預設值為null,如果使用了預設值,則資料庫為當前庫
  67. 4.format    指定要顯示那些資訊,和display函式中的format有相同的函式,預設值為typical

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2136047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章