ORA-01720:不存在“****.****"授权选项

本文详细解释了在Oracle数据库中,如何正确地为用户授予视图查询权限,并避免ORA-01720错误的发生。文章通过具体示例说明了在进行视图权限授权时,需要确保创建视图的用户具备WITH GRANT OPTION选项,以便能够进一步将权限传递给其他用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.sina.com.cn/s/blog_68ea97d10101bpef.html

示例:

The HR user creates a view with this command:
SQL> CREATE VIEW emp_v AS SELECT * FROM scott.emp;
Now HR wants to grant the SELECT privilege on the EMP_V view to the JIM user.当HR 用户授权给JIM 用户的视图查询权限的时候,会发生什么呢?系统会给出ORA-01720错误,错误提示:ORA-01720:不存在“****.****"授权选项。如果想正常给JIM 授予视图的查询权限,需要在此步骤之前,在给SCOTT用户给HR 用户授予表scott.emp查询权限的语句中加上with grant option. 例如:grant select on scott.emp to hr with

grant option。 所以 HR needs the SELECT privilege on the EMP table with GRANT OPTION from SCOTT for this operation. 这样在用户HR给用户JIM授予视图查询权限的时候才能成功。 而做了一下操作:

SCOTT has to grant the SELECT privilege on the EMP table to JIM before this operation. 会发生什么呢?当你执行用户HR给用户JIM授予视图查询权限的时候还是收到ORA-01720错误。

原因:当用户B建了关于用户A的表的视图,然后B用户又将视图查询权限授予C用户,那么这意味着C用户必须拥有A用户表的查询权限,否则这个B用户又将视图查询权限授予C用户授权失败。因此在A用户给B用户授予A用户表的查询权限的时候,需要加上with grant option子句,然后在用户又将视图查询权限授予C用户的时候,将A用户表的权限给传递给C用户。

(可在数据库中建立用户test1,test2,test3用户来测试)

 

ORA-01720错误是指在Oracle数据库中执行授权(GRANT)语句时存在授权选项。这个错误通常发生在以下情况下: 1. 语法错误:在授权语句中可能存在语法错误,比如错误的关键字使用或者错误的授权对象命名等。在编写授权语句时应仔细检查语法,确保没有拼写错误或者错误的语法结构。 2. 错误的授权对象:可能尝试对一个存在的表、视图、存储过程或者其他对象进行授权。在授权之前需要确保对象存在并且正确命名。可以使用DESCRIBE命令或查询数据字典(如ALL_OBJECTS视图)来确定对象是否存在。 3. 缺少权限:当前用户可能没有足够的权限来执行授权操作。在Oracle数据库中,只有具有足够权限的用户才能执行授权操作。如果收到ORA-01720错误,可能需要联系数据库管理员(DBA)或具有足够权限的用户来执行授权操作。 解决ORA-01720错误的方法包括: 1. 仔细检查授权语句的语法,确保没有错误的关键字或拼写错误。 2. 确保授权对象存在并且正确命名。 3. 如果是权限足导致的错误,联系数据库管理员或具有足够权限的用户来执行授权操作。 总之,ORA-01720错误通常是由于授权语句中存在语法错误、错误的授权对象或者缺少权限引起的。使用正确的语法、正确的对象名称和具有足够权限的用户来执行授权操作可以解决这个错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值