久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Oracle10g里sql語句的執行計劃

     guolijiegg 2012-01-18

    Oracle10g里sql語句的執行計劃

    分類: Oracle 213人閱讀 評論(0) 收藏 舉報

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

    Oracle10g平臺以上獲取sql語句的執行計劃的方法如下:

    1. Explain Plan Command

    通過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 腳本$ORACLE_HOME/rdbms/admin/utlxpls.sql
          eg: sql>@$ORACLE_HOME/rdbms/admin/utlxpls.sql
    • 或是直接執行select * from table(dbms_xplan.display());

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

    2. V$SQL_PLAN

    使用dbms_xplan.display_cursor包從v$sql_plan里查看sql語句的執行計劃。

    sql命令如下:
    sql>select plan_table_output from table(dbms_xplan.display_cursor(‘sql_id’));

    注意:sql_id可以通過v$sql 視圖獲得。另外,v$sql_plan_statistics_all記錄著sql語句的統計信息,也可以結合該視圖查看到歷史sql的執行計劃。

    3. SQL*Plus AUTOTRACE

    使用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 {EXPLAIN/STATISTICS}

    注意:紅色部分是可選項。執行”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

     

     

    4. AWRRPT

    通過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功能。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 漂亮人妻中文字幕丝袜| 无码日韩av一区二区三区| 成人久久免费网站| 成人国产精品一区二区网站公司 | 国产精品人妻久久无码不卡| 亚洲AV午夜电影在线观看| 久久精品国产99久久久古代 | 又大又粗又硬放不进去了| 婷婷综合久久狠狠色成人网| 一区二区三区鲁丝不卡| 久久WWW免费人成一看片| 亚洲国产午夜精品福利| 久久精品国产亚洲不AV麻豆| 国产不卡一区二区在线| 成人区人妻精品一区二区不卡| 亚洲一区在线成人av| 精品久久久久久成人AV| 精品国产成人午夜福利| 国产69囗曝吞精在线视频| 国产永久免费高清在线观看| 国产亚洲精久久久久久无码| 国产AV福利第一精品| 日本丶国产丶欧美色综合| 国产黑色丝袜在线播放| 色噜噜国产精品视频一区二区| 日本一区二区三区专线| 播放灌醉水嫩大学生国内精品| 午夜福利在线观看6080| 久亚洲一线产区二线产区三线产区| 亚洲成在人线AV品善网好看| 成人片黄网站色大片免费观看软件| 韩国三级理论无码电影在线观看| 色婷婷婷亚洲综合丁香五月| 国产青榴视频在线观看| 又爽又黄又无遮掩的免费视频 | 永久黄网站色视频免费直播| 国产在线乱子伦一区二区| 国产精品亚洲二区在线看| 一二三四在线视频观看社区 | 肉感饱满中年熟妇日本| 天堂V亚洲国产V第一次|