博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数据库连接记录

Posted on 2009-08-03 09:28  闫景荣  阅读(317)  评论(0)    收藏  举报

下面的SQL查询语句可以得到与当前数据库连接的所有用户的一些基本情况,如用户名、状态、连接机器的名称,操作系统中用户的名称,UNIX系统的进程号,在UNIX操作系统级断开连接的语句,Oracle数据库系统断开连接的语句,登陆时间以及最后一次操作到现在的空闲时间等等。




SELECT s.username 用户名称, s.status 状态,s.machine 机器名称,        osuser 操作系统用户名称,spid UNIX进程号,    'kill -9 '||spid UNIX级断开连接,    'alter system kill session ' ||''''||s.sid||',  '||s.serial# || ''';' Oracle级断开连接,    TO_CHAR (logon_time, 'dd/mm/yyyy hh24:mi:ss') 登陆时间,    last_call_et 空闲时间秒,    TO_CHAR (TRUNC (last_call_et / 3600, 0))||' '||' HRS '||    TO_CHAR (    TRUNC ((last_call_et - TRUNC   (last_call_et / 3600, 0) * 3600) / 60, 0)    ) ||' MINS' 空闲时间小时分钟,    module 模块    FROM v$session s, v$process p    WHERE TYPE = 'USER'    AND p.addr = s.paddr    AND status != 'KILLED'    -- AND SUBSTR (machine, 1, 19) NOT IN ('机器名')    AND last_call_et > 60 * 60 * 1    -- 空闲时间超过1小时的连接    ORDER BY last_call_et desc;