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

时间:2010-01-19 14:00:57

标签: oracle

Oracle中的一个缺陷是,如果您在SQLplus中运行查询,但有时您可以从表中进行选择,但在从存储过程运行查询时则无法选择。要从存储过程运行查询,您需要直接授予对象,而不是通过角色获得的授权。

如果我在all_tables视图中看到一个表,我怎么知道我是否因为直接授权或角色授权而看到此表?

2 个答案:

答案 0 :(得分:6)

查看ALL_TAB_PRIVS:

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

这显示了所有受助者,无论是角色还是用户。

答案 1 :(得分:1)

查看完全过程将会看到的一种方法是发出命令:

SET ROLE none

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