溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

oracle中v$sql_monitor如何監(jiān)視正在運(yùn)行的SQL語句的統(tǒng)計(jì)信息

發(fā)布時(shí)間:2022-03-07 11:19:14 來源:億速云 閱讀:451 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)oracle中v$sql_monitor如何監(jiān)視正在運(yùn)行的SQL語句的統(tǒng)計(jì)信息,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

11g中引入了新的動態(tài)性能視圖V$SQL_MONITOR,該視圖用以顯示Oracle監(jiān)視的SQL語句信息。SQL監(jiān)視會對那些并行執(zhí)行或者消耗5秒以上cpu時(shí)間或I/O時(shí)間的SQL語句自動啟動,同時(shí)在V$SQL_MONITOR視圖中產(chǎn)生一條記錄。當(dāng)SQL語句正在執(zhí)行,V$SQL_MONITOR視圖中的統(tǒng)計(jì)信息將被實(shí)時(shí)刷新,頻率為每秒1次。SQL語句執(zhí)行完成后,監(jiān)視信息將不會被立即刪除,Oracle會保證相關(guān)記錄保存一分鐘(由參數(shù)_sqlmon_recycle_time所控制,默認(rèn)為60s),最終這些記錄都會被刪除并被重用。這一新的SQL性能監(jiān)視特性僅在CONTROL_MANAGEMENT_PACK_ACCESS為DIAGNOSTIC+TUNING和STATISTICS_LEVEL為ALL|TYPICAL時(shí)被啟用。

v$sql_monitor視圖包含當(dāng)前正在運(yùn)行的SQL語句,以及最近運(yùn)行的SQL語句。

使用v$sql_monitor視圖中所監(jiān)控的SQL語句時(shí)需在滿足以下條件:
1) 自動監(jiān)控任何并行語句
2) 如果一個(gè)SQL語句消耗了超過5秒的CPU或I/O時(shí)間,則會自動監(jiān)控
3) 監(jiān)控任何在語句級啟用監(jiān)控的SQL語句(使用monitor或no_monitor)

提示:結(jié)合v$sql_monitor視圖與v$sql_plan_monitor視圖可以進(jìn)一步查詢SQL的執(zhí)行計(jì)劃等信息。聯(lián)合一些其他視圖,如v$active_session_history、v$session、v$session_longops、v$sql、v$sql_plan等,可以獲得關(guān)于SQL的更多信息。

注意:為了進(jìn)行SQL監(jiān)控,初始化參數(shù)STATISTICS_LEVEL必須設(shè)置為TYPICAL或ALL,CONTROL_MANAGEMENT_PACK_ACCESS必須設(shè)置為DIAGNOSTIC+TUNING。

SQL> show parameter STATISTICS_LEVE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL

SQL> show parameter CONTROL_MANAGEMENT_PACK_ACCESS
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access string DIAGNOSTIC+TUNING

1、 如查看數(shù)據(jù)庫中消耗CPU資源排名前10位的查詢:

select * from (
select sql_id,username,to_char(sql_exec_start,'yyyy-mm-dd hh34:mi:ss') sql_exec_start,
sql_exec_id,sum(buffer_gets) buffer_gets,
sum(disk_reads) disk_reads,round(sum(cpu_time/1000000),1) cpu_secs
from v$sql_monitor
where username not in ('SYS','SYSTEM')
group by sql_id,username,sql_exec_start,sql_exec_id
order by 7 desc)
where rownum<=10;


SQL_ID USERNAME SQL_EXEC_START SQL_EXEC_ID BUFFER_GETS DISK_READS CPU_SECS
------------- ------------------------------ ------------------- ----------- ----------- ---------- ----------
8p8ann3c68vxc SCOTT 2016-11-24 09:50:20 16777216 0 0 37.1


2、監(jiān)控指定的SQL語句:
2.1、 Hint提示監(jiān)控指定的SQL語句
select /*+ monitor */e.empno,e.ename,e.sal,d.dname from scott.emp e,scott.dept d where e.deptno=d.deptno;

2.2、v$sql_monitor視圖中查看被監(jiān)控的SQL語句消耗的資源信息:

select sql_id,username,to_char(sql_exec_start,'yyyy-mm-dd hh34:mi:ss') sql_exec_start,
sql_exec_id,sum(buffer_gets) buffer_gets,
sum(disk_reads)disk_reads,round(sum(cpu_time/1000000),1) cpu_secs
from v$sql_monitor
where sql_text like '%monitor%'
group by sql_id,username,sql_exec_start,sql_exec_id;

2.3、 然后可以使用DBMS_SQLTUNE包來查看SQL語句生成的監(jiān)控信息(如執(zhí)行計(jì)劃等):
SQL> 
set long 10000000
set longchunksize 10000000
set linesize 200
select dbms_sqltune.report_sql_monitor from dual;

關(guān)于“oracle中v$sql_monitor如何監(jiān)視正在運(yùn)行的SQL語句的統(tǒng)計(jì)信息”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI