创建视图时出现Oracle错误 - ORA-01720

时间:2016-04-11 14:31:21

标签: sql oracle oracle11g

我在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.

1 个答案:

答案 0 :(得分:6)

这是Oracle 11中引入的限制。即使使用create or replace force view,也无法向现有视图添加您不拥有但已被授予权限的表。您必须先删除视图并重新创建它。