03135, 00000, "connection lost contact"
*Cause: 1) Server unexpectedly terminated or wasforced to terminate.
2) Server timedout the connection.
*Action: 1) Check if theserver session was terminated.
2) Check if thetimeout parameters are set properly in sqlnet.ora.
在网上找了一下资料,在服务端中添加了sqlnet.ora中配置sqlnet.expire_time = 10,单位是分钟。还是报错。
开始分析存储过程,在一个大的存储过程中,执行了8个存储过程。
procedure1:调用了dblink
procedure2:直到p7都没有调用dblink
...
procedure8:调用了dblink
我产生了一种感觉,在procedure1调用了dblink之后,下面的几个存储过程要执行几个小时,可能是服务端的防火墙觉得这个连接没有动静,以为是空闲的,连接收回了。到procedure8的时候再次调用,就报失去连接。dblink正确的使用方法是使用完后要关闭,于是在procedure1的最后加上关闭dblink的语句,alter session close database link dblink_name。测试发现可以了,证明了我的猜想。