什么在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

透过该语句,可以收获你想要的音讯,截图如下:

图片 1

本身的民众号:

图片 2

相关文章