欢迎来到天天文库
浏览记录
ID:59571523
大小:21.50 KB
页数:4页
时间:2020-11-12
《在RAC环境下ORACLE无法释放进程的处理方法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在RAC环境下ORACLE无法释放进程的处理方法一、软硬件环境:服务器:IBMx3850M2:7233:2*2.4(7450),64G内存,2*300G,HBA*2,双电存储:EMCCX4-120软件环境:ZLHIS10.26+ORACLE10.2.0.4+LINUX5.3+RAC(三节点)二、问题现象:收费室人员在收费确定打印发票的过程中突然发生电脑死机或蓝屏,造成此用户近两个小时内无法收费,只能耐心的等待,系统会自动恢复,此种情况在短短的3个月时间内发生过几次。三、处理方式:1、方式一:A、通过后台语句sele
2、ctSID,serial#,USERNAMEfromv$sessionWheresidIn(selectSESSION_IDfromv$locked_object)后台查询sid号和serial#号B、通过语句altersystemkillsession'sid,serial#';提示成功,但是仍然不能收费C、将以前的用户停用,重新建一个用户,对就此操作员的姓名,结果仍然不行.D、由于是考虑是linux操作系统,又是rac环境,则分别使用root用户登录操作系统进行结束进程:kill-9psid号,提示成功,但是仍
3、然不能收费E、经过以上几种方法后,通过Select*Fromgv$session查询,始终还是存在有未结束的进程,分布在不同例程中。2、方式二:经过日志的分析,最后发现好像是在’人员缴款余额’表上更新时出现的问题,最后解决办法是修改此表的相应值:Altertable人员缴款余额pctfree20initrans40;Altertable人员缴款余额move;Alterindex人员缴款余额_PKrebuildpctfree20initrans40;本以为可以彻底解决,但是好景不长,第三天又发生类似的情况了.3、方式
4、三:通过查了一些Oracle的文档,这种情况有一个特性可以使用。Oracle称之为DeadConnectionDetection(DCD僵尸进程检测),启用这个功能后,Oracle会在指定的空闲间隔时间内,发送一个10个字节的探测包,如果客户端进程无响应则会启用PMON后台进程对这个进程的所占用的相关资源进程清理操作,包括内存资源(如PGA,UGA)、变量、锁等进行释放。于是在的rac测试环境下,实验过这个方案。具体实施方法也非常简单:A、在每个服务器节点的sqlnet.ora文件中添加这个参数:SQLNET.EX
5、PIRE_TIME=<#ofminutes>这个参数就是指定的空闲时间,也就是探测包发送的空闲间隔时间,以分钟为单位,根据医院业务时的实际情况,可以灵活设置时间B、同时设置这个参数后,要求重启或reload监听程序,由于重启监听程序不影响已经连接的用户,可以直接重启;由于是rac环境,需要重启所有节点的监听程序,在任一节点执行如下命令即可:srvctlstoplistener–nhis1srvctlstartlistener–nhis1srvctlstoplistener–nhis2srvctlstartliste
6、ner–nhis2srvctlstoplistener–nhis3srvctlstartlistener–nhis3c、具体操作步骤如下:uu在h1号节上的/u01/oracle/network/admin目录下增加一个sqlnet.ora文件,其中内容为:SQLNET.EXPIRE_TIME=1uu在oracle用户下停h1节点监听:srvctlstoplistener–nh1uu在oracle用户下重启动h1节点监听:srvctlstartlistener–nh1uu查看rac状态:crs_stat-t,状态正
7、常uu分别在h2,h3号机上重复以上操作目前通过方法三处理后近一个周的时间,未发现此现象,希望以上方法可以使大家在以后的维护过程提供帮助,同时从以上可以得知在高可用rac环境下也存在维护的难度。
此文档下载收益归作者所有