Oracle中的一个缺陷是,如果您在SQLplus中运行查询,但有时您可以从表中进行选择,但在从存储过程运行查询时则无法选择。要从存储过程运行查询,您需要直接授予对象,而不是通过角色获得的授权。
如果我在all_tables视图中看到一个表,我怎么知道我是否因为直接授权或角色授权而看到此表?
答案 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
它会禁用当前会话的所有角色。