utl_http.request:调用阻止其他会话的同一服务器?

时间:2017-11-07 19:44:13

标签: oracle plsql httprequest blocking

我们今天有一个工作,挂了一个utl_http.request()电话......它所调用的服务器似乎在生成请求时挂起,但没有发生超时异常(当前接收超时是默认值,60秒)。在我们发现并杀死它之前,这项工作等待了几个小时才能回来。

十几个其他工作(也发出相同的utl_http.request调用)表示他们被阻止了 - 阻塞会话是第一个挂起的。 v $ locked_object没有记录,因此不清楚为什么其他会话认为第一个会话阻止它们。他们都说"库缓存加载锁定"为会议活动。

我们杀死了第一个会话后,其他作业都完成了(尽管在utl_http调用中有一个TNS:没有监听器错误)。

是否有utl_http.request()的内容,一次只能从同一个实例调用服务器/地址? (关于为什么超时从未在任何会话中踢出的理论的奖励积分。)

1 个答案:

答案 0 :(得分:0)

我以某种方式破解了它!!! 尝试在utl_http.set_wallet()中更改钱包路径并重新编译。执行Web服务,由于钱包位置无效,这次将失败。在utl_http.set_wallet()过程中还原钱包路径,然后再次编译代码。执行Web服务,您应该获得响应而不会挂起... 祝你好运.....