WEB开发网
开发学院数据库Oracle 在Oracle 8x中实现自动断开后再连接 阅读

在Oracle 8x中实现自动断开后再连接

 2010-10-01 11:53:06 来源:WEB开发网   
核心提示: l LOGON_TIME是一个日期型(Date)字段,为用户登陆时间;l LAST_CALL_ET是一个数字型(Number)字段,在Oracle 8x中实现自动断开后再连接(2),其含义是用户最后一条语句执行完毕后的时间,单位为秒,在UNIX操作系统级断开连接的语句,Oracle数据库系统断开

l LOGON_TIME是一个日期型(Date)字段,为用户登陆时间;

l LAST_CALL_ET是一个数字型(Number)字段,其含义是用户最后一条语句执行完毕后的时间,单位为秒。每次用户执行一个新的语句后,该字段复位为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;

Tags:Oracle 实现 自动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接