转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 |
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) 计量单位 |
13 |
LAST_UPDATE_TIME DATE 最后一次调用set_session_longops的时间 |
14 |
TIMESTAMP DATE 特定操作的时间戳 |
15 |
TIME_REMAINING NUMBER 预计剩余时间,单位秒 |
16 |
ELAPSED_SECONDS 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执行计划相关 |
下面简单做几个超过6秒的操作,来查看下这个视图。
先测试下insert操作。
01 |
SQL> create table longops_test as select * from dba_objects; |
03 |
SQL> insert into longops_test select * from longops_test; |
现在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 |
这是已经运行结束的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 |
07 |
194 12 Table Scan SYS.LONGOPS_TEST 13275 29785 Blocks Table Scan: TABLE ACCESS FULL |
可见,当前扫描了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. |
03 |
To monitor query execution progress, you must be using the cost-based optimizer and you must: |
05 |
•Set the TIMED_STATISTICS or SQL_TRACE parameters to true |
07 |
•Gather statistics for your objects with the DBMS_STATS package |
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 |
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
对大部分DBA来说,V$SESSION_LONGOPS视图都不会陌生,以前在面试的时候,也有一些企业会问到如何查询数据库中运行时间比较长的SQL,就可以通过这个视图来查看.V$SESSION_LONG ...
- [转载】——故障排除:Shared Pool优化和Library Cache Latch冲突优化 (文档 ID 1523934.1)
原文链接:https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrlstate=23w4l35u5_4&id=152393 ...
- Oracle常用的性能诊断语句
--1.阻塞及等待事件信息查询 -- 查询所有会话的状态.等待类型及当前正在执行的SQL脚本 select se.SID, se.SERIAL#, se.Status, se.Event, se.BL ...
- ORACLE 如何查看索引重建进度情况
在ORACLE数据库中,如果一个比较大的索引在重建过程中耗费时间比较长,那么怎么查看索引重建耗费的时间,以及完成了多少(比例)了呢,我们可以通过V$SESSION_LONGOPS视图来查看索引重建的时 ...
- Oracle【IT实验室】数据库备份与恢复之四:RMAN(备份与恢复管理器)
RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件. 归档日志和控制文件.它也可以用来执行完全或不完全的数据库恢复. RMAN可以由命令行接口或者 OEM的 Backup ...
- ORACLE数据库管理员的职责
ORACLE数据库管理员的职责 一.概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情 ...
- [转帖]召冠总的 Oracle常用的性能诊断语句. --保存学习备查
Copyfrom https://www.cnblogs.com/zhaoguan_wang --1.阻塞及等待事件信息查询-- 查询所有会话的状态.等待类型及当前正在执行的SQL脚本select t ...
- Oracle数据泵的使用
几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump ...
- 关于shared pool的深入探讨(六)-高Latch竞争案例
研究了几天shared pool,没想到忽然就撞到问题上来了.作为一个案例写出来给大家参考一下吧. 问题起因是公司做短信群发,就是那个18万买的4000字的短信小说(嘘,小声点,我也没看过...).群 ...
随机推荐
- Web 攻击之 XSS 攻击及防御策略
XSS 攻击 介绍 XSS 攻击,从最初 netscap 推出 javascript 时,就已经察觉到了危险. 我们常常需要面临跨域的解决方案,其实同源策略是保护我们的网站.糟糕的跨域会带来危险,虽然 ...
- timing-function: steps()
animation语法 animation:name duration timing-function delay iteration-count direction timing-function取 ...
- 【Lintcode】153.Combination Sum II
题目: Given a collection of candidate numbers (C) and a target number (T), find all unique combination ...
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...
- poj2492A Bug's Life——带权并查集
题目:http://poj.org/problem?id=2492 所有元素加入同一个并查集中,通过其偏移量%2将其分类为同性与异性,据此判断事件. 代码如下: #include<iostrea ...
- shell中利用ftp 上传文件夹功能
我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上 ...
- iOS :undefined symbols for architecture x86_64
转自:http://www.th7.cn/Program/IOS/201408/268371.shtml 问题描述:为了适配iPhone 5s的64位处理器,在编译选项中加入了arm64架构.但是发现 ...
- 创建maven parent project & module project
1.命令方式: 1)Create the top-level root: mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.arc ...
- [poj1830]开关问题(高斯消元)
题意:求高斯消元中自由元的个数,输出1<<ans; #include<cstdio> #include<cstdlib> #include<cstring&g ...
- php中使用mysqli和pdo扩展,测试mysql数据库的执行效率。
<?php /** * 测试pdo和mysqli的执行效率 */ header("Content-type:text/html;charset=utf-8"); //通过pd ...