有没有办法保证应用程序不会在Oracle中释放行锁?如果我确保将commit语句放在finally块中,那就处理了意外错误的情况,但是如果应用程序进程在提交之前突然死亡(或者某人踢掉电源线/ lan电缆)会怎么样。
有没有办法让Oracle在X时间后自动回滚空闲会话?或者当我以某种方式检测到连接丢失时回滚?
从我已经完成的实验中,如果我在提交之前终止应用程序进程,行锁将永远保留,直到我登录数据库并手动终止会话。
感谢。
答案 0 :(得分:2)
尝试在SQLNET.EXPIRE_TIME
中设置sqlnet.ora
。
SQLNET.EXPIRE_TIME=10
<强>目的强>
指定时间间隔(以分钟为单位),以发送检查以验证客户端/服务器连接是否处于活动状态。
答案 1 :(得分:1)
答案 2 :(得分:0)
我不是DBA所以我相信你能找到更好的解决方案......
但是某些似乎发生的死锁条件不会自行回滚。我的上一个DBA有一个每分钟运行的进程,可以杀死任何运行时间超过10分钟的进程。