我在Oracle 11.2.0.4.0环境中遇到了一个让我难以理解的问题。我有一个WORKING,COMPILED视图,我可以从中选择数据,但如果没有出现“ORA-01720”错误,我无法改变它。
关于我的设置: 我有2个模式,“A”和“B”很简单。模式“A”拥有“TABLE1”,“TABLE2”,“TABLE3”,模式“B”当前具有从所有3个表中选择数据所需的授权。我已经验证我可以通过查询以及存在的视图来选择数据。
当我的架构“B”授权访问这三个表中的架构“A”数据时,是否有人知道可能阻止我改变工作视图的原因?我看到谷歌和各个网站提到的几个建议,我们已经尝试过授予选择“有授权选项”,但是当我从所有者直接选择数据而不是从受助者那里选择数据时,我看不出它会如何应用。错误消息如下:
SQL Error: ORA-01720: grant option does not exist for 'A.TABLE1'
01720. 00000 - "grant option does not exist for '%s.%s'"
*Cause: A grant was being performed on a view or a view was being replaced
and the grant option was not present for an underlying object.
*Action: Obtain the grant option on all underlying objects of the view or
revoke existing grants on the view.
答案 0 :(得分:6)
这是Oracle 11中引入的限制。即使使用create or replace force view
,也无法向现有视图添加您不拥有但已被授予权限的表。您必须先删除视图并重新创建它。