Oracle-InActive会话达到一定连接时间自动断开方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Oracle会话达到一定连接时间自动断开方法1.Oracle数据库中都有至少一个Proflie文件,它是口令限制,资源限制的命名集合。建立oracle数据库时,oracle会自动建立名为DEFAULT的PROFILE,初始化的DEFAULT没有进行任何口令和资源限制,用户yherp使用的就是DEFAULT的PROFILE。可以执行语句查看:selectusername,profilefromdba_userswhereusername='YHERP';查看这个PROFILE的内容:select*fromdba_profileswhereprofile='DEFAULT';红色标记的“IDLE_TIME”意为空闲时间,默认值为“UNLIMITED”,后面会进行设置。2.Oracle的系统参数RESOURCE_LIMIT是一个用于控制用户对于数据库资源使用的参数,当值为true的时候即为启用,否则禁用(默认是禁用的)。该参数结合profile来可以控制多种资源的使用,如CPU_PER_SESSION,CONNECT_TIME,LOGICAL_READS_PER_SESSION,PRIVATE_SGA等等,从而达到到节省资源来实现高效性能。通过以下语句查看其状态:SELECTname,valueFROMgv$parameterWHEREname='resource_limit';3.首先:开启这个参数:ALTERSYSTEMSETRESOURCE_LIMIT=TRUE;查看开启结果:SELECTname,valueFROMgv$parameterWHEREname='resource_limit';其次:修改已存在的Profile中的IDLE_TIME:(单位为分钟,设置为一天24小时)ALTERPROFILEDEFAULTLIMITIDLE_TIME1440;说明:a.参数RESOURCE_LIMIT=TRUE用于启用数据库资源配置限制;b.profile用于实现资源配置,创建profile或修改已存在的profile来调整各个具体资源配置;c.一旦被限制的用户超出所设定的阀值将收到资源配置相关的错误提示;d.被限制资源的session状态变成sniped;e.被限制资源的session对应的serverprocess并没有被释放,需要结合sqlnet.expire_time来进行释放4.使用SQLNET.EXPIRE_TIME清除僵死连接:数据库连接的客户端异常断开后,其占有的资源并没有被释放,从v$session视图中依旧可以看到对应的session处于inactive状态,且对应的服务器进程也没有释放,导致资源长时间地被占用。SQLNET.EXPIRE_TIME专门用于清理那些异常断开的情形:通过设定参数为非零值(单位为分钟)来发送探测包以检查客户端的异常断开。一旦探测包找到了异常的连接将返回错误,清除对应的serverprocess。配置SQLNET.EXPIRE_TIME:对于SQLNET.EXPIRE_TIME的配置,需要修改sqlnet.ora,其路径为$ORACLE_HOME/network/admin下。然后添加SQLNET.EXPIRE_TIME项在末尾添加SQLNET.EXPIRE_TIME=1470之后重启数据库。5.总结:a.INACTIVEsession是用户建立连接之后,尚未执行任何操作或操作已经完成但没有断开,等同于与处于idle状态,在v$session视图呈现的是INACTIVE状态;b.对于使用resource_limit及profile配置后用户session超出idle_time的情形,在v$session视图呈现sniped状态;c.当在sqlnet.ora配置文件中设置了SQLNET.EXPIRE_TIME参数为非零值时,僵死连接在EXPIRE_TIME指定的时间后被清除(设定24小时后将INACTIVE状态的SESSION置为SNIPED状态,之后再半小时后清除僵死连接,理论上是行得通的);d.设定SQLNET.EXPIRE_TIME为非零值之后,系统需要产生额外的开销以及带来网络性能的下降;e.对于需要及时释放OS及DB资源的情形,Oracle建议使用resource_limit及profile限制用户连接的同时并设定SQLNET.EXPIRE_TIME为非零值。

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功