您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么使用sql monitor獲取更加詳細(xì)的執(zhí)行計劃”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么使用sql monitor獲取更加詳細(xì)的執(zhí)行計劃”吧!
在數(shù)據(jù)庫上執(zhí)行SQL語句,執(zhí)行完畢或執(zhí)行過程中可以通過如下語句查詢到
SQL_ID 。
select * from v$sql
where sql_text like '%SELECT BOOK.DESCRIPTION AS%'
order by first_load_time desc ;
(2). 在數(shù)據(jù)庫上執(zhí)行如下語句。
select dbms_sqltune.report_sql_monitor(type=>'TEXT', sql_id=>'4t6jwa8nrg0dp',report_level=>'ALL') monitor_report from dual;
點擊查詢出來的"HUGECLOB"值,可以看到TEXT格式的詳細(xì)執(zhí)行計劃(最好保存
為txt后以ultraEdit工具打開,看得比較清晰,這里不貼出來)。一般在SQL運(yùn)行
后1-3分鐘內(nèi)可以取到結(jié)果,SQL執(zhí)行超過一定時間后查詢不出執(zhí)行計劃(已經(jīng)被刪除)。
注意:不是所有的SQL都會被monitor到,如果沒有看到執(zhí)行計劃,可以在SQL中加入
提示 /*+monitor*/ 強(qiáng)制對SQL進(jìn)行監(jiān)控。
-------------------------------------------------------------------
在Oracle 11g之前的版本,長時間運(yùn)行的SQL可以通過監(jiān)控v$session_longops來觀察,當(dāng)某
個操作執(zhí)行時間超過6秒,就會被記錄在v$session_longops中,通常可以監(jiān)控到全表掃描、
全索引掃描、哈希聯(lián)接、并行查詢等操作;而在Oracle 11g中,當(dāng)SQL并行執(zhí)行時,會立即
被實時監(jiān)控到,或者當(dāng)SQL單進(jìn)程運(yùn)行時,如果消耗超過5秒的CPU或I/O時間,它也會被監(jiān)
控到。監(jiān)控數(shù)據(jù)被記錄在v$sql_monitor視圖中,也可以通過Oracle 11g新增的package
DBMS_MONITOR來主動對SQL執(zhí)行監(jiān)控部署。
v$sql_monitor收集的信息每秒刷新一次,接近實時,當(dāng)SQL執(zhí)行完畢,信息并不會立即從
v$sql_monitor中刪除,至少會保留1分鐘,v$sql_plan_monitor視圖中的執(zhí)行計劃信息
也是每秒更新一次,當(dāng)SQL執(zhí)行完畢,它們同樣至少被保留1分鐘。查看執(zhí)行計劃type有
多種:
type=>'TEXT'
type=>'HTML'
type=>'ACTIVE'
-------------------------------------------------------------------
感謝各位的閱讀,以上就是“怎么使用sql monitor獲取更加詳細(xì)的執(zhí)行計劃”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么使用sql monitor獲取更加詳細(xì)的執(zhí)行計劃這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。