03114: 未连接到 ORALCE 解决方法案例

故障描述:应用程序执行某个select,update时应用程序的log报如下错误信息,程序无法更新更新某个表:

[200065640] 01-24 18:01:01.233136 [     13490] [libUserFunDb30_0.ec][554] update t_clear_journal failed, CLEARTRSNO =[20130124107200065640] SQLCODE = [-3114] SQLTEXT=[ORA-03114: 未连接到 ORALCE] [libUserFunDb30_0.ec:554]

alert里面没有 ora-03114错误信息,应用程序所在的客户端上执行sqlplus 登陆到数据库,做一个操作select操作后,这个会话30分钟不做任何操作。

客户端是Red Hat Enterprise Linux Server release 6.2 (Santiago),只是安装的10201_database_linux_x86_64.cpio 软件(没有装库)作为Oracle client端使用。操作系统包依赖包:全部装好,oracle db是 10g rac 10.0.0.5 版本、操作系统 aix 5L3。

之前我记得接触过PLSQL Developer中有一个参数tools中add debug information when compiling如果这个参数已经启用,会引发ORA-03114的错误。询问最近是否做过网络改动,客户回答没有任何改动、而且其他一个域里面的机器没有任何问题。

我想还原一下环境,看看是否报错。编写了一个脚本:

export ORACLE_SID=gxb_pay

export ORACLE_BASE=/oracle

export ORACLE_HOME=/oracle/product/10.2.0

export PATH=$PATH:$ORACLE_HOME/bin

sqlplus "pay/xxx@gxb" << EOF

select  sysdate from dual;

exec dbms_lock.sleep(1800);

select  sysdate from dual;

exec dbms_lock.sleep(3600);

select  sysdate from dual;

exec dbms_lock.sleep(3600);

EOF

然后查看了监听日志,tns配置,process,session数,用户概要文件中profile也没有指定会话超时时间,该看的都看了一遍。

果然如果停止半小时后,如果没有新的交易,那么会报ORA-03114错误。去应用处与应用人员核对,是半小时就会报错,还是平时几分钟也有。应用人员没有准确信息反馈,只说一般半小时就会报错。后询问相关系统负责人,可能是系统负责人没有接到任何的邮件通知,或者邮件里面没有标注会话等待30分钟后,再进行链接就会报错的字样。他说可能是juniper防火墙策略问题,Cisco的防火墙2小时自己退出。juniper墙30分钟自动退出。果然查看日志,很多告警信息。剩下的就是应用那边完善应用代码中检测机制的问题了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bb6c7babff1e5a7bf60e9bd54f5553ea.html