当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
OS_ROLES参数
发布时间:2010/11/27 23:26:39 来源:城市学习网 编辑:ziteng
  属性             描述
  参数类型         Boolean
  默认值           false
  是否可动态修改   No
  取值范围         true | false
  OS_ROLES定义了是由Oracle还是操作系统来验证和管理每个用户的角色。
  设置值的说明:
  - TRUE
  全部由操作系统管理数据库所有用户的角色分配。当用户尝试创建一个会话,使用操作系统的角色验证,初始化用户名称的安全域。用户可以随后启用由操作系统指定的,与参数MAX_ENABLED_ROLES一样多的角色。
  Oralce以前分配的角色,操作系统都会忽略。
  - FALSE
  Oracle自身验证和管理角色。
  角色的创建已经给角色授予相应的权限必须在数据库中完成。只有给用户授权角色的操作是由操作系统完成。用户具有的角色是由操作系统的profile文件(或用户所在的组)决定的,只和操作系统用户有关而与oracle的登陆用户无关,以sysdba身份等录除外。
  以linux为例,数据库是9.2.0.8。
  修改/etc/group,增加一条:
  ora_ora9i_dba_da::601:oracle
  组的名称的每一部分都是有其固定含义的,他们之间用下划线’_’分隔。名称必须以"ora"开头,接下来的"ora9i"表明数据库的SID是ora9i,由于操作系统可能对应多个数据库,因此必须标明这个角色在那个数据库中生效(这里小心,对于unix系统,这个标识可是大小写敏感的),然后跟着"dba"的是角色名,是在数据库中建立的,并准备通过操作系统给用户授权的角色。最后的"d"和"a"是可选参数,"d"表示这个角色是用户的默认角色,用户一旦登陆就具有的角色,如果没有设置"d",则用户登陆后必须使用set role才能使用改角色。"a"表示admin option,即用户具有管理该角色的权限,可以把该角色授权给其他角色(只能授权给角色,不能是用户,在OS_ROLES=TRUE的情况下,在oracle中给用户授予角色是无效的)。
  创建一个用户osess,只有create session的权限。
  SQL> create user osess identified by osess;
  User created.
  SQL> grant create session to osess;
  Grant succeeded.
  在oracle用户下使用sqlplus连接数据库,发现osess自动获得了dba角色的权限。查看session_roles具有dba角色,但在dba_role_privs中并没有。
  [oracle@ora9i ~]$ sqlplus osess/osess
  SQL> select * from session_roles;
  ROLE
  ------------------------------
  DBA
  SELECT_CATALOG_ROLE
  HS_ADMIN_ROLE
  EXECUTE_CATALOG_ROLE
  DELETE_CATALOG_ROLE
  EXP_FULL_DATABASE
  IMP_FULL_DATABASE
  GATHER_SYSTEM_STATISTICS
  WM_ADMIN_ROLE
  SQL> select * from dba_role_privs where grantee=’OSESS’;
  no rows selected
  在ldy用户下使用sqlplus连接,只有create session的权限,其他什么角色都没有。
  [ldy@ora9i ~]$ sqlplus osess/osess
  SQL> select * from session_roles;
  no rows selected
  SQL> select * from dba_role_privs where grantee=’OSESS’;
  select * from dba_role_privs where grantee=’OSESS’
  *
  ERROR at line 1:
  ORA-00942: table or view does not exist
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved