ORA-01720 错误及解决方法
ORA-01720 错误表示在 Oracle 数据库中尝试授权时,缺少必要的 grant option 权限。这通常发生在用户试图将权限传递给其他用户时,但自身并未被授予传递权限。
示例,假设以下场景:
- 
用户 A 创建了视图 V_A,其中视图中用了C用户T_C表。 
- 
用户 B 使用视图 表V_A 。 
- 
用户 B 尝试将 V_B 的查询权限授予用户 C。 
执行以下命令时会报错:
-- 基于1,我们要将用户C的表 T_C 授权给用户 A
GRANT SELECT ON T_C TO C;
-- 基于2,我们要将用户A的视图表 V_A 授权给用户 B
GRANT SELECT ON V_A TO B;
-- 那么在用户 B 下使用视图表 V_A ,会出现ORA-01720报错,即使将用户C的表 T_C 授权给用户 C,依然无法解决该问题
GRANT SELECT ON T_C TO B;
解决方法:
1. 使用 WITH GRANT OPTION
在用户 C 授权给用户 A 时,添加 WITH GRANT OPTION,允许用户 A 将权限传递给其他用户。
-- 用户 A 授权给用户 B,并允许传递权限
GRANT SELECT ON T_C TO A WITH GRANT OPTION;
-- 用户 A 再次授权给用户 B
GRANT SELECT ON V_A TO B;
此时,用户 B 可以正常访问视图 V_A。
2. 权限链分析
确保所有涉及的对象(如表或视图)都已正确授权。如果用户 A 的视图依赖于多个对象,则每个对象都需要添加 WITH GRANT OPTION。
注意事项
- 
谨慎使用:WITH GRANT OPTION 会赋予被授权者较大的权限,需确保其安全性。 
- 
如果需要进一步授权(如用户 B 授权给其他用户),需重复上述步骤。 
通过以上方法,可以有效解决 ORA-01720 错误并完成权限传递。
    不管在什么地方上班,请记住:
    工作不养闲人,团队不养懒人。入一行先别惦记着赚钱,先学着让自己值钱。赚不到钱赚知识;赚不到知识赚经历;赚不到经历赚阅历;以上都赚到了就不可能赚不到钱。只有先改变自己的态度,才能改变人生的高度。
    让一个人迷茫的原因只有一个,那就是本该拼搏的年纪,却想的太多,做的太少。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号