创建角色通过命令create role 命令创建角色。
1.安全性需求 为了创建角色,必须有create role的系统权限。
2.create role命令的例子 create role my
_role;也可以分配一个密码给该角色。下列创建一个称作一个my_role的角色,并且为了该角色分配my_pwd密码:
create role my_roleidentified by my_pwd;
一旦创建了角色,就可以授予其所需要的权限。下列将create any table 的权限授予 my_role,并且将表Scott.emp的select权限授予 my_role:
Grant create any table to my_role;
Grant select on Scott.emp to my_role;
改变角色
alter role 命令用来删除或者改变与角色相关联的密码。
安全性需求
为了使用alter role 命令来改变角色,必须已用with admin option子句授予该角色,或者必须有alter any role 的系统权限,如果要用alter role 命令的identified globally 参数将一个角色变为一个应用角色,则必须revoke对该角色的所有授权,除非任何对该用户的授权实际上改变了该角色。
alter role命令
下面是从my_role角色中删除密码的例子:
alter role my_role not identified;
下面是将my_role角色的密码改为my_new_pwd的例子:
alter role my_role identified by my_new_pwd;
删除角色
通过删除角色drop role命令删除角色。
安全性的需求
drop role命令的例子
下面删除MY_ROLE的角色
Drop role my_role;
错误以及方法
ora-01924 没有授予角色或者根本不存在该角色 试图使用set role命令来激活并没有权限操作的角色,或者该角色不存在,检查角色是否存在以及是否已经将该角色分配给该用户
ora-01925 超过了启动角色的最大数量 已经超过了参数 max_enabled_roles所定义的角色的最大数量
ora-01933 不能用来自角色的权限创建的存储对象 试图创建存储对象的用户没有直接授予对存储对象需要访问的数据库对象进行访问权限。请确保已经将直接授权分配给正在创建存储对象的用户。
ora-01934 检测到了环形的角色授权 试图创建一个环形的角色引用。不能将角色授予自身,或者授予已授权的角色。
ora-01935 遗漏了用户或者角色名 需要在命令中包含用户或者角色。检查用户授权自身,或者授予已授权的角色。
ora-01935 遗漏了用户或者角色名 需要在命令中包含用户或者角色,检查用户或者角色名是否实际存在。
ora-01936 不能在创建用户或者角色时指定拥有者 创建角色不能包含所有者的名字。删除对所有者的引用,然后重试该语句
ora-28031 超过了启动角色的最大数量 已经超过了参数max_enabled_roles定义的角色的最大数量