通过直接授权和角色授予的SELECT权限

时间:2018-06-07 13:10:25

标签: oracle plsql privileges

我拥有通过Oracle角色授予的SELECT权限,我可以在特定表中查看数据。 (我的acc具有(或属于)已为特定表授予SELECT prvilege的角色。)

但是为了使VIEW或PROCEDURE能够从同一个表中选择数据,我必须直接向我的acc授予SELECT权限!

为什么?为什么通过角色授予SELECT权限还不够?

1 个答案:

答案 0 :(得分:0)

在PL / SQL过程中关闭角色。您可以使用

模拟您在没有角色的情况下看到的内容
SET ROLE NONE;

您可以使用

查看当前的角色
SELECT * FROM session_roles;

重新开启:

SET ROLE ALL;

我不知道Oracle是否曾说明角色关闭的原因。我一直认为它可以提高性能。在每次执行之前,检查您是否可以访问查询中的所有表。如果您允许可以授予其他角色的角色,则需要相当复杂的树/图查询来确定访问是否正常。仅使用直接权限,这具有线性复杂性。