我支持通过 WAN 查询远程数据库的一些存储过程。网络偶尔会出现故障,但最糟糕的是程序失败并且必须重新启动。
在过去的几周里,情况发生了险恶的转折。而不是失败的程序挂在一个奇怪的锁定状态。它们不能在 Oracle 内部被杀死,只要它们存在,任何运行该过程的其他副本的尝试也会挂起。我们找到的唯一解决方案是使用操作系统中的“kill -9”来终止有问题的程序。其中一些程序几个月甚至几年都没有改变,所以我怀疑数据库或数据库配置中的根本原因。
任何人都知道我们可以做些什么来解决这个问题?或者 PL/SQL 是否具有可以添加到代码中的超时机制,以便我可以创建一个可以以编程方式处理的异常?