ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 浅谈Oracle权限

浅谈Oracle权限

原创 Linux操作系统 作者:icer_repls 时间:2011-06-21 21:33:34 0 删除 编辑
    权限,是否能够操作某些对象。在oracle中权限分为系统权限和对象权限。简单说系统权限就是与系统级别、数据库级别的权限,比如连接数据库、创建数据库对象之类的。对象权限,操作数据库对象的权限,在oracle中数据库对象很多,比如表、视图、同义词、索引,函数、过程等等。下面就简单谈谈在使用这些权限的区别。

    一、级别不同
    刚才谈了,两者针对目标不同、级别不同,多说无益。

    二、授予时候两者的语法不同
    如果我们不考虑传递授权,那么两者都是这样的语法。grant  xxxx to user.这里xxx代表某种权限。比如说:
                   1.grant create session to user01(授予系统权限,当然用户必须是sys)
                   2.grant select on scott.emp to user01(授予对象权限,当前用户必须能够拥有将scott.emp表授予其他表的权限)
    如果我们要考虑传递授权怎么办呢?(就是A-->B,然后B-->C)这是就根据权限而定了。比如说:
                  1.grant create session to user01 with admin option;
                  2.grant select on scott.emp to user01 with grant option;
    两者的区别就在红色部分,这没有什么技巧,记住就OK了。

    三、回收权限时的区别
    两者回收权限时的语法都一样。revoke xxxx from user.(xxxx表示要回收的权限),但是两者回收权限时的原则不一样。在回收系统权限时,不是级联回收,而在对象权限时是级联回收。级联回收的含义就是说如果A授予权限给B,B又将这个权限授予C,那么A回收B的那个权限后,C自然那个权限也就不存在了。我想这两者做实验都很容易,在此不贴实验过程。

    四、查看系统有哪些系统权限
    利用system_privilege_map,这里面显示了所有的系统权限。有些人可能会想到数据字典视图dba_sys_privs,我查看了一下,dba_sys_privs表示:整个数据库中所有被授予了系统权限的  被授予者、被授予的系统权限、是否能传递授予下去。

SQL> desc dba_sys_privs;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 GRANTEE                                   NOT NULL VARCHAR2(30)
 PRIVILEGE                                 NOT NULL VARCHAR2(40)
 ADMIN_OPTION                                       VARCHAR2(3)
,而system_privilege_map则表示那些系统中最原始的系统权限,有点类似于源头一样。
    顺便提一句,大多数数据库中都有角色这个概念,它是权限的集合,它是为了更好的管理权限,更方便授予与回收而存在的。

    总结:oracle最大的特点就是复杂,当然在复杂的同时效率性能也相当不错。为了征服oracle而努力。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25701553/viewspace-700440/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-04-16

  • 博文量
    20
  • 访问量
    65194