我使用utl_http
包向与Oracle相同服务器(本地)上的IIS发出HTTP请求。有时它可以工作,我得到响应,但通常情况下,它挂起大约15秒,然后我得到以下错误:
ORA-29273: HTTP请求失败ORA-06512:在"SYS.UTL_HTTP“行1722 ORA-29263: HTTP协议错误
作为一个测试,我在IIS站点中有一个小的静态文本文件,所以我是这样测试它的:
select utl_http.request('http://domain.com/test.txt') from dual
如果我在Oracle Apex中运行它,而不是直接在db上运行,我也会遇到同样的问题。
我尝试过的另一件事是创建一个自己的包,它使用long utl_htp.begin_request()
方法来执行HTTP请求,而不是使用utl_http.request()
快捷方式。这给出了完全相同的问题(有时起作用,但大部分是错误--相同的错误)。
我所看到的模式是,如果我等待一段时间,然后尝试,它工作的前2-10次,然后开始错误。当它起作用时,我立即得到响应,当它出错时,总是在错误之前出现延迟。
如果我使用远程web浏览器请求文本文件URL (或站点中的任何其他资源),那么每次都会得到正确的响应。
我试过像下面这样设置一个超时,但它没有任何效果。例如,在显示错误之前,它不会在3秒后超时,而是持续10秒或15秒。
UTL_HTTP.set_transfer_timeout(3);
我想我可以排除ACL,因为它有时会起作用。
有人知道是什么导致了这种行为吗?
发布于 2013-11-29 09:24:14
可能的原因
->你可能对你的TNS-侦听器有问题.
在命令提示符窗口中,尝试运行TNSPING service_name
。试着快速运行几次,并检查其中一些程序是否失败。
我曾经有过类似的问题。尝试重新配置您的TNS侦听器。
还必须有一个选项,可以在TNS-侦听器定义中提供IP号。这也解决了有时这类问题。
-> IIS问题。
发布于 2014-12-09 08:19:36
阅读SET_PERSISTENT_CONN_SUPPORT过程:http.htm#i1027673
用途:utl_http.set_persistent_conn_support(真,30);
发布于 2017-06-29 19:27:32
您是否超过了并发HTTP连接的限制?我隐约记得,当我忘记关闭HTTP连接时,遇到了类似的问题。
https://stackoverflow.com/questions/20271592
复制相似问题