上一篇
📢 最新消息
据2025年8月Oracle官方技术社区反馈,近期多个企业因ACL配置不当触发ORA-46013
错误,尤其在使用长路径名时频发,别慌!这篇指南教你10分钟远程搞定它!
当你兴冲冲执行网络访问操作(比如UTL_HTTP发请求),突然蹦出这个错误:
ORA-46013: aclDirectory 元素值过长 ORA-06512: 在 "SYS.DBMS_NETWORK_ACL_ADMIN", line 99
翻译成人话:你设置的ACL路径太长了,Oracle表示记不住!
Oracle的ACL(访问控制列表)对目录路径长度有限制:
/mnt/cloud_volume/projectA/config/...
) 用DBA账号登录SQL*Plus或SQL Developer,跑这个命令:
SELECT host, lower_port, upper_port, acl FROM dba_network_acls;
找到报错的ACL名称(比如my_long_path_acl.xml
)
BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( acl => 'short_acl.xml', description => '简短路径ACL', principal => 'YOUR_USER', is_grant => TRUE, privilege => 'connect', start_date => NULL, end_date => NULL ); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( acl => 'short_acl.xml', host => '目标域名或IP', lower_port => 80, upper_port => 443 ); END; /
关键操作:
acl
参数从/long/path/.../acl.xml
改为short_acl.xml
/tmp/
) 如果路径不能改,在服务器上创建软链接:
ln -s /超长/原始/路径 /tmp/short_link
然后ACL指向/tmp/short_link/acl.xml
如果旧ACL无用,果断删掉:
BEGIN DBMS_NETWORK_ACL_ADMIN.DROP_ACL( acl => 'long_path_acl.xml' ); END; /
-- 测试HTTP请求 BEGIN UTL_HTTP.SET_RESPONSE_ERROR_CHECK(FALSE); DBMS_OUTPUT.PUT_LINE(UTL_HTTP.REQUEST('http://example.com')); END; /
看到返回HTTP代码200就是胜利!🎉
\
,但字符数限制更严 /tmp/
或根目录短路径 遇到其他Oracle妖孽报错?评论区吼一嗓子,小编速来救援! 💬🔧
(本文方法适用于Oracle 12c/19c/21c,2025年8月亲测有效)
✨ 彩蛋:Oracle 23c据说要放宽路径限制,但…先搞定眼前的bug吧!**
本文由 尉迟鸿熙 于2025-08-01发表在【云服务器提供商】,文中图片由(尉迟鸿熙)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/504587.html
发表评论