为什么甲骨文认为我的用户没有"创建会话"我尝试连接的权限?

时间:2014-04-10 17:48:59

标签: oracle roles

我在Oracle 11g数据库中创建了一个名为 TestUserRole 的角色,该角色最终会拥有更多权限,但目前只有创建会话权限。我已将该角色分配给用户 TestUser 。这是他们唯一的角色。

我按如下方式创建了这个:

CREATE ROLE TestUserRole IDENTIFIED BY somepassword;
GRANT Create Session TO TestUserRole;
CREATE USER TestUser IDENTIFIED BY somepassword;
GRANT TestUserRole TO TestUser;

当我尝试连接数据库时,收到:

  

ORA-01045:用户TESTUSER缺少CREATE SESSION权限;登录被拒绝

我已经验证(我认为)用户和角色已成功设置。如果我查询

select * from dba_role_privs where grantee = 'TESTUSER'

我得到了

| Grantee  | Granted_Role | Admin_Option | Default_Role |
---------------------------------------------------------
| TESTUSER | TESTUSERROLE | NO           | YES          |

然后如果我查询

select * from role_sys_privs where role = 'TESTUSERROLE'

我得到了

| Role         | Privilege      | Admin_Option |
------------------------------------------------
| TESTUSERROLE | CREATE SESSION | NO           |

因此,我似乎已成功创建用户和角色,用户具有该角色,并且该角色具有创建会话权限。然而,当我尝试登录时,Oracle告诉我用户没有创建会话权限。我哪里错了?我是否必须直接将此权限分配给用户而不是通过角色?

2 个答案:

答案 0 :(得分:11)

您是否可以尝试在没有" IDENTIFIED BY密码的情况下创建您的角色"条款?

Here它说了以下内容:

  

BY password子句允许您创建本地角色,并指示用户在启用角色时必须为数据库指定密码。

然后问题是因为当登录角色尚未启用时,用户必须使用" SET ROLE"指定here的语句,但这只能在登录后完成。

答案 1 :(得分:-1)

解决方案

  1. 向用户授予CREATE SESSION
  2. 转到用户>用户
  3. 在列表中选择用户
  4. 右键单击该用户,然后选择“编辑用户”
  5. 在“服务器权限”选项卡下,选中“CREATE SESSION
  6. 比点击保存
  7. enter image description here