利用v$session_longops監控長操作
今天看到一個關於如何監控長操作的文件,這裡簡單記錄一下要點。
一、什麼情況下,操作資訊會出現在V$SESSION_LONGOPS
同時滿足以下幾個條件,操作資訊才會出現在V$SESSION_LONGOPS中。
1、操作是以下幾種操作之一
# Table scan;
# Index Fast Full Scan;
# Hash join;
# Sort/Merge;
# Sort Output;
# Rollback;
# Gather Table's Index Statistics
不同的版本下V$SESSION_LONGOPS記錄的操作可能會不一樣。
2、操作時間大於6秒
3、讀取的block數目大於一定量
1)如果是TABLE FULL SCAN,讀取的block數目至少大於10000
2)如果是Index Fast Full Scan,讀取的block數目至少大於1000
3)其他操作讀取block的數目不明
二、如何監控耗時長的操作
舉例說明。
會話1:發出查詢
suk@SUK> select * from t2;
已選擇826112行。
已用時間: 00: 00: 29.89
執行計劃
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=123 Card=103264 Byte
s=8880704)
1 0 TABLE ACCESS (FULL) OF 'T2' (Cost=123 Card=103264 Bytes=88
80704)
統計資訊
----------------------------------------------------------
0 recursive calls
0 db block gets
64505 consistent gets
0 physical reads
會話2:在會話1查詢過後一小段時間後(大於6s),查詢V$SESSION_LONGOPS檢視
SQL> SELECT SE.SID,
2 OPNAME,
3 TRUNC(SOFAR / TOTALWORK * 100, 2) || '%' AS PCT_WORK,
4 ELAPSED_SECONDS ELAPSED,
5 ROUND(ELAPSED_SECONDS * (TOTALWORK - SOFAR) / SOFAR) REMAIN_TIME,
6 SQL_TEXT
7 FROM V$SESSION_LONGOPS SL, V$SQLAREA SA, V$SESSION SE
8 WHERE SL.SQL_HASH_VALUE = SA.HASH_VALUE
9 AND SL.SID = SE.SID
10 AND SOFAR != TOTALWORK
11 ORDER BY START_TIME
12 ;
SID OPNAME PCT_WORK ELAPSED REMAIN_TIME SQL_TEXT
---------- ----------------------------- ------------ ---------- ----------- --------------------------------------------------
10 Table Scan 67.07% 21 10 select * from t2
會話1的真實執行時間:29.89s
會話2從V$SESSION_LONGOPS的估算時間:21 + 10 = 31s
可以看到,時間執行和估算的有誤差,但是大體是正確的。
在實際中,你可能透過這個查詢估算到某個SQL執行的剩餘時間很短了,但實際上操作過了很久才結束。
這是因為V$SESSION_LONGOPS只記錄部分操作的資訊,但是一個SQL可能會包含很多個操作步驟,V$SESSION_LONGOPS記錄的只是這個SQL要執行眾多操作的一步。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63841/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用v$session_longops監控long RUN操作SessionGo
- 利用v$session_longops監控long RUN操作(轉)SessionGo
- [zt] 用v$session_longops監控long RUN操作SessionGo
- 監控Oracle長時間執行的工作(v$session_longops)OracleSessionGo
- 使用v$session_longops來監控rman備份進度SessionGo
- V$SESSION_LONGOPSSessionGo
- V$SESSION_LONGOPS bugSessionGo
- oracle 長sql監控OracleSQL
- 監控批量操作進度
- 效能檢視 V$Session_LONGOPSSessionGo
- 利用觸發器監控對某個表操作的使用者資訊觸發器
- 利用nsca監控oracle的session數OracleSession
- V$SESSION_LONGOPS 檢視的用法SessionGo
- V$SESSION_LONGOPS bug 【Blog 搬家】SessionGo
- 利用btrace線上監控java程式狀態Java
- 【監控】open-falcon v0.2 部署、小米開源監控部署
- 對table的操作進行監控
- Process Monitor監控目錄 - 監控檔案被哪個程式操作了
- 利用superlance監控supervisor執行狀態
- 利用shell指令碼監控網站狀態指令碼網站
- 利用OSW工具監控作業系統效能作業系統
- Zabbix監控阿里雲SLB操作指引阿里
- v$session_longops 檢視回滾進度SessionGo
- 動態檢視V$SESSION_LONGOPS學習SessionGo
- V$SESSION_LONGOPS超過系統時間SessionGo
- 分散式監控系統Zabbix3.4-針對MongoDB效能監控操作筆記分散式MongoDB筆記
- 利用TICK搭建Docker容器視覺化監控中心Docker視覺化
- 利用Resource Timing監控資源載入速度
- 如何高效利用 Grafana 監控分析 TiDB 指標GrafanaTiDB指標
- SpringBoot如何利用Actuator來監控應用?Spring Boot
- 利用AFNetworking監控網路狀態 - iOSiOS
- 利用Loadrunner來監控Linux伺服器Linux伺服器
- 【檢視】利用USER_TAB_MODIFICATIONS檢視輔助監控表的增刪改等操作
- STANDBY中NOLOGGING操作的監控
- 監控長時間執行的查詢(監控資料庫效能的SQL ) -- 轉資料庫SQL
- 學習動態效能表(十)--V$SESSION_LONGOPSSessionGo
- 利用監控寶網站監控服務功能快速知曉網站/伺服器穩定性網站伺服器
- 滲透技巧——如何巧妙利用PSR監控Windows桌面Windows