oracle中v$session_longops视图介…

oraclev$session_longops视图介绍

 

     DBA们经常需要监控数据库中一些花费大量时间的操作,如备份恢复,收集统计信息,排序都会记录在这个视图当中。

       这个视图主要是显示运行时间超过6秒的数据库操作的状态.所以对于数据库监控一些耗时的操作是非常有意义的。并且可以看到某个进程的执行进度。

 

来看看这个视图的结构:

V$SESSION_LONGOPS列说明

 

SIDSession标识

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

 

示例:

 

创建一个数据量比较大的数据表,如log_

 

执行查询log_,命令如下:

 

SQL> set timing on  

SQL> select count(1) from log_  

   

  COUNT(1)  

----------  

  19999998  

   

Executed in 6.438 seconds  

 

 此时执行如下SQL语句 

select from sys.v$session_longops where t.TARGET like '%LOG_' 

  会发现,执行时间大于6秒的那条记录已经被记录在v$session_longops视图中了.

 

下面利用关联查询可以查询出该SQL语句的完整内容(也就是能查询出所有执行时间大于6秒的语句).

 

select from v$sql a,v$session_longops where a.SQL_ID b.SQL_ID  

 

select from v$sqlarea a,v$session_longops 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 where a.SID b.SID and a.SERIAL# b.SERIAL#  


****************************


先找PID然后
select sid, program from v$session where paddr in(select addr from v$process where pid in (53);  

      
查看进度
select sid, serial#, sofar, totalwork
from v$session_longops
where opname = ''
and sofar != totalwork;

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
除了上面提到的视图,还有一些常用的性能视图: 1. V$STATNAME:列出了 Oracle 数据库所有的统计信息名称,可以使用 SQL 语句 SELECT * FROM V$STATNAME; 查看。 2. V$SQL_PLAN:显示 SQL 语句的执行计划,例如执行计划、计划步骤等。可以使用 SQL 语句 SELECT * FROM V$SQL_PLAN; 查看。 3. V$SESSION_WAIT:显示当前会话等待事件的信息,例如等待事件名称、等待时间等。可以使用 SQL 语句 SELECT * FROM V$SESSION_WAIT; 查看。 4. V$SQL_PLAN_STATISTICS_ALL:显示 SQL 语句的执行计划的统计信息,例如 I/O 操作次数、 CPU 消耗、内存消耗等。可以使用 SQL 语句 SELECT * FROM V$SQL_PLAN_STATISTICS_ALL; 查看。 5. V$SQLSTATS:显示 SQL 语句的统计信息,例如执行次数、平均执行时间等。可以使用 SQL 语句 SELECT * FROM V$SQLSTATS; 查看。 6. V$SYSSTAT:显示系统统计信息,例如缓冲池命率、 I/O 操作次数等。可以使用 SQL 语句 SELECT * FROM V$SYSSTAT; 查看。 7. V$ROLLSTAT:显示回滚段的统计信息,例如回滚段大小、使用情况等。可以使用 SQL 语句 SELECT * FROM V$ROLLSTAT; 查看。 8. V$SESSION_LONGOPS:显示长时间运行的操作信息,例如操作进度、估计完成时间等。可以使用 SQL 语句 SELECT * FROM V$SESSION_LONGOPS; 查看。 9. V$ASM_DISKGROUP_STAT:显示 ASM 磁盘组的统计信息,例如磁盘组大小、使用情况等。可以使用 SQL 语句 SELECT * FROM V$ASM_DISKGROUP_STAT; 查看。 总之,Oracle 数据库提供了很多性能视图,通过监控这些视图可以了解数据库的性能情况,找出系统的瓶颈并进行优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值