0

我有一个在 WAS 上运行的 EAR 应用程序并连接到 oracle db 以运行存储过程。

现在存储过程需要很长时间才能运行。因此,WAS 和 oracle 服务器之间的防火墙在 30 分钟后关闭。是否有允许防火墙保持打开状态的 oracle 配置?在这里增加超时不是一个选项。

4

1 回答 1

2

如果防火墙因为不活动而关闭连接,您可以在服务器上设置sqlnet.ora 参数sqlnet.expire_time 以每 N 分钟 ping 一次客户端。通常,这用于死连接检测,以便服务器可以确定客户端应用程序因打开的连接而死。但这可能会阻止防火墙确定连接已处于非活动状态的时间过长。另一方面,如果防火墙只是禁止持续时间超过 30 分钟的连接而不管不活动状态,则此设置不会产生任何影响。

但是,从架构上讲,您真的希望您的应用程序进行 30 分钟的存储过程调用吗?应用程序进行调用以提交异步运行存储过程的作业似乎更合适。然后,如果您想向用户显示某种进度条,Web 应用程序可以定期轮询数据库以查看作业是否仍在运行。

于 2012-11-08T22:25:47.587 回答