权限,是否能够操作某些对象。在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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25701553/viewspace-700440/