【问题标题】:create role statement causes ora-01031 insufficient privilegescreate role 语句导致 ora-01031 权限不足
【发布时间】:2014-01-09 02:29:38
【问题描述】:

我正在使用 TOAD for Oracle 并连接到 11g 数据库。我有一个具有角色关联指定的创建角色系统特权的用户,但是当我运行该语句时:

create role myNewRole;

我得到错误:

ora-01031 权限不足

我不明白这里的问题是什么,因为我之前已经做过很多次了,从来没有遇到过问题。我通过谷歌或堆栈找不到与创建角色声明相关的任何类似问题。

有人知道这里发生了什么吗?

【问题讨论】:

  • 当这个用户从SESSION_PRIVS中选择时你看到create role了吗?

标签: sql oracle11g roles


【解决方案1】:

通过查看与用户的角色关联来解决问题。事实证明,它没有设置为默认角色,因此解决方案是以下两种之一:

  • 使用alter user <username> default role <role_list>; 将角色设置为默认角色
  • 使用SET ROLE <role>;在会话中将角色设置为活动状态

当然,如果您的角色具有安全性,那么您将不得不在<role> 之后使用identified by <password>

Doco for SET ROLEDoco for Default Role

我对这个问题的理解是,Oracle 可能存在您希望角色与用户关联但默认情况下不希望它处于活动状态的情况,因此您必须在会话期间显式启用它才能使用它,这是对用户的额外保护你的数据库。当一个角色被设置为默认角色时,它会在您每次登录时处于活动状态,因为该角色的权限预计会更频繁地使用和/或不会对数据库产生大的影响(负面)。

感谢您的评论@ChrisFarmer,因为一旦我意识到 sys 特权不在我的会话中,它就会引导我找到我正在寻找的答案。

【讨论】:

    【解决方案2】:

    它解释了为什么我授予 DBA 角色的用户在尝试更改另一个用户的密码时收到 ORA-01031。在会话中,他需要设置角色;

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 2020-12-10
      • 2019-05-29
      • 1970-01-01
      相关资源
      最近更新 更多