如何确定选择授权是直接获得还是通过角色获得

3

在Oracle中的一个陷阱是,有时你可以在SQLplus中运行查询并从表中选择数据,但在运行存储过程时却不能。为了从存储过程中运行查询,你需要直接授予对象权限,而不是通过角色授权。

如果我在all_tables视图中看到一个表,我怎样知道我能否查看这个表是因为有直接授权还是因为有角色授权?

2个回答

7

看一下 ALL_TAB_PRIVS:

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

这显示所有受让人,无论是角色还是用户。

这似乎是我正在寻找的内容。它仅显示我拥有选择权限的那些表格。 谢谢。 - Rene

1

查看一个过程所看到的确切内容的一种方法是发出以下命令:

SET ROLE none

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接