创建角色语句会导致ora-01031权限不足

时间:2014-01-09 02:29:38

标签: sql oracle11g roles

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

create role myNewRole;

我收到错误:

ora-01031权限不足

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

任何人对这里发生的事情都有任何想法吗?

2 个答案:

答案 0 :(得分:1)

通过查看与用户的角色关联来解决问题。事实证明它没有被设置为默认角色所以解决方案是两个中的一个:

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

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

Doco for SET ROLEDoco for Default Role

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

感谢您对@ChrisFarmer的评论,因为一旦我意识到系统特权不在我的会话中,它就引导我朝着我正在寻找的答案的方向发展。

答案 1 :(得分:0)

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