转http://www.dbdream.com.cn/2013/10/14/vsession_longops%E8%A7%86%E5%9B%BE/

1.有的时候不准确 ,我看到 session wait event 一直在变化 ,也是 active 的 ,运行 时间也是48小时 以上 。但是 在  v$session_longops 显示为totalwork =0 , 无法观察 。是一条3000w 记录的update. 所以只能看v$transaction.

2.

对大部分DBA来说,V$SESSION_LONGOPS视图都不会陌生,以前在面试的时候,也有一些企业会问到如何查询数据库中运行时间比较长的SQL,就可以通过这个视图来查看。

V$SESSION_LONGOPS视图不但可以监控运行式时间比较长的SQL,也会记录RMAN备份、EXP/EXPDP、收集统计信息、排序等操作,基本数据库所有运行时间超过6秒的SQL都会记录在这个视图中,也有的DBA会定期检查这个视图来寻找可优化的SQL。

下面是这个视图的结构:

01 SQL> desc v$session_longops
02  名称                                      是否为空? 类型                 注释
03  ----------------------------------------- -------- ------------------    ------------------
04  SID                                                NUMBER                和V$SESSION中的SID一样
05  SERIAL#                                            NUMBER                和V$SESSION中的SERIAL#一样
06  OPNAME                                             VARCHAR2(64)          操作的名称,如全表扫描
07  TARGET                                             VARCHAR2(64)          被操作的对象名,如表名
08  TARGET_DESC                                        VARCHAR2(32)          TARGET的描述
09  SOFAR                                              NUMBER                以完成的数量,如扫描多少数据块
10  TOTALWORK                                          NUMBER                一共需要完成的数量
11  UNITS                                              VARCHAR2(32)          计量单位
12  START_TIME                                         DATE                  开始时间
13  LAST_UPDATE_TIME                                   DATE                  最后一次调用set_session_longops的时间
14  TIMESTAMP                                          DATE                  特定操作的时间戳
15  TIME_REMAINING                                     NUMBER                预计剩余时间,单位秒
16  ELAPSED_SECONDS                                    NUMBER                开始操作到最后更新的时间
17  CONTEXT                                            NUMBER               
18  MESSAGE                                            VARCHAR2(512)         对操作的描述
19  USERNAME                                           VARCHAR2(30)          操作用户的名字
20  SQL_ADDRESS                                        RAW(4)                用于关联V$SQL等视图
21  SQL_HASH_VALUE                                     NUMBER                用于关联V$SQL等视图
22  SQL_ID                                             VARCHAR2(13)          用于关联V$SQL等视图
23  SQL_PLAN_HASH_VALUE                                NUMBER                用于关联V$SQL等视图
24  SQL_EXEC_START                                     DATE                  SQL开始运行的时间
25  SQL_EXEC_ID                                        NUMBER                SQL执行的标识符
26  SQL_PLAN_LINE_ID                                   NUMBER                SQL执行计划相关
27  SQL_PLAN_OPERATION                                 VARCHAR2(30)          SQL执行计划相关
28  SQL_PLAN_OPTIONS                                   VARCHAR2(30)          SQL执行计划相关
29  QCSID                                              NUMBER                并行查询

下面简单做几个超过6秒的操作,来查看下这个视图。

先测试下insert操作。

01 SQL> create table longops_test as select * from dba_objects;
02 表已创建。
03 SQL> insert into longops_test select * from longops_test;
04 已创建65525行。
05 SQL> /
06 已创建131050行。
07 SQL> /
08 已创建262100行。
09 SQL> /
10 已创建524200行。
11 SQL> /
12 已创建1048400行。
13 SQL> commit;
14 提交完成。

现在INSERT操作已经超过6秒,查询下V$SESSION_LONGOPS视图。

1 SID SERIAL#  OPNAME    TARGET           SOFAR TOTALWORK UNITS  MESSAGE         SQL_PLAN_OPERATION SQL_PLAN_OPTIONS
2 --- ------- --------- ---------------- ----- --------  -----  --------------- ------------------- ---------------
3 194 12       Table Scan SYS.LONGOPS_TEST    14895 14895   Blocks Table Scan:     TABLE ACCESS        FULL
4                                                               SYS.LONGOPS_TEST:
5                                                               14895 out of
6                                                               14895 Blocks done

这是已经运行结束的INSERT操作,可见SOFAR和TOTALWORK的值是一样的,在看下没运行完的SQL。

1 SQL> create table longops_ctas as select * from longops_test;

在SQL执行6秒后(还没运行完)时,看下V$SESSION_LONGOPS视图的状态。

01 SID SERIAL#  OPNAME    TARGET           SOFAR TOTALWORK UNITS  MESSAGE         SQL_PLAN_OPERATION SQL_PLAN_OPTIONS
02 --- ------- --------- ---------------- ----- --------  -----  --------------- ------------------- ---------------
03 194 12       Table Scan SYS.LONGOPS_TEST    14895 14895   Blocks Table Scan:     TABLE ACCESS        FULL
04                                                               SYS.LONGOPS_TEST:
05                                                               14895 out of
06                                                               14895 Blocks done
07 194 12  Table Scan SYS.LONGOPS_TEST 13275 29785     Blocks Table Scan:     TABLE ACCESS        FULL
08                                                               SYS.LONGOPS_TEST:
09                                                               13275 out of
10                                                               29785 Blocks done

可见,当前扫描了13275个数据块,总共需要扫描29785个数据块。RMAN备份和收集统计信息也同样会被这个视图记录。

01 OPNAME                                 SOFAR  TOTALWORK MESSAGE
02 --------------------------------- ---------- ---------- -------------------------------------------
03 Gather Table Partition Statistics          1          1 Gather Table Partition Statistics: Table
04                                                         WR H$_OSSTAT : 1 out of 1 Partitions done
05 RMAN: aggregate input               1181953 1181953 RMAN: aggregate input: backup 33: 1181953
06                                                         out of 1181953 Blocks done 
07 RMAN: aggregate input               1181953 1181953 RMAN: aggregate input: backup 33: 1181953
08                                                         out of 1181953 Blocks done 
09 RMAN: aggregate output                359461      359461 RMAN: aggregate output: backup 33: 359461
10                                                          out of 359461 Blocks done 
11 RMAN: full datafile backup          1181280    1181280 RMAN: full datafile backup: Set Count 18:
12                                                         1181280 out of 1181280 Blocks done

下面是ORACLE官方文档对V$SESSION_LONGOPS视图的介绍:

01 V$SESSION_LONGOPS displays the status of various operations that run for longer than 6 seconds (in absolute time). These operations currently include many backup and recovery functions, statistics gathering, and query execution, and more operations are added for every Oracle release.
02  
03 To monitor query execution progress, you must be using the cost-based optimizer and you must:
04  
05 •Set the TIMED_STATISTICS or SQL_TRACE parameters to true
06  
07 •Gather statistics for your objects with the DBMS_STATS package
08  
09 You can add information to this view about application-specific long-running operations by using the DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS procedure.
10 Column              Datatype   Description
11 ------------------- ---------- ---------------------------------------------------------------------------------
12 SID                 NUMBER     Identifier of the session processing the long-running operation. If multiple sessi
13                                ons are cooperating in the long-running operation, then SID corresponds to the mai
14                                n or master session.
15 SERIAL#             NUMBER     Serial number of the session processing the long-running operation. If multiple se
16                                ssions are cooperating in the long-running operation, then SERIAL# corresponds to
17                                the main or master session. SERIAL# is used to uniquely identify a session's objec
18                                ts. Guarantees that session-level commands are applied to the correct session obje
19                                cts if the session ends and another session begins with the same session ID.
20 OPNAME             VARCHAR2(64) Brief description of the operation
21 TARGET             VARCHAR2(64) Object on which the operation is carried out
22 TARGET_DESC        VARCHAR2(32) Description of the target
23 SOFAR              NUMBER       Units of work done so far
24 TOTALWORK          NUMBER       Total units of work
25 UNITS              VARCHAR2(32) Units of measurement
26 START_TIME         DATE         Starting time of the operation
27 LAST_UPDATE_TIME   DATE         Time when statistics were last updated for the operation
28 TIMESTAMP          DATE         Timestamp specific to the operation
29 TIME_REMAINING     NUMBER       Estimate (in seconds) of time remaining for the operation to complete
30 ELAPSED_SECONDS    NUMBER       Number of elapsed seconds from the start of the operations
31 CONTEXT            NUMBER       Context
32 MESSAGE           VARCHAR2(512) Statistics summary message
33 USERNAME           VARCHAR2(30) User ID of the user performing the operation
34 SQL_ADDRESS        RAW(4 | 8)   Used with the value of the SQL_HASH_VALUE column to identify the SQL statement as
35                                 sociated with the operation
36 SQL_HASH_VALUE     NUMBER       Used with the value of the SQL_ADDRESS column to identify the SQL statement assoc
37                                 iated with the operation
38 SQL_ID             VARCHAR2(13) SQL identifier of the SQL statement associated with the long operation, if any
39 SQL_PLAN_HASH_VALUE NUMBER      SQL plan hash value; NULL if SQL_ID is NULL
40 SQL_EXEC_START     DATE         Time when the execution of the SQL started; NULL if SQL_ID is NULL
41 SQL_EXEC_ID         NUMBER      SQL execution identifier (see V$SQL_MONITOR)
42 SQL_PLAN_LINE_ID    NUMBER      SQL plan line ID corresponding to the long operation; NULL if the long operation
43                                 is not associated with a line of the execution plan
44 SQL_PLAN_OPERATION VARCHAR2(30) Plan operation name; NULL if SQL_PLAN_LINE_ID is NULL
45 SQL_PLAN_OPTIONS   VARCHAR2(30) Plan operation options; NULL if SQL_PLAN_LINE_ID is NULL
46 QCSID               NUMBER      Session identifier of the parallel coordinator

转 v$session_longops视图的更多相关文章

  1. V$SESSION_LONGOPS

    对大部分DBA来说,V$SESSION_LONGOPS视图都不会陌生,以前在面试的时候,也有一些企业会问到如何查询数据库中运行时间比较长的SQL,就可以通过这个视图来查看.V$SESSION_LONG ...

  2. [转载】——故障排除:Shared Pool优化和Library Cache Latch冲突优化 (文档 ID 1523934.1)

    原文链接:https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrlstate=23w4l35u5_4&id=152393 ...

  3. Oracle常用的性能诊断语句

    --1.阻塞及等待事件信息查询 -- 查询所有会话的状态.等待类型及当前正在执行的SQL脚本 select se.SID, se.SERIAL#, se.Status, se.Event, se.BL ...

  4. ORACLE 如何查看索引重建进度情况

    在ORACLE数据库中,如果一个比较大的索引在重建过程中耗费时间比较长,那么怎么查看索引重建耗费的时间,以及完成了多少(比例)了呢,我们可以通过V$SESSION_LONGOPS视图来查看索引重建的时 ...

  5. Oracle【IT实验室】数据库备份与恢复之四:RMAN(备份与恢复管理器)

    RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件. 归档日志和控制文件.它也可以用来执行完全或不完全的数据库恢复. RMAN可以由命令行接口或者 OEM的 Backup ...

  6. ORACLE数据库管理员的职责

    ORACLE数据库管理员的职责 一.概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情 ...

  7. [转帖]召冠总的 Oracle常用的性能诊断语句. --保存学习备查

    Copyfrom https://www.cnblogs.com/zhaoguan_wang --1.阻塞及等待事件信息查询-- 查询所有会话的状态.等待类型及当前正在执行的SQL脚本select t ...

  8. Oracle数据泵的使用

    几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle  database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump ...

  9. 关于shared pool的深入探讨(六)-高Latch竞争案例

    研究了几天shared pool,没想到忽然就撞到问题上来了.作为一个案例写出来给大家参考一下吧. 问题起因是公司做短信群发,就是那个18万买的4000字的短信小说(嘘,小声点,我也没看过...).群 ...

随机推荐

  1. Web 攻击之 XSS 攻击及防御策略

    XSS 攻击 介绍 XSS 攻击,从最初 netscap 推出 javascript 时,就已经察觉到了危险. 我们常常需要面临跨域的解决方案,其实同源策略是保护我们的网站.糟糕的跨域会带来危险,虽然 ...

  2. timing-function: steps()

    animation语法 animation:name duration timing-function delay iteration-count direction timing-function取 ...

  3. 【Lintcode】153.Combination Sum II

    题目: Given a collection of candidate numbers (C) and a target number (T), find all unique combination ...

  4. 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)

    前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...

  5. poj2492A Bug's Life——带权并查集

    题目:http://poj.org/problem?id=2492 所有元素加入同一个并查集中,通过其偏移量%2将其分类为同性与异性,据此判断事件. 代码如下: #include<iostrea ...

  6. shell中利用ftp 上传文件夹功能

    我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上 ...

  7. iOS :undefined symbols for architecture x86_64

    转自:http://www.th7.cn/Program/IOS/201408/268371.shtml 问题描述:为了适配iPhone 5s的64位处理器,在编译选项中加入了arm64架构.但是发现 ...

  8. 创建maven parent project & module project

    1.命令方式: 1)Create the top-level root: mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.arc ...

  9. [poj1830]开关问题(高斯消元)

    题意:求高斯消元中自由元的个数,输出1<<ans; #include<cstdio> #include<cstdlib> #include<cstring&g ...

  10. php中使用mysqli和pdo扩展,测试mysql数据库的执行效率。

    <?php /** * 测试pdo和mysqli的执行效率 */ header("Content-type:text/html;charset=utf-8"); //通过pd ...