今天小編就為大家?guī)?lái)一篇關(guān)于Oracle中sql量化分析工具介紹的文章。小編覺(jué)得挺不錯(cuò)的,為此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、昌黎網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為昌黎等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
Oracle提供的量化分析工具有explain,sql*trace,tkprof,auto*trace,awr,addm,sql*profiling,sql access advisor,sql tuning advisor,ash等
此次主要整理了explain,sql*trace,tkprof,auto*trace的使用
1.explain
2.sql*trace
3.tkprof
4.auto*trace
1.explain的使用
1.1 先創(chuàng)建plan_table
@?/rdbms/admin/utlxplan ;
1.2 分析sql語(yǔ)句執(zhí)行計(jì)劃
explain plan for select * from dba_objects ;
1.3 查看sql語(yǔ)句執(zhí)行計(jì)劃
@?/rdbms/admin/utlxpls.sql; 9i下只查看串行執(zhí)行計(jì)劃,10g既查看串行也查看并行
@?/rdbms/admin/utlxplp.sql; 查看并行執(zhí)行計(jì)劃
explain并沒(méi)有真正的執(zhí)行sql語(yǔ)句,所以實(shí)際過(guò)程可能與explain分析結(jié)果不相同。如explain分析之后,又對(duì)相關(guān)表建立了新的索引或者刪除了索引、采集了新的統(tǒng)計(jì)信息等操作
10g中的新功能 dbms_xplan
dbms_xplan.display
顯示存儲(chǔ)在v$sql_plan視圖中的語(yǔ)句執(zhí)行計(jì)劃
dbms_xplan.display_cursor
顯示任何加載的cursor中的語(yǔ)句執(zhí)行計(jì)劃
dbms_xplan.display_awr
顯示保存在awr中的語(yǔ)句執(zhí)行計(jì)劃
select plan_table_output from table(dbms_xplan.display()) ;
2.sql*trace和tkprof的使用
大致的過(guò)程如下所示
database--(sql trace)--trace file--(tkprof)--report file
sql*trace和explain不同的是,sql*trace不是針對(duì)單個(gè)sql語(yǔ)句進(jìn)行執(zhí)行計(jì)劃分析的,而是在會(huì)話級(jí),甚至實(shí)例級(jí)對(duì)sql語(yǔ)句進(jìn)行跟蹤,并在操作系統(tǒng)中產(chǎn)生相應(yīng)的trace文件
sql*trace是跟蹤sql語(yǔ)句的真實(shí)執(zhí)行執(zhí)行情況,Oracle提供tkprof程序?qū)race文件轉(zhuǎn)換為可讀性較強(qiáng)的文件
2.1 在會(huì)話級(jí)進(jìn)行跟蹤
alter session set sql_trace = true ; execute dbms_session.set_sql_trace(true) ;
其他會(huì)話的跟蹤
execute dbms_system.set_trace_in_session(session_id,serial_id,true);
分析的時(shí)候,首先查看那些會(huì)話比較消耗資源,然后從v$session視圖查詢session_id,serial_id,通過(guò)以上的命令對(duì)這些會(huì)話的活動(dòng)進(jìn)行跟蹤和分析
2.2 在實(shí)例級(jí)進(jìn)行跟蹤
設(shè)置sql_trace為true即可
建議不要采取這個(gè)措施,會(huì)對(duì)數(shù)據(jù)庫(kù)產(chǎn)生較大的壓力,會(huì)產(chǎn)生太多的trace文件
使用sql_trace產(chǎn)生的trace文件,原始文件閱讀起來(lái)相對(duì)比較費(fèi)勁,可以使用tkprof程序進(jìn)行轉(zhuǎn)換
例如:
tkprof tracefile outputfile [options]
tkprof tracefile outputfile sys=no explain=hr/hr sort=execcput print=3
sys=no表示不分析sys用戶執(zhí)行的sql語(yǔ)句
explain=hr/hr 表示連接到hr用戶,并進(jìn)行執(zhí)行計(jì)劃分析
sort=execcput 表示按照CPU消耗值,對(duì)該trace文件所包含的sql語(yǔ)句按照排序進(jìn)行分析
print=3 表示只是分析前3條sql語(yǔ)句
直接在os輸入tkprof可以查看所有的幫助
tkprof產(chǎn)生的文件,主要分析以下內(nèi)容
1.各語(yǔ)句執(zhí)行情況的統(tǒng)計(jì)信息
2.各語(yǔ)句的執(zhí)行路徑信息
3.autotrace的使用
3.1 打開(kāi)autotrace
set autotrace on
set timing on
執(zhí)行sql語(yǔ)句
3.2 只看執(zhí)行計(jì)劃、統(tǒng)計(jì)信息
set autotrace traceonly
3.3 只看執(zhí)行計(jì)劃
set autotrace traceonly explain
autotrace是語(yǔ)句真正執(zhí)行之后的執(zhí)行計(jì)劃
3.4 只看統(tǒng)計(jì)信息
set autotrace statistics
3.5 查看幫助
set autotrace
Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
3.6 如何查看統(tǒng)計(jì)信息
重點(diǎn)查看consistent gets和physical reads指標(biāo),分別代表內(nèi)存消耗和磁盤IO消耗,單位是數(shù)據(jù)塊大小(db_block_size)。
看完上訴內(nèi)容,你們對(duì)Oracle中sql量化分析工具大概了解了嗎?如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!