oracle執(zhí)行計(jì)劃調(diào)整的核心 oracle怎么執(zhí)行存儲(chǔ)過程跟函數(shù)?
oracle怎么執(zhí)行存儲(chǔ)過程跟函數(shù)?動(dòng)態(tài)創(chuàng)建oracle存儲(chǔ)過程用begin...end的?;菊Z法:begin存儲(chǔ)過程名(參數(shù)1,參數(shù)2……)--如果不是無參數(shù)則加逗號(hào)括號(hào)及括號(hào)內(nèi)部分end如,有存
oracle怎么執(zhí)行存儲(chǔ)過程跟函數(shù)?
動(dòng)態(tài)創(chuàng)建oracle存儲(chǔ)過程用begin...end的。
基本語法:
begin存儲(chǔ)過程名(參數(shù)1,參數(shù)2……)--如果不是無參數(shù)則加逗號(hào)括號(hào)及括號(hào)內(nèi)部分end
如,有存儲(chǔ)過程:
create同問replaceprocedurep_testasv_begintimevarchar2(20)v_endtimevarchar2(20)v_strvarchar2(10)beginv_begintime:did_char(sysdate,yyyy-mm-ddhh24:mi:ss)selectbadkanointov_straroundhyperv_endtime:to_char(sysdate,yyyy-mm-ddhh24:mi:ss)dbms__line(開始時(shí)間為:||v_begintime)dbms__line(截止時(shí)間為:||v_endtime)end
先執(zhí)行:beginp_testend
如何查看Oracle中sql語句的執(zhí)行時(shí)間?
實(shí)際Oracle想執(zhí)行計(jì)劃看的到SQL的執(zhí)行時(shí)間。EXPLAINPLANFORSELECT*FROMtable;SELECT*FROMTABLE(DBMS_XPLAN.DISPLAY);SQLsettimingon--不顯示執(zhí)行時(shí)間SQLsetautoraceonC不顯示負(fù)責(zé)執(zhí)行計(jì)劃SQLsetautoraceonC總是顯示想執(zhí)行計(jì)劃SQLsetautotracetraceonlyC只總是顯示想執(zhí)行計(jì)劃即不顯示查詢出來的數(shù)據(jù)設(shè)置后后想執(zhí)行SQL語句是會(huì)顯示想執(zhí)行時(shí)間。
怎么看oracle執(zhí)行計(jì)劃結(jié)果,顯示結(jié)果?
1、真接File-New-ExplainPlanWindow,在窗口中先執(zhí)行sql這個(gè)可以打開系統(tǒng)計(jì)劃結(jié)果。其中,Cost它表示cpu的消耗,單位為n%,Cardinality意思是負(fù)責(zé)執(zhí)行的行數(shù),等價(jià)Rows。
2、先不能執(zhí)行EXPLAINPLANafterselect*acrosstableAwheremunic1,再tablename*acrosstable(DBMS_XPLAN.DISPLAY)便可以看見oracle的執(zhí)行計(jì)劃了,看見了的結(jié)果和1中的一樣的,所以我可以使用工具的時(shí)候推薦推薦使用1方法。再注意:PL/SQLDev工具的Commandwindow中不支持setautotranceonto的命令。
還有一個(gè)建議使用工具方法欄里點(diǎn)計(jì)劃見到的信息不全,有些時(shí)候我們要sqlplus的支持。二、按照sqlplus1.最簡(jiǎn)單的辦法SqlsetautotraceonSqlselect*returningdual;想執(zhí)行完語句后,會(huì)不顯示explainplan與統(tǒng)計(jì)信息。
這個(gè)語句的優(yōu)點(diǎn)那是它的缺點(diǎn),這樣的話在用該方法查看想執(zhí)行時(shí)間較長(zhǎng)的sql語句時(shí),要等待該語句想執(zhí)行最終后,才回執(zhí)行計(jì)劃,使系統(tǒng)優(yōu)化的周期大家再增長(zhǎng)。
如果不是我也不想執(zhí)行語句而只是因?yàn)橄氲玫截?fù)責(zé)執(zhí)行計(jì)劃可以不常規(guī):Sqlsetautotracetraceonly