执行DBMS_NETWORK_ACL_ADMIN.CREATE_ACL遇ORA-31024错误求助
解决ORA-31024 + LPX-266错误:DBMS_NETWORK_ACL_ADMIN操作失败
我碰到过好几次这个错误,本质上是XML解析层面的问题,结合你给出的代码,大概率是ACL重复创建或者未提交变更导致的XML解析异常。给你一步步的解决办法:
第一步:检查并清理已存在的同名ACL
重复创建同一个ACL会触发XML解析冲突,先查一下是否已经有www.xml这个ACL:SELECT acl FROM dba_network_acls WHERE acl = 'www.xml';如果查询返回结果,先删除它再重新创建:
BEGIN DBMS_NETWORK_ACL_ADMIN.DROP_ACL('www.xml'); COMMIT; END; /第二步:确保执行代码时提交变更
很多人容易忽略COMMIT,未提交的ACL创建操作会让XML解析器无法正确处理临时数据,导致LPX-266错误。修改你的代码加上提交语句:BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( acl => 'www.xml', description => 'www ACL', principal => 'SYS', is_grant => TRUE, privilege => 'connect' ); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( acl => 'www.xml', host => '*', lower_port => 80 ); COMMIT; -- 这一步绝对不能少 END; /第三步:验证数据库XML组件状态
如果上面两步都没用,检查XDB组件(Oracle负责XML处理的核心组件)是否正常:SELECT comp_id, status FROM dba_registry WHERE comp_id = 'XDB';如果状态不是
VALID,说明XDB组件损坏,需要在SYSDBA权限下执行catxdb.sql脚本修复(建议操作前先备份数据库)。
另外提个小建议:生产环境里尽量别用host => '*',限制到具体的业务域名会更安全;如果是给普通用户授权,要确保principal参数指定的用户存在且有对应的权限。
内容的提问来源于stack exchange,提问作者Filip Milinkovic
相关产品推荐
相关产品推荐

