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

简介: 学习动态性能表 第13篇--V$OPEN_CURSOR    本视图列出session打开的所有cursors,很多时候都将被用到,比如:你可以通过它查看各个session打开的cursor数。
 

学习动态性能表

13--V$OPEN_CURSOR 

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

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

2.列出拥有超过400cursorsessionID

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开发应用的时候。仅通过它一个视图你就能分析出当前的连接情况,主要执行语句等。

目录
相关文章
|
SQL Oracle 关系型数据库
学习动态性能表 第七篇--V$PROCESS
学习动态性能表 第七篇--V$PROCESS    本视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。在某些情况下非常有用: 1.         如果数据库瓶颈是系统资源(如:cpu,内存),并且占用资源最多的用户总是停留在某几个服务进程,那么进行如下诸项: l         找出资源进程 l         找出它们的session,你必须将进程与会话联系起来。
1067 0
学习动态性能表 第十八篇--V$SYSTEM_EVENT
学习动态性能表 第18篇--V$SYSTEM_EVENT    本视图概括了实例各项事件的等待信息。v$session_wait显示了系统的当前等待项,v$system_event则提供了自实例启动后各个等待事件的概括。
717 0