Chinaunix首页 | 论坛 | 博客
  • 博客访问: 861700
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 435
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-27 20:07
个人简介

郭一军,网名guoyJoe,尖峰在线培训创始人、Oracle OCM、ITPUB论坛Oracle认证版版主、2013最佳精华贴、Senior DBA、Oracle OCT、 ACOUG MEMBER、CSDN 认证专家、RHCE、在线技术分享的倡导者和实践者。 http://www.jianfengedu.com http://jianfengedu.taobao.com

文章分类
文章存档

2014年(72)

分类: Oracle

2014-06-19 10:37:10

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11663717


正确答案:A


启用角色
   默认方式下,如果为用户授予了角色,则将启用角色。这意味着,在建立了连接用户账户的会话的时,将激活授予此角色的所有权限和其它角色。通过将角色设置为非默认来修改此行为。下面的查询接着前面给出的示例。显示已为SL_REP授予了什么角色。

1丶创建用户SL_REP

 gyj@OCM> create user SL_REP identified by SL_REP default tablespace users;

User created.

2丶授权

gyj@OCM> grant resource,connect to SL_REP;

Grant succeeded.

gyj@OCM> grant SELECT_CATALOG_ROLE to SL_REP;

Grant succeeded.

3丶查询用户SL_REP所有角色

gyj@OCM> select GRANTED_ROLE ,ADMIN_OPTION,DEFAULT_ROLE from dba_role_privs where grantee=\'SL_REP\';

GRANTED_ROLE                   ADM DEF
------------------------------ --- ---
SELECT_CATALOG_ROLE            NO  YES
RESOURCE                       NO  YES
CONNECT                        NO  YES

  已为SL_REP授予了RESOURCE/CONNECT/SELECT_CATALOG_ROLE角色。他不拥有这些角色的管理权限(因此不能将其传递给其他人),但每个角色都是默认的角色,每当连接时,将拥有这些角色。
   我给这些角色设置为非默认的用如下命令:

gyj@OCM> alter user SL_REP default role none;

User altered.

gyj@OCM> select GRANTED_ROLE ,ADMIN_OPTION,DEFAULT_ROLE from dba_role_privs where grantee=\'SL_REP\';

GRANTED_ROLE                   ADM DEF
------------------------------ --- ---
SELECT_CATALOG_ROLE            NO  NO
RESOURCE                       NO  NO
CONNECT                        NO  NO


gyj@OCM> conn SL_REP/SL_REP
ERROR:
ORA-01045: user SL_REP lacks CREATE SESSION privilege; logon denied


Warning: You are no longer connected to ORACLE.

  果然非默认的是不能用的,需要激……

 

gyj@OCM> alter user SL_REP default role connect,resource;

User altered.

gyj@OCM> select GRANTED_ROLE ,ADMIN_OPTION,DEFAULT_ROLE from dba_role_privs where grantee=\'SL_REP\';

GRANTED_ROLE                   ADM DEF
------------------------------ --- ---
SELECT_CATALOG_ROLE            NO  NO
RESOURCE                       NO  YES
CONNECT                        NO  YES

 以上这个就是如上题所显示的结果:SL_REP用户授予了SELECT_CATALOG_ROLE 非默认的角色。
 我们再来登录看会不会报错:
sys@OCM> conn SL_REP/SL_REP
Connected.
 你看登录是可以了,看上面的视图也可以看出CONNECT是默认的角色了。


SELECT_CATALOG_ROLE是非默认角色,SL_REP是不用直接使用他的
SELECT_CATALOG_ROLE:拥有针对数据字典对象的2000多个对象权限,但没有系统权限或针对用户数据的权限.这对新管理员有用,这些人必须监视数据库并报告数据库情况,但看不到用户数据。


 用以上实验再你证明,非默认的角需要激活才能使用,即要设为默认角色才能使用。

gyj@OCM> conn SL_REP/SL_REP
Connected.
sl_rep@OCM> select * from dba_objects;
select * from dba_objects
              *
ERROR at line 1:
ORA-00942: table or view does not exist


sl_rep@OCM> conn / as sysdba
Connected.
gyj@OCM> alter user SL_REP default role connect,resource,SELECT_CATALOG_ROLE;

User altered.

gyj@OCM> conn SL_REP/SL_REP
Connected.
sl_rep@OCM> select * from dba_objects where rownum=1;

OWNER                          OBJECT_NAME                                                                               SUBOBJECT_NAME                   OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED      LAST_DDL_TIM TIMESTAMP           STATUS  T G S  NAMESPACE EDITION_NAME
------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ------------------------------ ---------- -------------- ------------------- ------------ ------------ ------------------- ------- - - - ---------- ------------------------------
SYS                            ICOL$                                                                                            20               2 TABLE               17-SEP-11    17-SEP-11    2011-09-17:09:46:13 VALID   N N N          1

sl_rep@OCM>  select GRANTED_ROLE ,ADMIN_OPTION,DEFAULT_ROLE from dba_role_privs where grantee=\'SL_REP\';

GRANTED_ROLE                   ADM DEF
------------------------------ --- ---
SELECT_CATALOG_ROLE            NO  YES
RESOURCE                       NO  YES
CONNECT                        NO  YES

答案B不正确,SL_REP不拥有这些角色的管理权限,因此不能将其传递给其他人。
答案C不正确,DBA拥有SELECT_CATALOG_ROLE角色,并授予了SL_REP这个角色,之后这个角色各自管自己的,跟DBA启用或关闭这个角色没关系,不影响SL_REP用户。
答案D不正确,非默认不能用,需要修改成默认才行。

阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~