万妙音 发表于 2025-9-4 13:01:09

ORA-01720 错误及解决方法

ORA-01720 错误表示在 Oracle 数据库中尝试授权时,缺少必要的 grant option 权限。这通常发生在用户试图将权限传递给其他用户时,但自身并未被授予传递权限。
示例,假设以下场景:

[*]用户 A 创建了视图 V_A,其中视图中用了C用户T_C表。
[*]用户 B 使用视图 表V_A 。
[*]用户 B 尝试将 V_B 的查询权限授予用户 C。
执行以下命令时会报错:
-- 基于1,我们要将用户C的表 T_C 授权给用户 AGRANT SELECT ON T_C TO C; -- 基于2,我们要将用户A的视图表 V_A 授权给用户 BGRANT SELECT ON V_A TO B; -- 那么在用户 B 下使用视图表 V_A ,会出现ORA-01720报错,即使将用户C的表 T_C 授权给用户 C,依然无法解决该问题GRANT SELECT ON T_C TO B; -- 报错:ORA-01720: grant option does not exist for 'V_A' 
解决方法:
1. 使用 WITH GRANT OPTION
在用户 C 授权给用户 A 时,添加 WITH GRANT OPTION,允许用户 A 将权限传递给其他用户。
-- 用户 A 授权给用户 B,并允许传递权限GRANT SELECT ON T_C TO A WITH GRANT OPTION;
-- 用户 A 再次授权给用户 BGRANT SELECT ON V_A TO B;此时,用户 B 可以正常访问视图 V_A。
2. 权限链分析
确保所有涉及的对象(如表或视图)都已正确授权。如果用户 A 的视图依赖于多个对象,则每个对象都需要添加 WITH GRANT OPTION。
注意事项

[*]谨慎使用:WITH GRANT OPTION 会赋予被授权者较大的权限,需确保其安全性。
[*]如果需要进一步授权(如用户 B 授权给其他用户),需重复上述步骤。
通过以上方法,可以有效解决 ORA-01720 错误并完成权限传递。
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

簑威龙 发表于 2025-10-29 00:48:24

收藏一下   不知道什么时候能用到

裒噎 发表于 2025-10-30 00:46:38

谢谢分享,辛苦了

呵烘稿 发表于 2025-12-11 15:25:14

用心讨论,共获提升!

厥轧匠 发表于 2025-12-26 06:54:55

谢谢分享,试用一下

眸胝 发表于 2026-1-8 08:56:47

感谢分享,下载保存了,貌似很强大

庞悦 发表于 2026-1-14 15:03:05

这个有用。

觞刈 发表于 2026-1-15 10:56:53

感谢分享,下载保存了,貌似很强大

稼布欤 发表于 2026-1-19 10:59:10

感谢分享,下载保存了,貌似很强大

煅圆吧 发表于 2026-1-19 11:30:23

很好很强大我过来先占个楼 待编辑

那虻 发表于 2026-1-21 05:27:32

感谢,下载保存了

肿圬后 发表于 2026-1-21 14:01:12

用心讨论,共获提升!

客臂渐 发表于 2026-1-22 11:54:27

谢谢分享,辛苦了

劝匠注 发表于 2026-1-23 17:30:26

谢谢分享,试用一下

董绣梓 发表于 2026-1-25 09:08:52

谢谢分享,辛苦了

梨恐 发表于 2026-1-25 09:32:16

很好很强大我过来先占个楼 待编辑

阜逐忍 发表于 2026-1-28 06:06:02

感谢发布原创作品,程序园因你更精彩

二艰糖 发表于 2026-1-28 06:52:26

鼓励转贴优秀软件安全工具和文档!

夔新梅 发表于 2026-1-29 02:25:51

yyds。多谢分享

魁睥 发表于 2026-2-2 06:36:14

谢谢分享,试用一下
页: [1] 2
查看完整版本: ORA-01720 错误及解决方法