管理权限和角色.

一、权限(privilege)是指执行接特定类型SQL命令或访问其余方案对象的权利,它包括系统权限和对象权限。
1.1系统权限(System Privilege)是指执行特定类型SQL命令的权利。ORACLE提供了100种系统权限。
经常使用的系统权限:
create  session    链接到数据库    
create  table    
create  view
create public   sysnonym    创建同义词
create  sequence  创建序列
create  procedure   创建过程、函数、包
create  trigger  创建触发哭
create  cluster  创建簇
create  type  创建对象类型
create  database link  创建数据库链接
--显示全部系统权限
select  *  from  system_privilege_map 
--显示用户所具备的系统权限
经过查询数据字典视图dba_sys_privs,能够显示用户或角色所具备的系统权限以及转发授系统权限选项。
select *   from  dba_sys_privs  where  grantee='blake'
--显示当前用户所具备的系统权限及转授系统权限选项
select *  from  user_sys_privs
--显示当前会话所具备的系统权限
select *  from  session_privs
1.二、管理系统权限
1.2.一、授予系统权限
GRANT  system_privs  ,system_privs,[......]  to  [user|role|public]  ,[user|role|public ]  with  admin  option;
--显示全部系统权限
select  *  from  system_privilege_map 
--显示用户所具备的系统权限
经过查询数据字典视图dba_sys_privs,能够显示用户或角色所具备的系统权限以及转发授系统权限选项。
select *   from  dba_sys_privs  where  grantee='blake'
--显示当前用户所具备的系统权限及转授系统权限选项
select *  from  user_sys_privs
--显示当前会话所具备的系统权限
select *  from  session_privs
1.2.2收回系统权限
REVOKE  system_privs  ,system_privs [....]  from  {user|role|public}  ,   {user|role|public}  with  admin  option;
--系统权限不会级联收回数据库


二、对象权限(object privilege)是指访问其它方案对象的权利。
alter   delete    insert   update  select index   execute   references
2.1授予对象权限
GRANT  {object_priv[(column_list)],[,object_priv[column_list]].. |all  [privileges]} on  [schema.]object  to  {user|role|public} [,{user|role|public}]     with  grant  option
例如:
grant  update(sal)  on emp    to  blake
--显示对象权限
select grantor  ,owner ,owner || '.' || table_name as object ,privilege from  dba_tab_privs  where  grantee='blake'
--显示列权限
select owner ,table_name || '.' ||  column_name   as  table_column ,privilege  from  dba_col_privs  where  grantee='BLAKE'
--只能在INSERT 、UPDATE 、REFERENCES上授予列权限。
2.2收回对象权限
REVOKE  {object_priv [, object_priv]...|all  [privileges]}  on  [schema.]object   from   {user|role|public} ,{user|role|public} ....[CASCADE  CONSTANTS] ;session


三、管理角色
角色包括预约义角色和自定义角色
经常使用预约义角色:CONNECT    RESOURCE     DBA
CONNECT角色具备通常应用开发人员所须要的大多数权限。当创建了用户以后,多数状况下用户授予CONNECT和RESOURCE角色就足够了。ide

CONNECT角色所具备系统权限:
alter session  create  cluster  create  database  link    create  sequence   create  session
create public  sysnonym   create  table  create  view函数

RESOURCE角色具备应用开发人员所须要的其余权限。
RESOUCE角色具备的系统权限:
CREATE  CULSTER  CREATE INDEXTPE  CREATE  PROCEDURE  CREATE  SEQUENCE  CREATE  TABLE   CREATE  TRIGGER  CREATE  TYPE
DBA角色具备全部系统权限,以及WITH  ADMIN  OPTION选项。对象

3.1创建自定义角色
--当使用CREATE  ROLE命令创建角色时,能够指定角色的验证方式(不验证、数据库验证、OS验证等)
3.1.1创建角色(不验证)
GRANT  ROLE  pbulic_role  NOT  IDENTIFIED ;
3.1.2创建角色(数据库验证)
GRANT  ROLE  private_role  IDENTIFIED   BY  private(密码)  ;blog

3.2给角色受权
GRANT  SESSION  TO  public_role  WITH ADMIN  OPTION
GRANT  SELECT  ON  scott.emp  TO  public_role
GRANT  INSERT ,UPDATE  ,DELETE  ON  scott.emp TO  private_role
--系统的UNLIMITED  TABLESPACE  和对象权限的WITH  GRANT  OPTION 选项不能被授予角色另外不能用GRANT语句同进授予系统权限和对象权限。开发

3.3分配角色给用户
GRANT  public_role  ,private_role  TO  blakeit

3.4激活和禁止角色
3.4.1默认角色
默认角色是用户所具备角色的子集,当为用户指定默认角色后,以该用户身份登陆时会自动激活其默认角色。
ALTER  USER user  DEFAULT  ROLE    {role [,role]....|ALL [EXCEPTON  role  [,role]....] |NONE};
ALTER  USER  blake  DEFAULT  ROLE   public_role ;
3.4.2激活和禁止角色
--在SQL*Plus中激活和禁止角色使用SET ROLE 命令来完成的,而在其余应用环境中可使用过程DBMS_SESSION.SET_ROLE命令来完成的,须要注意,当激活新角色时会自动禁止先前角色。     
(1)激活角色:不验证
SET ROLE public_role

exec  dbms_session.set_role('public_role')
(2)激活角色:数据库验证
SET ROLE  private_role  IDENTIFIED  BY  private(密码)

exec  dbms_session.set_role('private_role  identified  by  private')
(3)  禁止角色
SET  ROLE  NONE;

exec  dbms_session.set_role('NONE');
3.5修改角色
3.5.1修改角色:不验证
ALTER  ROLE  private_role  NOT  IDENTIFIED  ;io

3.6删除角色
DORP  ROLE  private_rolestable

3.7显示角色信息3.7.1显示全部角色select *  from   dba_roles3.7.2显示角色所具备的系统权限经过查询数据字典视图DBA_SYS_PRIVS或ROLE_SYS_PRIVS能够显示角色所具备的系统权限select  privilege  ,admin_optoin  from  role_sys_privs  where  role='PBULIC_ROLE';3.7.3显示角色所具备的对象权限select  owner || '.'  || table_name ,privilege   from  role_tab_privs  where  role='PUBLIC_ROLE'3.7.4显示用户所具备的角色及默认角色select  granted_role ,default_role  from  dba_role_privs where  grantee='blank'3.7.5显示当前会话激活的角色select  *  from  session_roles ;