权限是执行特定类型的SQL语句或者访问其他用户拥有的数据库对象的权利。在Oracle数据库中,必须明确为用户授权(包括连接到数据库或选择、修改和更新其他用户拥有的表中的数据),使他能执行某种活动。
Oracle有两种基本的权限,分别是:系统权限(system privileg)和对史权限(object privilege)。可使用GRANT语句来给用户授予系统权限及对象权限。
1.系统权限
给用户授予系统权限,使用户可以在数据库中进行特定的活动,或者在某个特定类型的模式对象上完成某项操作.第-类系统权限的-个典型例子是允许连接数据库的名为CONNECT的权限。其他 同类型的系统权限有CREATE TABLESPACE、CREATE USER. DROP USER和ALTER USER权限等。第二类系统权限授予用户执行影响模式中对象的操作的权利。这种类型的系统权限的例子有ANALYZE ANY TABLE. GRANT ANY PRIVILEGE、INSERT ANY TABLE, DELETE ANY TABLE等等。
•授予系统权限
用GRANT语句给用户授予系统权限。在将系统权限授予用户后,该用户可以立即使用此权限。因此,权限是以动态方式工作的。
要将CREATE SESSION系统权限授予用户hr,允许他登录到Oracle数据库,可发布以下语句:
GRANT CREATE SESSION TO hr;
CREATE SESSION权限允许用户登录到Oracle数据库。
提示 可在GRANT语句中给出ALL PRIVILEGES,将所有系统权限授予用户(除SELECT ANY DICTIONARY权限外),如下所示:
GRANT ALL PRIVILEGES TO salapati;
ALL PRIVILEGES本身不是系统权限,它只是一次性授予用户所有系统权限的约定.类似地,可以使用REVOKE ALL PRIVILEGES 语句一次性撤销所有系统权限。
DBA也可以将某个系统权限授予PUBLIC,在这种情况下,数据库中所有用户都可以执行该权限授权的活动。如下例所示:
GRANT CREATE SESSION TO public;
将CREATE SESSION权限授予PUBLIC,所有用户都可以登录数据库而不用个别授予 CREATE SESSION权限。可以看到,将权限授予PUBLIC是非常危险的,因为所有用户都将拥有该权限。
如果下列条件之一成立,你就可以将系统权限授予用户:
(1) 授予你该系统权限时带有 WITH ADMIN OPTION 子句;
(2) 你被授予了 GRANT ANY PRIVILEGE 系统权限。
下面是授予系统权限时使用WITH ADMIN OPTION子句的例子:
GRANT CREATE SESSION TO salapati WITH ADMIN OPTION;
GRANT ANY OBJECT权限是一个特殊的系统权限,它允许被授权者授予(和撤销)模式中对象上的对象权限。有趣的是,当此权限的被授权者授予其他用户任何对象上的任何权限时,如果查询DBA_TAB_PRIVS表,会看到就好像是模式的拥有者授予的权限一样。不过,如果审计GRANT语句的使用,会看切发而这种语句的真正用户。所有具有SYSDBA权限的用户都自动拥有GRANT ANY OBJECT权限。
•撒销系统权限
使用REVOKE语句撤销系统权限。权限的撤销立即生效。如下例所示:
REVOKE DELETE ANY TABLE FROM pasowner;
使用REVOKE语句只能撤销之前用GRANT语句授予用户的那些权限。
只有具有SYSDBA权限或己经明确授予对象权限的那些用户可访问SYS模式中的对象。也可以授予用户以下3个角色让他们访问SYS拥有的对象。(角色是命名的权限组)
(1) SELECT_CATALOG_ROLE:此角色授予数据字典视图上的SELECT权限。
(2) EXECUTE_CATALOG_ROLE:此角色授予数据字典视图上的EXECUTE权限。
(3) DELETE_CATALOG_ROLE:此角色允许用户从审计表(SYS.AUD$)中删除记录。
也可以使用 SELECT ANY DICTIONARY 系统权限授予用户(通常是开发人员)从SYS模式的任何对象中选择数据的权限。
• SYSDBA 和 SYSOPER 系统权限
有两个功能强大的系统管理权限,即SYSDBA和SYSOPER。由于这两个权限很强大,必须对它们的使用施加一些限制:在授予这两个权限时,不能使用WITH ADMIN OPTION;只有作为SYSDBA连接的用户才能把这两个权限授予其他用户或从其他用户撤销:不能把这两个系统权限授予角色。
SYSDBA系统权限包括了RESTRICTED SESSION权限,并且具有所有带ADMIN OPTION的系统权限,包括SYSOPER系统权限。SYSDBA权限允许做下列工作:
(1) 执行 STARTUP 和 SHUTDOWN 操作;
(2) 使用ALTER DATABASE命令打开、安装、备份数据库或者更改字符集;
(3) 使用CREATE DATABASE命令;
(4) 执行 ARCHIVELOG 和 RECOVERY 操作;
(5) 创建 SPFILE
同样,SYSOPER权限包括RESTRICTED SESSION权限,它允许做下列工作:
(1) 执行 STARTUP 和 SHUTDOWN 操作;
(2) 使用ALTER DATABASE命令打开、安装或备份数据库;
(3) 执行 ARCHIVELOG 和 RECOVERY 操作;
(4) 创建 SPFILE
提示 一些常见的数据库操作需要用户例行查询某些数据字典表.因此,通过授予开发人员SELECT_CATALOG_ROLE,授予开发人员在开发数据库上的一组基本的系统权限是一种很好的办法。这个角色给予开发人员在所有数据字典视图上的选择权限。
除了SYSDBA和SYSOPER权限外,还有SYSASM权限,可用它来管理ASM (Automatic Storage Management)实例。虽然你可以用自己的SYSDBA权限來使用ASM实例,但Oracle建议你区分数据库管理和ASM管理。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




