【发布时间】:2013-12-14 19:32:07
【问题描述】:
我正在使用utl_http 包向与Oracle 位于同一服务器(本地)上的IIS 站点发出HTTP GET 请求。有时它可以工作并且我得到响应,但通常它会挂起大约 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 上运行它,我会遇到同样的问题。
我尝试的另一件事是创建自己的包,它使用长 utl_htp.begin_request() 方法而不是 utl_http.request() 快捷方式来执行 HTTP 请求。这给出了完全相同的问题(有时有效,但大多数错误 - 相同的错误)。
我看到的模式是,如果我等待一段时间然后尝试,它会在前 2-10 次有效,然后开始出错。当它起作用时,我会立即得到响应,当它出错时,总是会在出错之前有延迟。
如果我使用远程 Web 浏览器请求文本文件 URL(或站点中的任何其他资源),那么我每次都会得到正确的响应。
我已尝试设置如下所示的超时,但没有任何效果。例如,不是在 3 秒后超时,而是在显示错误之前持续 10 或 15 秒。
UTL_HTTP.set_transfer_timeout(3);
我想我可以排除 ACL,因为它有时会起作用。
有谁知道什么可能导致这种行为?
【问题讨论】:
标签: sql oracle plsql oracle11g oracle-apex