oracle之 v$sql_monitor 監視正在啟動並執行SQL語句的統計資訊

來源:互聯網
上載者:User

標籤:其他   statistic   啟動   buffer   sum   hint   tun   str   nes   

11g中引入了新的動態效能檢視V$SQL_MONITOR,該視圖用以顯示Oracle監視的SQL語句資訊。SQL監視會對那些並存執行或者消耗5秒以上cpu時間或I/O時間的SQL語句自動啟動,同時在V$SQL_MONITOR視圖中產生一條記錄。當SQL語句正在執行,V$SQL_MONITOR視圖中的統計資訊將被即時重新整理,頻率為每秒1次。SQL語句執行完成後,監視資訊將不會被立即刪除,Oracle會保證相關記錄儲存一分鐘(由參數_sqlmon_recycle_time所控制,預設為60s),最終這些記錄都會被刪除並被重用。這一新的SQL效能監控特性僅在CONTROL_MANAGEMENT_PACK_ACCESS為DIAGNOSTIC+TUNING和STATISTICS_LEVEL為ALL|TYPICAL時被啟用。

v$sql_monitor視圖包含當前正在啟動並執行SQL語句,以及最近啟動並執行SQL語句。

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

提示:結合v$sql_monitor視圖與v$sql_plan_monitor視圖可以進一步查詢SQL的執行計畫等資訊。聯合一些其他視圖,如v$active_session_history、v$session、v$session_longops、v$sql、v$sql_plan等,可以獲得關於SQL的更多資訊。

注意:為了進行SQL監控,初始化參數STATISTICS_LEVEL必須設定為TYPICAL或ALL,CONTROL_MANAGEMENT_PACK_ACCESS必須設定為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、 如查看資料庫中消耗CPU資源排名前10位的查詢:

select * from (
select sql_id,username,to_char(sql_exec_start,‘yyyy-mm-dd hh24: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、監控指定的SQL語句:
2.1、 Hint提示監控指定的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視圖中查看被監控的SQL語句消耗的資源資訊:

select sql_id,username,to_char(sql_exec_start,‘yyyy-mm-dd hh24: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語句產生的監控資訊(如執行計畫等):
SQL>
set long 10000000
set longchunksize 10000000
set linesize 200
select dbms_sqltune.report_sql_monitor from dual;

oracle之 v$sql_monitor 監視正在啟動並執行SQL語句的統計資訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.