【发布时间】:2019-06-04 15:13:58
【问题描述】:
当从另一个包 B(在用户 U2 中定义)调用时,我试图在过程(在用户 U1 的包 A 中定义)中插入编辑视图(view1 - 在表 table1 上定义)。权限不足导致此错误。
这是在 Oracle 12c 环境中。 table1 和 view1 由用户 U1 拥有。通过用户 U1 拥有的包 A 中的过程,有一个插入到 view1 中。包 B(在 U2 中)调用此过程来执行插入。 1) 在 U2 中为 U1.view1 创建了一个同义词(在 all_synonyms 中检查) 2) 有一个角色 (R1) 具有对 view1 的插入权限(在 ROLE_TAB_PRIVS 中检查) 3) 角色 R1 已分配给用户 U2(在 DBA_ROLE_PRIVS 中检查) 4) 角色 R1 是默认角色 5) 包 B 是定义者权限,包 A 是调用者权限 5) 一切都检查在同一个版本中
当角色分配给用户 U2 时,我希望插入发生在 view1 中。但它不会发生,它会因“权限不足”而出错。 但是当我明确地向用户 U2 授予在这个 view1 中的插入时,它就可以工作了。这是否意味着如果包 A 具有调用者权限,仅通过角色进行访问是不够的?
【问题讨论】:
标签: oracle plsql user-roles sql-grant