Oracle APEX调用外部REST API遇ORA-24247错误,隔离DB服务器如何处理?
解决Oracle APEX在隔离DB环境下访问外部API的问题
核心原因
你的场景里,默认APEX的REST数据源是直接通过数据库发起请求的,但DB服务器处于隔离状态,既没有对应ACL权限,也无法访问外部网络,因此触发ORA-24247错误。而ORDS服务器是可以和外部API连通的(需先确认ORDS所在服务器能访问目标API),所以要把请求路由到ORDS上执行。
具体解决方案
1. 配置APEX通过ORDS代理发起REST请求
APEX支持将外部API请求交由ORDS代理处理,这样请求不再从DB服务器发出,而是由ORDS服务器代劳。
操作步骤:
- 登录APEX工作区,进入管理 > 实例设置 > 特性
- 找到REST数据源板块,将使用ORDS作为代理选项设置为是
- 保存设置后,重新测试你的REST数据源
2. 验证ORDS服务器的网络连通性
确保ORDS所在服务器能访问目标外部API的地址和端口:
- 在ORDS服务器上用
curl或wget测试连通性,示例命令:curl https://目标API地址/接口路径 - 如果ORDS服务器也无法访问,需先协调网络团队打通ORDS到目标API的网络链路
3. (可选)配置ORDS的代理参数(若需中转)
如果目标API需要通过特定代理服务器访问,可修改ORDS配置文件ords/conf/ords.properties,添加以下参数:
# HTTP代理地址与端口 ords.proxy.host=你的代理服务器地址 ords.proxy.port=代理端口 # 若代理需认证,补充以下参数 ords.proxy.user=代理用户名 ords.proxy.password=代理密码
修改后重启ORDS服务生效
补充说明
- 这种方式绕过了数据库的网络ACL限制,因为请求由ORDS发起,DB仅负责与ORDS通信(这部分链路应该已连通,毕竟ORDS要连接DB)
- 确保ORDS版本与APEX 23.2兼容,推荐使用ORDS 23.x及以上版本
内容的提问来源于stack exchange,提问作者Damo
相关产品推荐
相关产品推荐

