【问题标题】:ORA-01031: insufficient privileges when selecting viewORA-01031: 选择视图时权限不足
【发布时间】:2010-09-13 12:41:27
【问题描述】:

当我尝试执行包含来自不同模式的表的视图时,会引发 ORA-001031 权限不足。这些表对创建视图的架构具有执行权限。如果我执行视图的 SQL 语句,它就可以工作。我错过了什么?

【问题讨论】:

    标签: oracle view


    【解决方案1】:

    我终于让它工作了。史蒂夫的回答是正确的,但并非适用于所有情况。当从第三个模式执行该视图时,它会失败。为此,您必须添加授权选项:

    GRANT SELECT ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;
    

    这样,[READ_USERNAME] 也可以将视图的选择权限授予另一个架构

    【讨论】:

    • 如果 dba 授予权限怎么办。尽管 dba 授予用户对创建的视图和基础表的权限,但我没有完成这项工作。
    【解决方案2】:

    作为表所有者,您需要将基础表的 SELECT 访问权限授予运行 SELECT 语句的用户。

    grant SELECT on TABLE_NAME to READ_USERNAME;
    

    【讨论】:

      【解决方案3】:

      问。什么时候需要“with grant option”?

      A.当您从第三个模式执行视图时。

      示例: schema DSDSW 有一个名为 view_name 的视图

      a) that view selects from a table in another schema  (FDR.balance)
      b) a third shema  X_WORK  tries to select  from that view
      

      典型资助: 将 dsdw.view_name 上的选择授予 dsdw_select_role; 将 dsdw_select_role 授予 fdr;

      但是:fdr 得到 从 dsdw.view_name 中选择 count(*); 第 1 行的错误: ORA-01031: 权限不足

      发放补助金:

      grant select on fdr.balance to dsdw with grant option;
      

      现在fdr: 从 dsdw.view_name 中选择 count(*); 5行

      【讨论】:

        【解决方案4】:

        让我回顾一下。

        当您构建包含不同所有者对象的视图时,其他所有者必须向视图所有者授予“带有授予选项”的权限。因此,视图所有者可以授予其他用户或模式......

        示例: User_a 是名为 mine_a 的表的所有者 User_b 是名为 yours_b 的表的所有者

        假设 user_b 想要创建一个包含 mine_a 和 yours_b 的视图

        为了使视图正常工作,user_a 必须将“将 mine_a 上的选择授予 user_b 并授予选项”

        然后 user_b 可以将对该视图的选择授予所有人。

        【讨论】:

          【解决方案5】:

          如果通过存储过程访问视图,则执行授权不足以访问该视图。您必须明确授予 select。

          【讨论】:

            【解决方案6】:

            如果通过存储过程访问视图,则执行授权不足以访问视图。您必须明确授予 select。

            只需输入这个

            全部公开;

            【讨论】:

              【解决方案7】:

              要使用视图,用户必须拥有适当的权限,但仅限于视图本身,而不是其底层对象。但是,如果删除了视图底层对象的访问权限,则用户不再具有访问权限。出现此问题的原因是用户查询视图时使用的安全域是视图定义者的安全域。如果从视图的定义者中撤销对底层对象的权限,则视图将变为无效,并且任何人都无法使用该视图。因此,即使已授予用户对视图的访问权限,如果定义者的权限已从视图的基础对象中撤消,则用户可能无法使用该视图。

              Oracle 文档 http://docs.oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#DBSEG98017

              【讨论】:

                【解决方案8】:

                您也可以使用架构名称创建视图 例如 create or replace view schema_name.view_name as select..

                【讨论】:

                • 嗨。请在您的答案中添加详细信息。
                猜你喜欢
                • 2019-01-28
                • 2013-04-14
                • 2021-12-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-02-27
                • 2010-09-13
                相关资源
                最近更新 更多