dbms_xplan包的輸出

dbms_xplan包能夠顯示存儲在三個不同地方的執行計劃:plan_table,library cache,awr中。 下面分別簡單介紹display函數,display_cursor函數,display_awr函數的幾個參數輸入和基本用法:

display函數(搭配explain plan使用)的參數輸入:

1. table_name: 默認爲plan_table。

2. statement_id: 默認爲NULL,在默認情況下,顯示最近插入plan_table中的執行計劃。

3. format:取值包括,basic,typical,serial,all和advance,默認值是typical, advance則是顯示所有信息。

4. filter_preds: 默認值爲NULL,指定在plan_table中添加一個約束。從Oracle 10gR2開始用這個參數。

使用display函數,調用者只需要有dbms_xplan包的execute權限和計劃表的SELECT權限。

注意一點:無論何時只要包含綁定變量,explain plan產生的執行計劃都是不準確的。

例子:

select * from table(dbms_xplan.display(NULL,NULL,'ADVANCE',NULL));

or

select * from table(dbms_xplan.display(NULL,NULL,'basic+predicate',NULL));

display_cursor函數的參數輸入(不需要explain plan搭配使用):

display_cursor返回存儲在library_cache中的執行計劃,這個函數從Oracle 10g開始可以使用。

1. sql_id: 指定被返回執行計劃的SQL語句的父遊標,默認值是NULL,表示當前會話所執行的最後一條SQL語句的執行計劃被返回。

2. cursor_child_no: 表示這個父遊標下的子游標的序號,默認值爲0,如果指定爲NULL,則表示對應sql_id所指的父遊標下所有子游標的執行計劃都將被返回。

3. format:同display函數,默認值仍然爲Typical, 如果我們通過設置STATSTICS_LEVEL=ALL或者在sql語句中加/*+gather_plan_statistics*/之類的hints的話,還可以顯示更多的信息,比如E-ROWS和A-ROWS,等等。

使用display_cursor函數,調用者需要對v$session,v$sql,v$sql_plan和v$sql_plan_statistics_all有select權限,同時角色select_catalog_role和select any dictionary權限也要授予給調用者

例子:

SELECT * FROM table (dbms_xplan.display_cursor('2345wef23rfds',NULL,'Typical'));
SELECT * FROM table(dbms_xplan.display_curso (NULL,NULL,'iostats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'runstats_last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'memstats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'allstats last'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'iostats'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'runstats_tot'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'memstats'));
SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'allstats'));


display_awr函數的參數輸入:

1. sql_id: 指定被返回執行計劃的SQL語句的父遊標,這個參數沒有默認值。

2. plan_hash_value: 指定被返回sql_id的執行計劃的哈希值。默認爲NULL,表示返回與sql_id參數指定的父遊標相關的所有執行計劃都會返回。

3. db_id:默認爲NULL,表示當前數據庫

4. format: 同display函數,默認值仍然爲Typical

使用display_awr函數,必須要引誘dba_hist_sql_plan,dba_hist_sql_text的select權限,同時如果沒有指定db_id,還必須要有v$database的select權限,通過要授予select_catalog_role角色。

例子:

select * from table (dbms_xplan.display_awr('2345wef23rfds',NULL,NULL,'BAISC'));

or

select * from table (dbms_xplan.display_awr('2345wef23rfds',2343512356,NULL,'basic'));


轉自:http://blog.csdn.net/dazhabai/article/details/6681846

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章