動態檢視V$SESSION_LONGOPS學習
For v$session_longops, it exists in the lock part of oracle directory.
本檢視顯示執行超過6秒的操作的狀態。包括備份,恢復,統計資訊收集,查詢等等.
主要列說明:
l SID:Session標識
l SERIAL#:Session串號
l OPNAME:操作簡要說明
l TARGET:操作執行所在的物件
l TARGET_DESC:目標物件說明
l SOFAR:至今為止完成的工作量
l TOTALWORK:總工作量
l UNITS:工作量單位
l START_TIME:操作開始時間
l LAST_UPDATE_TIME:統計項最後更新時間
l TIME_REMAINING:預計完成操作的剩餘時間(秒)
l ELAPSED_SECONDS:從操作開始總花費時間(秒)
l MESSAGE:統計項的完整描述
l USERNAME:執行操作的使用者ID
l SQL_HASH_VALUE:用於連線查詢的列
一、什麼情況下,操作資訊會出現在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記錄的操作可能會不一樣。
主要列說明:
l SID:Session標識
l SERIAL#:Session串號
l OPNAME:操作簡要說明
l TARGET:操作執行所在的物件
l TARGET_DESC:目標物件說明
l SOFAR:至今為止完成的工作量
l TOTALWORK:總工作量
l UNITS:工作量單位
l START_TIME:操作開始時間
l LAST_UPDATE_TIME:統計項最後更新時間
l TIME_REMAINING:預計完成操作的剩餘時間(秒)
l ELAPSED_SECONDS:從操作開始總花費時間(秒)
l MESSAGE:統計項的完整描述
l USERNAME:執行操作的使用者ID
l SQL_HASH_VALUE:用於連線查詢的列
一、什麼情況下,操作資訊會出現在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)如果是TABLE FULL SCAN,讀取的block數目至少大於10000
2)如果是Index Fast Full Scan,讀取的block數目至少大於1000
3)其他操作讀取block的數目不明
二、如何監控耗時長的操作
會話一:發出查詢
會話一:發出查詢
----建立一個臨時表
SQL>set timing on;
SQL>create table ttt as select level lv,rownum rn from dual connect by level<10000000;
SQL>set timing on;
SQL>create table ttt as select level lv,rownum rn from dual connect by level<10000000;
Table created.
Elapsed: 00:00:19.95
SQL>set autot traceonly
----執行超過6秒的查詢
SQL>select * from gary.ttt;
9999999 rows selected.
Elapsed: 00:02:10.77
Execution Plan
----------------------------------------------------------
Plan hash value: 774701505
----------------------------------------------------------
Plan hash value: 774701505
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 11M| 296M| 5640 (10)| 00:01:08 |
| 1 | TABLE ACCESS FULL| TTT | 11M| 296M| 5640 (10)| 00:01:08 |
--------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 11M| 296M| 5640 (10)| 00:01:08 |
| 1 | TABLE ACCESS FULL| TTT | 11M| 296M| 5640 (10)| 00:01:08 |
--------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
4 recursive calls
0 db block gets
689537 consistent gets
13693 physical reads
0 redo size
214444903 bytes sent via SQL*Net to client
7333722 bytes received via SQL*Net from client
666668 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
9999999 rows processed
會話二:在會話1執行一段時間(大於6s)後,再查詢V$SESSION_LONGOPS檢視
SQL>set linesize 300
SQL>col opname for a20
SQL>col pct_work for a20
SQL>col sql_text for a30
SQL>col sql_text for a30
SQL>SELECT SE.SID,OPNAME,TRUNC(SOFAR / TOTALWORK * 100, 2) || '%' AS PCT_WORK,ELAPSED_SECONDS ELAPSED,ROUND(ELAPSED_SECONDS * (TOTALWORK - SOFAR) / SOFAR) REMAIN_TIME, SQL_TEXT FROM V$SESSION_LONGOPS SL, V$SQLAREA SA, V$SESSION SE WHERE SL.SQL_HASH_VALUE = SA.HASH_VALUE AND SL.SID = SE.SID AND SOFAR != TOTALWORK ORDER BY START_TIME;
SID OPNAME PCT_WORK ELAPSED REMAIN_TIME SQL_TEXT
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 42.34% 57 78 select * from gary.ttt
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 42.34% 57 78 select * from gary.ttt
SQL>/
SID OPNAME PCT_WORK ELAPSED REMAIN_TIME SQL_TEXT
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 58.31% 78 56 select * from gary.ttt
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 58.31% 78 56 select * from gary.ttt
SQL>/
SID OPNAME PCT_WORK ELAPSED REMAIN_TIME SQL_TEXT
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 89.77% 118 13 select * from gary.ttt
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 89.77% 118 13 select * from gary.ttt
SQL>/
SID OPNAME PCT_WORK ELAPSED REMAIN_TIME SQL_TEXT
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 98.92% 130 1 select * from gary.ttt
---------- -------------------- -------------------- ---------- ----------- ------------------------------
156 Table Scan 98.92% 130 1 select * from gary.ttt
可以看到:
會話1的真實執行時間:02:10.77=130.77s
會話2從V$SESSION_LONGOPS的最終估算時間:130 + 1 = 131s
會話2從V$SESSION_LONGOPS的最終估算時間:130 + 1 = 131s
可以看到,開始執行時間和估算的有誤差,但最終時間基本上是正確的。
在實際中,你可能透過這個查詢估算到某個SQL執行的剩餘時間很短了,但實際上操作過了很久才結束。
這是因為V$SESSION_LONGOPS只記錄部分操作的資訊,但是一個SQL可能會包含很多個操作步驟,V$SESSION_LONGOPS記錄的只是這個SQL要執行眾多操作的一步。
另外,此檢視也可以用來監視比如RMAN備份的時間進度:
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2) "% COMPLETED" FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;
這是因為V$SESSION_LONGOPS只記錄部分操作的資訊,但是一個SQL可能會包含很多個操作步驟,V$SESSION_LONGOPS記錄的只是這個SQL要執行眾多操作的一步。
另外,此檢視也可以用來監視比如RMAN備份的時間進度:
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2) "% COMPLETED" FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;
有關此檢視的詳細連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/628922/viewspace-687924/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用v$session_longops監控長操作SessionGo
- Android日常學習:Android檢視動畫-View AnimationAndroid動畫View
- 系統學習iOS動畫之一:檢視動畫iOS動畫
- MySQL之檢視學習MySql
- 8.1關於動態效能檢視
- odoo檢視入門學習- tree檢視的使用Odoo
- db2常用動態效能檢視DB2
- Flutter學習之檢視體系Flutter
- ClickHouse 物化檢視學習總結
- 檢視V$DATAGUARD_STATS
- Depends.exe檢視dll動態鏈檔案
- 【學習】SQL基礎-015-檢視SQL
- (重要)關於效能的幾個主要動態檢視
- iOS學習筆記04 檢視切換iOS筆記
- 學習下Linux 如何檢視磁碟空間Linux
- Echarts檢視視覺化-學習筆記(努力更新中)Echarts視覺化筆記
- 系統學習iOS動畫之四:檢視控制器的轉場動畫iOS動畫
- 動態規劃學習筆記動態規劃筆記
- Alibaba Java診斷工具Arthas檢視Dubbo動態代理類Java
- [20211019]V$DETACHED_SESSION檢視.txtSession
- 檢視提交歷史 —— Git 學習筆記 11Git筆記
- [20211214]檢視檢視V$ACTIVE_SESSION_HISTORY遇到奇怪問題.txtSession
- 檢視BW執行狀態
- GitLab 的元件狀態檢視Gitlab元件
- 機器學習&惡意程式碼靜態檢測機器學習
- 機器學習的靜態特徵和動態特徵機器學習特徵
- 【MyBatis學習總結 (五),動態SQL】MyBatisSQL
- 基於圖神經網路的動態物化檢視管理神經網路
- 動態元件與v-on元件
- Internet Status for Mac(網路連線狀態檢視工具) v5.1啟用版Mac
- Solidity語言學習筆記————27、檢視函式Solid筆記函式
- Adaptive AUTOSAR 學習筆記 5 - 架構 - 物理檢視APT筆記架構
- V$ACTIVE_SESSION_HISTORY檢視的使用Session
- [20210528]V$INDEXED_FIXED_COLUMN檢視.txtIndex
- [20210418]查詢v$檢視問題.txt
- 模態檢視控制器:GCTUIModalPresentationViewControllerGCUIViewController
- Kylin系統檢視firewalld狀態
- firewalld:檢視版本/幫助/狀態
- ASP.NET Core 5.0 MVC中的檢視分類——佈局檢視、啟動檢視、具體檢視、分部檢視ASP.NETMVC