真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Oracle獲取執(zhí)行計(jì)劃方法

獲取執(zhí)行計(jì)劃的6種方法

   1. explain plan for獲取;

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比海口網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式??诰W(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋??诘貐^(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

   2. set autotrace on;   

   3. statistics_level=all;

   4. 通過dbms_xplan.display_cursor輸入sql_id參數(shù)直接獲取

   5. 10046 trace跟蹤

6. awrsqrpt.sql

適用場(chǎng)合分析

   1.如果某SQL執(zhí)行非常長(zhǎng)時(shí)間才會(huì)出結(jié)果,甚至慢到返回不了結(jié)果,這時(shí)候看執(zhí)行計(jì)劃就只能用方法1;

   2.跟蹤某條SQL最簡(jiǎn)單的方法是方法1,其次就是方法2,方法2要執(zhí)行;

   3.如果想觀察到某條SQL有多條執(zhí)行計(jì)劃的情況,只能用方法4和方法6;

   4.如果SQL中含有多函數(shù),函數(shù)中套有SQL等多層遞歸調(diào)用,想準(zhǔn)確分析,只能使用方法5;

   5.要想確保看到真實(shí)的執(zhí)行計(jì)劃,不能用方法1和方法2;

6.要想獲取表被訪問的次數(shù),只能使用方法3;

explain plan for

  步驟1:explain plan for "你的SQL"

  步驟2:select * from table(dbms_xplan.display());

SQL> explain plan for

 2  SELECT  *

 3  FROM t1, t2

 4  WHERE t1.id = t2.t1_id

 5  AND t1.n in(18,19);

select * from table(dbms_xplan.display());

Explained.

優(yōu)點(diǎn)

  1. 無需真正執(zhí)行,快捷方便

缺點(diǎn)

1.沒有輸出運(yùn)行時(shí)的相關(guān)統(tǒng)計(jì)信息(產(chǎn)生多少邏輯讀,多少次遞歸調(diào)用,多少次物理讀的情況);

2.無法判斷是處理了多少行;

3.無法判斷表被訪問了多少次。

set autotarce on

步驟1:set autotrace on

步驟2:在此處執(zhí)行你的SQL即可,后續(xù)自然會(huì)有結(jié)果輸出

SQL> set autotrace on

SQL> SELECT  *

 2  FROM t1, t2

 3  WHERE t1.id = t2.t1_id

 4  AND t1.n in(18,19);

set autotrace on                 (得到執(zhí)行計(jì)劃,輸出運(yùn)行結(jié)果)

set autotrace traceonly          (得到執(zhí)行計(jì)劃,不輸出運(yùn)行結(jié)果)

set autotrace traceonly explain  (得到執(zhí)行計(jì)劃,不輸出運(yùn)行結(jié)果和統(tǒng)計(jì)信息部分,僅展現(xiàn)執(zhí)行計(jì)劃部分)

set autotrace traceonl statistics(不輸出運(yùn)行結(jié)果和執(zhí)行計(jì)劃部分,僅展現(xiàn)統(tǒng)計(jì)信息部分)

優(yōu)點(diǎn)

1.可以輸出運(yùn)行時(shí)的相關(guān)統(tǒng)計(jì)信息(產(chǎn)生多少邏輯讀,多少次遞歸調(diào)用,多少次物理讀的情況);

2.雖然必須要等語句執(zhí)行完畢后才可以輸出執(zhí)行計(jì)劃,但是可以有traceonly開關(guān)來控制返回結(jié)果不打屏輸出。

缺點(diǎn)

1.必須要等到語句真正執(zhí)行完畢后,才可以出結(jié)果;

2.無法看到表被訪問了多少次。

statistics level=all

步驟1:alter session set statistics_level=all ;

步驟2:在此處執(zhí)行你的SQL

步驟3:select * fromtable(dbms_xplan.display_cursor(null,null,'allstats last'));

1. 如果你用 /*+gather_plan_statistics */的方法,可以省略步驟1,直接步驟2,3。

2. 關(guān)鍵字解讀:

   Starts為該sql執(zhí)行的次數(shù)。

   E-Rows為執(zhí)行計(jì)劃預(yù)計(jì)的行數(shù)。

   A-Rows為實(shí)際返回的行數(shù)。A-Rows跟E-Rows做比較,就可以確定哪一步執(zhí)行計(jì)劃出了問題。

   A-Time為每一步實(shí)際執(zhí)行的時(shí)間(HH:MM:SS.FF),根據(jù)這一行可以知道該sql耗時(shí)在了哪個(gè)地方。

   Buffers為每一步實(shí)際執(zhí)行的邏輯讀或一致性讀。

   Reads為物理讀。

   OMem:當(dāng)前操作完成所有內(nèi)存工作區(qū)(Work Aera)操作所總共使用私有內(nèi)存(PGA)中工作區(qū)的大小,這個(gè)數(shù)據(jù)是由優(yōu)化器統(tǒng)計(jì)數(shù)據(jù)以及前一次執(zhí)行的性能數(shù)據(jù)估算得出的

   1Mem:當(dāng)工作區(qū)大小無法滿足操作所需的大小時(shí),需要將部分?jǐn)?shù)據(jù)寫入臨時(shí)磁盤空間中(如果僅需要寫入一次就可以完成操作,就稱一次通過,One-Pass;否則為多次通過,Multi_Pass).該列數(shù)據(jù)為語句最后一次執(zhí)行中,單次寫磁盤所需要的內(nèi)存大小,這個(gè)由優(yōu)化器統(tǒng)計(jì)數(shù)據(jù)以及前一次執(zhí)行的性能數(shù)據(jù)估算得出的

   User-Mem:語句最后一次執(zhí)行中,當(dāng)前操作所使用的內(nèi)存工作區(qū)大小,括號(hào)里面為(發(fā)生磁盤交換的次數(shù),1次即為One-Pass,大于1次則為Multi_Pass,如果沒有使用磁盤,則顯示OPTIMAL)

   OMem、1Mem為執(zhí)行所需的內(nèi)存評(píng)估值,0Mem為最優(yōu)執(zhí)行模式所需內(nèi)存的評(píng)估值,1Mem為one-pass模式所需內(nèi)存的評(píng)估值。

0/1/M 為最優(yōu)/one-pass/multipass執(zhí)行的次數(shù)。Used-Mem耗的內(nèi)存

SQL> set autotrace off         

SQL> alter session setstatistics_level=all ;

 

Session altered.

 

SQL> SELECT  *

 2  FROM t1, t2

 3  WHERE t1.id = t2.t1_id

 4  AND t1.n in(18,19);

SQL> select * fromtable(dbms_xplan.display_cursor(null,null,'allstats last'));

優(yōu)點(diǎn)

1.可以清晰的從STARTS得出表被訪問多少

2.可以清晰的從E-ROWS和A-ROWS中得到預(yù)測(cè)的行數(shù)和真實(shí)的行數(shù),從而可以準(zhǔn)確判斷Oracle評(píng)估是否準(zhǔn)確。

3.雖然沒有專門的輸出運(yùn)行時(shí)的相關(guān)統(tǒng)計(jì)信息,但是執(zhí)行計(jì)劃中的BUFFERS就是真實(shí)的邏輯讀的多少

缺點(diǎn)

1.必須要等到語句真正執(zhí)行完畢后,才可以出結(jié)果。

2.無法控制記錄輸屏打出,不像autotrace有 traceonly 可以控制不將結(jié)果打屏輸出。

3.看不出遞歸調(diào)用的次數(shù),看不出物理讀的多少(不過邏輯讀才是重點(diǎn))

dbms_xplan.display_cursor

步驟1: select  * fromtable(dbms_xplan.display_cursor('&sq_id'));

sql_id獲取方式多種,如相關(guān)的性能視圖中、AWR等報(bào)告中。

注:如果有多個(gè)執(zhí)行計(jì)劃

select * fromtable(dbms_xplan.display_cursor('cyzznbykb509s',0));

select * from table(dbms_xplan.display_cursor('cyzznbykb509s',1));

select * from table(dbms_xplan.display_cursor('cyzznbykb509s',2));

優(yōu)點(diǎn)

1.知道sql_id立即可得到執(zhí)行計(jì)劃,和explainplan for 一樣無需執(zhí)行;

2.可以得到真實(shí)的執(zhí)行計(jì)劃。

缺點(diǎn)

1.沒有輸出運(yùn)行時(shí)的相關(guān)統(tǒng)計(jì)信息(產(chǎn)生多少邏輯讀,多少次遞歸調(diào)用,多少次物理讀的情況);

2.無法判斷是處理了多少行; 

3.無法判斷表被訪問了多少次。

10046trace

步驟1:alter session set events '10046 trace name context  forever,level 12'; (開啟跟蹤)

步驟2:執(zhí)行你的語句

步驟3:alter session set events '10046 trace name context off';   (關(guān)閉跟蹤)

步驟4:找到跟蹤后產(chǎn)生的文件

步驟5:tkprof  trc文件  目標(biāo)文件  sys=no sort=prsela,exeela,fchela  (格式化命令)

SQL> alter session setstatistics_level=typical;    

Session altered.

SQL> alter session set events '10046trace name context  forever,level 12';

Session altered.

SQL> set autotrace off

SQL> SELECT  *

 2  FROM t1, t2

 3  WHERE t1.id = t2.t1_id

 4  AND t1.n in(18,19);

SQL> alter session set events '10046trace name context off';

Session altered.

select d.value

|| '/'

|| LOWER(RTRIM(i.INSTANCE, CHR(0)))

|| '_ora_'

|| p.spid

|| '.trc' trace_file_name

from (select p.spid

      from v$mystat m,v$session s, v$process p

      where m.statistic#=1 and s.sid=m.sid and p.addr=s.paddr) p,

      (select t.INSTANCE

       FROM v$thread t,v$parameter v

       WHERE v.name='thread'

       AND(v.VALUE=0 ORt.thread#=to_number(v.value))) i,

       (select value

       from v$parameter

       where name='user_dump_dest') d;

/u01/oracle/diag/rdbms/ocp11g/ocp11g/trace/ocp11g_ora_22508.trc

tkprof/u01/oracle/diag/rdbms/ocp11g/ocp11g/trace/ocp11g_ora_22508.trc 10046test.txtsys=no sort=prsela,exeela,fchela

查看10046test.txt文本即可

優(yōu)點(diǎn)

1.可以看出SQL語句對(duì)應(yīng)的等待事件

2.如果SQL語句中有函數(shù)調(diào)用,SQL中有SQL,將會(huì)都被列出,無處遁形。

3.可以方便的看出處理的行數(shù),產(chǎn)生的物理邏輯讀。

4.可以方便的看出解析時(shí)間和執(zhí)行時(shí)間。

5.可以跟蹤整個(gè)程序包

缺點(diǎn)

1.步驟繁瑣,比較麻煩

2.無法判斷表被訪問了多少次。

3.執(zhí)行計(jì)劃中的謂詞部分不能清晰的展現(xiàn)出來。

awrsqrpt.sql  

  步驟1:@?/rdbms/admin/awrsqrpt.sql

  步驟2:選擇你要的斷點(diǎn)(beginsnap 和end snap)

  步驟3:輸入你的sql_id


本文名稱:Oracle獲取執(zhí)行計(jì)劃方法
文章位置:http://weahome.cn/article/jodech.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部