DBA们经常需要监控数据库中一些花费大量时间的操作,如备份恢复,收集统计信息,排序都会记录在这个视图当中。
这个视图主要是显示运行时间超过6秒的数据库操作的状态.所以对于数据库监控一些耗时的操作是非常有意义的。
并且可以看到某个进程的执行进度。
来看看这个视图的结构:
V$SESSION_LONGOPS列说明
SID:Session标识
SERIAL#:Session串号
OPNAME:操作简要说明
TARGET:操作运行所在的对象
TARGET_DESC:目标对象说明
SOFAR:至今为止完成的工作量
TOTALWORK:总工作量
UNITS:工作量单位
START_TIME:操作开始时间
LAST_UPDATE_TIME:统计项最后更新时间
TIME_REMAINING:预计完成操作的剩余时间(秒)
ELAPSED_SECONDS:从操作开始总花费时间(秒)
CONTEXT:前后关系
MESSAGE:统计项的完整描述
USERNAME:执行操作的用户ID
SQL_ADDRESS:用于连接查询的列
SQL_HASH_VALUE:用于连接查询的列
QCSID:
示例:
创建一个数据量比较大的数据表,语句如下:
create table log_ as select level lv,rownum rn from dual connect by level<10000000; insert into log_ value select level lv,rownum rn from dual connect by level<10000000;
执行查询log_表,命令如下:
SQL> set timing on ; SQL> select count(1) from log_ t ; COUNT(1) ---------- 19999998 Executed in 6.438 seconds
此时执行如下SQL语句.
select * from sys.v_$session_longops t where t.TARGET like '%LOG_' ;
会发现,执行时间大于6秒的那条记录已经被记录在v_$session_longops视图中了.
下面利用关联查询可以查询出该SQL语句的完整内容(也就是能查询出所有执行时间大于6秒的语句).
select * from v$sql a,v$session_longops b where a.SQL_ID = b.SQL_ID ;
select * from v$sqlarea a,v$session_longops b where a.HASH_VALUE = b.SQL_HASH_VALUE ;
其中 a.SQL_TEXT 和 a.SQL_FULLTEXT 代表执行的SQL语句.正常SQL_TEXT就可以显示出要查询的SQL语句,如果该语句太长,那么就需要用a.SQL_FULLTEXT字段进行查看.
也可以用 v$session_longops 和 v$session 关联查询出其 session 信息.
select * from v$session a,v$session_longops b where a.SID = b.SID and a.SERIAL# = b.SERIAL# ;
相关推荐
学习动态性能表(十)--v$session_longops 学习动态性能表(11)--v$latch$v$latch_children 学习动态性能表(12)--v$db_object_cache 学习动态性能表(13)--v$open_cursor 学习动态性能表(14)--v$parameter&v$system_...
当在 Oracle Database 10g 中回滚长期运行的事务时,无论是并行实例恢复会话还是用户执行的回滚语句,您所需做的一切就是查看视图 V$SESSION_LONGOPS 并评估还需要多少时间。本文对Oracle数据库中回滚监视进行深入...
然后查询V$SESSION_LONGOPS,立即发现下面的语句正在进行长操作:从V$SESSION_LONGOPS看,它正在对表CR_BKG_INTMD_SHMT_PARTITION做FULLTABLESCAN。而表CR_BKG_INTMD_SHMT_PARTITION是一张非常大的分区表,是我们...
本文介绍了在Oracle Database 10g中回滚长期运行的事务时,无论是并行实例恢复会话还是用户执行的回滚语句,您所需做的一切就是查看视图V$SESSION_LONGOPS并评估还需要多少时间。
v$session_longops视图记录了超过6秒的所有SQL语句 这其中绝大部是全表扫描的语句! 2、 语句共享性不好 常出没在OLTP,由于app没有合理使用绑定变量,导致大量重复的语句Parse,浪费大量的shared pool...
只需提供查询的sql_id (可从v$session_longops获得),它将返回执行计划以及当前进度。 该脚本确实依赖于simplify_count.sql包含的两个实用程序函数。 在运行主脚本之前,您需要先运行它。 示例脚本输出: =======...
from v$session_longops L, v$session s where time_remaining > 0 and l.sid = s.sid order by start_time; 坏块恢复 在遇到坏块的时,一般应按以下的流程来处理: 1 如果坏块的对象是索引,重建索引 2 ...
- longops: run progression monitor - sessions: currently open sessions - stack <os_pid> get process stack using oradebug - cursors [all] <match_str>: [all] parsed cursors - sharing <sql_id>: ...
..........\longops.sql ..........\LRU_Latch_Ratio.sql ..........\Max_Extents.sql ..........\Monitor.sql ..........\Monitoring_Status.sql ..........\Monitor_Memory.sql ..........\Non_Indexed_FKs...