我在 Oracle 11.2.0.4.0 环境中遇到了一个让我困惑的问题。我有一个正在运行的已编译视图,我可以从中选择数据,但我无法在不出现“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.
这是 Oracle 11 中引入的限制。您无法将不属于您但已被授予权限的表添加到现有视图,即使使用create or replace force view
。您必须先删除视图并重新创建它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)