Oracle 10g R2中使用UTL_HTTP连接网页报错求助
解决Oracle 10g R2中UTL_HTTP连接HTTPS的ORA-28750错误
问题重现
执行以下SQL语句时触发错误:
SQL> select UTL_HTTP.REQUEST('https://backend.jofotara.gov.jo/core/invoices/',null,'file:E:\ho','Mmarwan2000@') Output from dual;
错误信息:
select UTL_HTTP.REQUEST('https://backend.jofotara.gov.jo/core/invoices/',null,'file:E:\ho','Mmarwan2000@') Output from dual * ERROR at line 1: ORA-29273: HTTP request failed ORA-06512: at "SYS.UTL_HTTP", line 1577 ORA-28750: unknown error ORA-06512: at line 1
已通过orapki配置钱包但问题依旧。
排查与解决步骤
1. 修正钱包路径格式与权限
- Oracle 10g在Windows环境下,路径需使用正斜杠(
/)或双反斜杠(\\),将file:E:\ho改为file:E:/ho或file:E:\\ho后重新测试。 - 确认Oracle数据库服务账号对
E:\ho目录及钱包文件(ewallet.p12/cwallet.sso)拥有读取权限,权限不足会导致钱包无法加载。
2. 验证钱包证书链完整性
- 用orapki命令查看钱包内证书:
确保目标站点的根CA证书、中间CA证书已完整导入钱包,Oracle 10g对SSL证书链完整性要求严格,缺失中间证书会直接触发握手失败。orapki wallet display -wallet E:\ho - 核对钱包密码:请求中输入的密码需与创建钱包时的密码完全一致,注意大小写敏感。
3. 调整UTL_HTTP的SSL参数
Oracle 10g默认SSL配置兼容有限,手动设置参数并启用详细异常:
BEGIN UTL_HTTP.SET_WALLET('file:E:/ho', 'Mmarwan2000@'); UTL_HTTP.SET_DETAILED_EXCEPTIONS(true); -- 输出更具体的错误细节 UTL_HTTP.SSL_VERSION(UTL_HTTP.SSL_VERSION_TLS_1_0); -- Oracle 10g仅支持TLS 1.0,需确认目标站点兼容 DBMS_OUTPUT.PUT_LINE(UTL_HTTP.REQUEST('https://backend.jofotara.gov.jo/core/invoices/')); END; /
启用详细异常后,能精准定位SSL握手失败的具体原因(如证书不匹配、协议不兼容等)。
4. 测试目标站点的SSL兼容性
- 在数据库服务器上用
openssl工具测试目标站点的TLS 1.0支持情况:
若连接失败,说明目标站点不支持TLS 1.0,Oracle 10g无法直接连接,需考虑升级数据库或通过中间代理转接。openssl s_client -connect backend.jofotara.gov.jo:443 -tls1
5. 检查网络连通性
- 执行
ping backend.jofotara.gov.jo确认数据库服务器能访问目标站点;若存在代理,需在UTL_HTTP中配置代理:UTL_HTTP.SET_PROXY('proxy地址:端口', 'backend.jofotara.gov.jo'); - 检查防火墙/安全组是否允许数据库服务器访问443端口。
内容的提问来源于stack exchange,提问作者Awwad Abunarr
相关产品推荐
相关产品推荐

