Oracle10g裡sql語句的執行計畫

2021-05-13 00:06:29 字數 2692 閱讀 5871

oracle診斷或調優經常需要做的就是檢視sql語句的執行計畫,很多時候我們需要得到sql語句在不同場景、不同時間段的執行計畫。

oracle10g平台以上獲取sql語句的執行計畫的方法如下:

通過explain plan命令獲得sql語句的執行計畫。

explain plan的命令格式如下:

sql>explain plan <

set statement_id = 『text』

> <

into your plan table

> for sql statement

; 注:

藍色部分可以省略;紅色部分為具體sql語句

"set statement_id = 『text』」 ,其中statement_id是plan_table.statement_id,標記該條sql的id資訊;

"into your plan table」,預設的plan table是plan_table

執行上述命令生成sql的執行計畫,然後可以通過如下2種方式在當前session內獲取該sql語句的執行計畫:

通過explain plan command獲得sql語句的執行計畫,最大的優點是不用直接執行sql語句,避免了由於返回結果時間過長過多帶來的等待。

使用dbms_xplan.display_cursor包從v$sql_plan裡檢視sql語句的執行計畫。

sql命令如下:

sql>s

elect plan_table_output from table(dbms_xplan.display_cursor(『sql_id』));

注意:sql_id可以通過v$sql 檢視獲得。另外,v$sql_plan_statistics_all記錄著sql語句的統計資訊,也可以結合該檢視檢視到歷史sql的執行計畫。

使用autotrace功能獲得sql語句的執行計畫。當然這需要建立autotrace相關的plan_table、synonym等。

建立autotrace方法如下:

1、cd @oracle_homerdbms/rdbms/admin

2、#sqlplus as system

3、sql>@utlxplan

4、sql>create public synonym plan_table for plan_table

5、sql>grant all on plan_table to public;

autotrace命令格式:

sql>set autotrace off/on/traceonly

注意:紅色部分是可選項。執行」set autotrace option」後,執行的sql在返回結果結束後根據引數設定顯示該條sql的執行計畫或統計資訊。

不同選項說明如下:

set autotrace on

執行sql語句返回結果,且自動顯示執行計畫和統計資訊

set autotrace on explain

開啟autotrace;僅顯示執行計畫,不顯示統計資訊

set autotrace on statistics

開啟autotrace;僅顯示統計資訊,不顯示執行計畫

set autotrace traceonly

sql語句僅返回結果,且自動顯示explain和statistics

set autotrace off

當前session關閉autotrace

通過awrrpt檢視sql語句的執行計畫。

同其他方式一樣,要想獲得sql語句的執行計畫,必須獲得該sql的sql_id。有了sql_id,並且確認該sql已經被記錄在dba_hist_sqltext裡,你就可以使用oracle10g提供的dbms_xplan.display_awr包顯示指定sql_id的執行計畫。

比如,執行一條sql,通過awrrpt獲取其執行計畫的步驟如下:

1)執行sql語句

sql>select /*awrshow*/ id from test order by id;

2)確認sql語句的sql_id

sql>select sql_id,sql_text from v$sql where sql_text like '%awrshow%';

3)確認該sql是否被記錄在dba_hist_sqltext裡

sql>select sql_id,sql_text from dba_hist_sqltext where sql_id = '****';

注意:如果沒有該sql的資訊,則手工設定awr的snapshot,將sql資訊記錄在dba_hist_sqltext裡。執行如下sql命令:

sql>exec dbms_workload_repository.create_snapshot();

4)使用dbms_xplan.display_awr的包顯示指定sql_id的執行計畫

sql>select plan_table_output from table(dbms_xplan.display_awr('sql_id'));

結合awrrpt功能檢視sql語句的執行計畫最大的用處就是,當業務出現瓶頸或是峰值時,你可以獲得異常時間段內問題sql語句的執行計畫與正常表現時的進行對比。當然前提是,資料庫是oracle10g及以上版本,並使用了awrrpt功能。

oracle10g 解除安裝

1 oracle 10g解除安裝軟體環境 1 windows xp oracle 10g2 oracle 安裝路徑為 d oracle 實現方法 1 開始 設定 控制面板 管理工具 服務停止所有 oracle 服務 2 開始 程式 oracle oradb 10g home1 oracle inst...

Oracle10g解除安裝

一 軟體解除安裝 1 windows xp oracle 10g 2 oracle安裝路徑為 d oracle 1 如果資料庫配置了自動儲存管理 asm 應該先刪除聚集同步服務css cluster synchronization services 刪除css服務的方法是在dos命令列中執行如下命令...

解除安裝oracle10g

1.停止所有與oracle相關的服務。2.使用oui oracle universal installer 解除安裝oracle軟體。開始 程式 oracle oradb110g home1 oracle installation product universal installer.3.刪除登錄...