日期:2011-03-21 00:21:00 来源:本站整理
<b>在Oracle 8x中实现自动断开后再衔接</b>[Oracle防范]
本文“<b>在Oracle 8x中实现自动断开后再衔接</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在实际的数据库利用中,我们常常碰到这样一个问题,衔接到Oracle数据库的用户在作了一次操作后,再也没有后续操作,但却长时间没有和数据库断开衔接.关于一个小型的利用系统来说,本身的衔接数目就有限,这仿佛没有什么严重的后果,但假如关于一个大型的数据库利用.如税务、工商等,假如数据库的衔接数目很多,关于数据库服务器来说,多一个衔接就要多损耗一份资源,假如大量用户衔接进入数据库系统但却不举行任何的操作,这无形之中就白白造成了服务器系统资源的浪费,同时造成服务器负载的提高,关于那些确切在工作的用户来说,就不能最大限度的操纵服务器的资源,严重情形下大概造成系统性能的急剧下降.
针对这种问题,该若何处理呢?关于目前风行的三层构造(Browser/Application/Server)开辟来说,这个问题可以通过设置利用服务器端的衔接同享池(shared pool)来避免.但关于传统的两层构造(Client/Server)利用,就必须由我们人为干涉来避免这种资源浪费情形.具体可以通过一个后台任务来监控系统中的全部进程,关于那些闲暇超越一按时间的进程采纳一定的特别处理办法,如在客户端提醒用户衔接时间太长,假如没有后续操作系统将自动杀掉该衔接大概直接将该闲暇衔接杀掉.下面就来具体谈论如安在Oracle 8x环境下实现用户进程的自动监控及其对对超越一定闲暇时间衔接的处理办法.
1、辨认系统中超越一定闲暇时间的衔接
要实现后台任务自动对超越一按时间闲暇衔接的处理,首先第一步工作就是要从全部与数据库服务器的衔接中辨认出那些衔接需求处理,也就是需求得到与服务器衔接的每个用户的登陆时间及其最后一次操作后的闲暇时间.在Oracle系统中,有一个动态性能视图v$session,该视图保存着系统当前衔接的各种动态信息.此中,有两个字段LOGON_TIME和 LAST_CALL_ET可以得到上面的两个答案.
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; |
在上面的查询中,我们可以通过SUBSTR (machine, 1, 19) NOT IN ('机械名')这个条件来屏蔽一些机械,这些机械大概需求运行一些耗费很长时间的SQL语句或其他一些特别情形的机械.屏蔽这些机械的缘由就是在背面的后台自动辨认及处理任务中对这些机械不作处理.
以上是“<b>在Oracle 8x中实现自动断开后再衔接</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论