代码之家  ›  专栏  ›  技术社区  ›  Rene

如何确定是直接还是通过角色获得Select Grant

  •  3
  • Rene  · 技术社区  · 15 年前

    Oracle中的一个缺陷是,如果在sqlplus中运行查询,有时可以从表中进行选择,但在从存储过程运行查询时不能这样做。为了从存储过程运行查询,需要对对象直接授予权限,而不是通过角色获得的权限。

    如果我在“所有表”视图中看到一个表,我怎么知道是因为直接授权还是因为角色授权?

    2 回复  |  直到 15 年前
        1
  •  6
  •   Tony Andrews    15 年前

    看看所有的隐私:

    select grantee from all_tab_privs 
    where table_schema = 'SCOTT' and table_name='EMP'
    and privilege = 'SELECT';
    

    这将显示所有被授予者,无论是角色还是用户。

        2
  •  1
  •   Vincent Malgrat    15 年前

    一种方法可以看到 确切地 程序将看到的是发出命令:

    SET ROLE none
    

    它禁用当前会话的所有角色。