ORA-01031:使用同义词更新表缺权限,求跨用户写入授权方案
解决Oracle跨用户表更新权限不足(ORA-01031)问题
问题核心
你提到用户B可通过同义词查询A.blacklist但无法更新,原因是系统权限SELECT ANY TABLE允许跨用户查询,但写入(UPDATE)需要针对具体表的对象级权限,现有角色/系统权限未覆盖该表的UPDATE权限。
正确授权语法
以用户A或拥有DBA权限的用户身份执行以下语句,仅授予用户B对A.blacklist的UPDATE权限:
GRANT UPDATE ON A.blacklist TO B;
如果需要同时授予INSERT、DELETE等其他写入权限,可合并为:
GRANT INSERT, UPDATE, DELETE ON A.blacklist TO B;
补充说明
- 同义词仅简化访问路径(让B直接用
blacklist代替A.blacklist),权限验证仍基于原表A.blacklist的授权配置。 - 你列出的系统权限中无
UPDATE ANY TABLE,即使存在也不建议使用——它属于全局权限,会让B能更新所有用户的表,不符合"仅针对A.blacklist"的需求。
内容的提问来源于stack exchange,提问作者user19775050
相关产品推荐
相关产品推荐

