• 如何在Oracle数据库中查看哪些用户在执行哪些SQL


    对于DBA来说,这是一个非常常见的问题,DBA需要找出以下问题:

    1、哪些用户在跑哪些SQL?

    2、一个特定的SQL是被哪个用户在执行?

    3、一个特定的用户在跑哪些SQL?

    从这些问题中可以很明显的看出来,这些问题都是指当前,此刻发生的。事实上,还可以获得更多类似的内容:

    1、当前登录数据库的有哪些用户?

    2、哪些计算机在被用户登录?

    3、一个SQL跑了多久了?

    所有以上这些问题都对你的数据库性能调优有关。在ORACLE数据库中可能存在性能低下的SQL语句,这时候你就需要识别用户,SQLs,以便来解决这些性能低下的SQL.

    所有这些信息都在以v$开头的表中。比如v$session和v$sqlarea。

    如果你有以上2个表的权限,可以执行以下语句:

    SELECT
    SUBSTR(SS.USERNAME,1,8) USERNAME,
    SS.OSUSER "USER",
    AR.MODULE || ' @ ' || SS.machine CLIENT,
    SS.PROCESS PID,
    TO_CHAR(AR.LAST_LOAD_TIME, 'DD-Mon HH24:MM:SS') LOAD_TIME,
    AR.DISK_READS DISK_READS,
    AR.BUFFER_GETS BUFFER_GETS,
    SUBSTR(SS.LOCKWAIT,1,10) LOCKWAIT,
    W.EVENT EVENT,
    SS.status,
    AR.SQL_fullTEXT SQL
    FROM V$SESSION_WAIT W,
    V$SQLAREA AR,
    V$SESSION SS,
    v$timer T
    WHERE SS.SQL_ADDRESS = AR.ADDRESS
    AND SS.SQL_HASH_VALUE = AR.HASH_VALUE
    AND SS.SID = w.SID (+)
    AND ss.STATUS = 'ACTIVE'
    AND W.EVENT != 'client message'
    ORDER BY  SS.LOCKWAIT ASC, SS.USERNAME, AR.DISK_READS DESC

    通过该语句,可以得到你想要的信息,截图如下:

    我的公众号:

  • 相关阅读:
    python的os模块命令
    python的os模块
    albert1017 Linux下压缩某个文件夹(文件夹打包)
    装饰器加不加()
    json和jsonp解决跨域传输数据等
    wsgi
    flask建立数据模型数据类型
    爬虫中
    javaweb学习总结(四)——Http协议
    JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
  • 原文地址:https://www.cnblogs.com/eason-liu/p/7136143.html
Copyright © 2020-2023  润新知