• 学习动态性能表 第十三篇V$OPEN_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开发应用的时候。仅通过它一个视图你就能分析出当前的连接情况,主要执行语句等。

  • 相关阅读:
    PAT 甲级 1015 Reversible Primes (20 分) (进制转换和素数判断(错因为忘了=))
    『Spring.NET+NHibernate+泛型』框架搭建之DAO(三)★
    (C#)使用队列(Queue)解决简单的并发问题
    VB.NET多线程入门
    Machine Learning With Spark学习笔记(在10万电影数据上训练、使用推荐模型)
    JAVA 并发编程-多个线程之间共享数据(六)
    POJ 3087 Shuffle'm Up(模拟)
    cocos2dx --- 富文本的使用 RichText
    <LeetCode OJ> 217./219. Contains Duplicate (I / II)
    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
  • 原文地址:https://www.cnblogs.com/jimeper/p/1129443.html
Copyright © 2020-2023  润新知