Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1240239
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-24 11:26:10

学习动态性能表(一)--v$sysstat
http://junsansi.itpub.net/post/29894/291051

学习动态性能表(二)--v$sesstat
http://junsansi.itpub.net/post/29894/291243

学习动态性能表(三)--v$sql&v$sql_plan
1.http://junsansi.itpub.net/post/29894/291651
2.http://junsansi.itpub.net/post/29894/291652

学习动态性能表(四)--v$sqltext&v$sqlarea
1.http://junsansi.itpub.net/post/29894/291654
2.http://junsansi.itpub.net/post/29894/291656

学习动态性能表(五)--v$session
http://junsansi.itpub.net/post/29894/292372

学习动态性能表(六)--v$session_wait&v$session_event
1.http://junsansi.itpub.net/post/29894/292373
2.http://junsansi.itpub.net/post/29894/292375

学习动态性能表(七)--v$process
http://junsansi.itpub.net/post/29894/292558

学习动态性能表(八)--v$lock&v$locked_object
1.http://junsansi.itpub.net/post/29894/292816
2.http://junsansi.itpub.net/post/29894/292819
3.http://junsansi.itpub.net/post/29894/292825

学习动态性能表(九)--V$FILESTAT
http://junsansi.itpub.net/post/29894/293209

学习动态性能表(十)--V$SESSION_LONGOPS
http://junsansi.itpub.net/post/29894/293212

学习动态性能表(11)--v$latch$v$latch_children
http://junsansi.itpub.net/post/29894/294342

学习动态性能表(12)--V$DB_OBJECT_CACHE
http://junsansi.itpub.net/post/29894/294343


学习动态性能表第13篇--V$OPEN_CURSOR

  本视图列出session打开的所有cursors,很多时候都将被用到,比如:你可以通过它查看各个session打开的cursor数。

  当诊断系统资源占用时,它常被用于联接v$sqlarea和v$sql查询出特定SQL(高逻辑或物理I/O)。然后,下一步就是找出源头。在应用环境,基本都是同一类用户登陆到数据库(在V$SQLAREA中拥有相同的PARSING_USER_ID),而通过这个就可以找出它们的不同。V$SQLAREA中的统计项在语句完全执行后被更新(并且从V$SESSION.SQL_HASH_VALUE中消失)。因此,你不能直接找到session除非语句被再次执行。不过如果session的cursor仍然打开着,你可以通过v$open_cursor找出执行这个语句的session。

V$OPEN_CURSOR中的连接列

Column View Joined Column(s)
----------------------------- ---------------------------------------- -----------------------------
HASH_VALUE, ADDRESS V$SQLAREA, V$SQL, V$SQLTEXT HASH_VALUE, ADDRESS
SID V$SESSION SID

示例:
1.找出执行某语句的session:
SELECT hash_value, buffer_gets, disk_reads
FROM V$SQLAREA
WHERE disk_reads > 1000000
ORDER BY buffer_gets DESC;

HASH_VALUE BUFFER_GETS DISK_READS
---------- ----------- ----------
1514306888 177649108 3897402
478652562 63168944 2532721
360282550 14158750 2482065

3 rows selected.
SQL> SELECT sid FROM V$SESSION WHERE sql_hash_value = 1514306888 ;
no rows selected
--直接通过hash_value查找v$session,没有记录

SQL> SELECT sid FROM V$OPEN_CURSOR WHERE hash_Value = 1514306888 ;

SID
-----
1125
233
935
1693
531

5 rows selected.
--通过hash_value在v$open_cursor中查找sid(只有在session的cursor仍然打开的情况下才有可能找到)

2.列出拥有超过400个cursor的sessionID
SQL> SELECT sid, count(0) ct FROM v$open_cursor
GROUP BY sid HAVING COUNT(0) > 400 ORDER BY ct desc;

事实上,v$open_cursor是一个相当常用的视图,特别是web开发应用的时候。仅通过它一个视图你就能分析出当前的连接情况,主要执行语句等。

阅读(757) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~