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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/628922/viewspace-687924/