自治数据库使用UTL_HTTP报ORA-29273/ORA-24247错误如何解决
UTL_HTTP在共享Exadata架构ATP中的使用说明
功能支持性
UTL_HTTP在共享Exadata基础设施的自治事务处理(ATP)实例中完全受支持,你遇到的ORA-24247: network access denied by access control list (ACL)报错是数据库层ACL配置不全、加上共享ATP独有的出站网络访问规则未配置共同导致的。
完整配置步骤
- 修正数据库层ACL配置
你之前的ACL配置缺少端口范围指定、以及必要的resolve权限,同时请确认principal_name参数值和你实际执行UTL_HTTP请求的数据库用户名完全一致(Oracle用户名大小写敏感,默认都是大写),参考修正后的配置语句:
BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'fa-saasfaprod1.fa.ocs.oraclecloud.com', lower_port => 443, -- 访问HTTP则改为80,根据实际目标端口调整 upper_port => 443, ace => xs$ace_type(privilege_list => xs$name_list('http', 'resolve'), principal_name => '替换为实际执行请求的数据库用户名', principal_type => xs_acl.ptype_db)); COMMIT; END; /
- 配置OCI控制台的ATP出站访问规则
共享架构ATP默认拒绝所有出站网络请求,必须在控制台层面额外放行目标站点的访问权限:
- 登录OCI控制台进入对应ATP实例详情页
- 切换到「出站访问」选项卡
- 新增出站规则,类型选择「外部主机」,填写目标主机名
fa-saasfaprod1.fa.ocs.oraclecloud.com和对应端口,保存后等待3-5分钟规则生效
- (HTTPS访问可选)导入目标站点根证书
如果访问的是HTTPS地址,需要先将目标站点的根证书(PEM格式)导入ATP的可信钱包,避免证书校验报错。
功能验证
配置全部完成后执行如下测试语句验证连通性:
SELECT UTL_HTTP.REQUEST('https://fa-saasfaprod1.fa.ocs.oraclecloud.com') FROM DUAL;
正常返回内容即代表配置生效。
内容的提问来源于stack exchange,提问作者ctuzla
相关产品推荐
相关产品推荐

