【问题标题】:ORA-01720: Can't grant privileges on a viewORA-01720: 无法授予视图权限
【发布时间】:2017-03-07 12:08:45
【问题描述】:

我有一个用户拥有一些表,我将其中三个表的权限授予另一个用户。现在我需要创建一个视图并将选择权限授予另一个用户,如下所示:

用户 A

GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_A TO USER_B WITH GRANT OPTION;

GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_B TO USER_B WITH GRANT OPTION;

GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE_C TO USER_B WITH GRANT OPTION;

用户 B

CREATE OR REPLACE VIEW V_XYZ AS SELECT * FROM TABLE_A, TABLE_B, TABLE_C;

GRANT ALL ON V_XYZ to USER_C;

这给出了以下错误:

ORA-01720: "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.

【问题讨论】:

  • 错误信息看起来很清楚。你有什么问题?
  • 我需要帮助。我将授予选项从 USER_A 授予 USER_B,现在在 USER_B 中,我无法将权限授予其他用户。也许这很简单,我没有看到。
  • 按照错误消息中的说明进行操作。它从字面上告诉你该怎么做。
  • 在我的情况下,问题是由于视图的 select 语句中的基础表没有分区。

标签: sql oracle view oracle11g grant


【解决方案1】:

尝试给予:

GRANT select ON V_XYZ to USER_C;

【讨论】:

    【解决方案2】:

    您要求将所有权限授予 USER_C,但只有 4 个权限授予您基础表。尝试将 ALL PRIVILEGES 从 A 授予 B,或者在 SELECT、UPDATE、INSERT、DELETE 上限制从 B 到 C 的授予。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2017-10-30
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 2020-02-08
      相关资源
      最近更新 更多