1. 权限(Privilege)是执行特定类型SQL命令或访问其它方案对象的权利。权限包括系统权限和对象权限两种类型。
2. 系统权限(System Privilege)是执行特定类型SQL命令的权利。它用于控制用户可以执行的一个或一组数据库操作,例如,当用户具有CREATE TABLE权限时,可以在其方案中建表;当用户具有CREATE ANY TABLE时,可以在任何方案中建表。Oracle提供了100多种系统权限。
3. 常用的系统权限:
系统权限 | 作用 |
CREATE SESSION | 连接到数据库 |
CREATE TABLE | 建表 |
CREATE VIEW | 建立视图 |
CREATE PUBLIC SYNONYM | 建立同义词 |
CREATE SEQUENCE | 建立序列 |
CREATE PROCEDURE | 建立存储过程 |
CREATE TRIGGER | 建立触发器 |
CREATE CLUSTER | 建立簇 |
CREATE TYPE | 建立对象类型 |
CREATE DATABASE LINK | 建立数据库链 |
另外Oracle还提供了一类ANY系统权限,当用户具有该类系统权限时,可以在任何方案中执行相应操作。例如,如果用户具有SELECT ANY TABLE系统权限,那么用户可以查询任何方案的表。
4. 对象权限是指访问其它方案对象的权利,它用户控制用户对其他方案的对象的访问。如果用户SMITH要访问SCOTT.EMP表(SCOTT:方案,EMP:表),则必须在SCOTT.EMP表上具有对象权限。
5. 管理系统权限 系统权限时执行特定类型SQL语句的权限。需要注意的是Oracle数据库没有CREATE INDEX、修改数据库对象、删除数据库对象等系统权限。言外之意就是如果用户可以创建数据库对象,用户就可以修改数据库对象。
6. 授予系统权限 一般而言授予系统权限是由DBA完成的。如果其他用户要授予系统权限,则要求该用户必须具有GRANT ANY PRIVILEGE系统权限。
7. 授予用户blake系统权限
以DBA用户身份登录,为BLAKE用户授予CREATE SESSION,CREATE TABLE和CREATE VIEW 权限,并且前两个权限带有WITH ADMIN OPTION选项(可以将该权限授予其他角色或者用户)。
GRANT CREATE SESSION,CREATE TABLE TO blake
WITH ADMIN OPTION
GRANT CREATE VIEW TO blake
8. 管理对象权限
对象权限是指访问其他用户方案对象的权限。在Oracle数据库中,用户可以直接访问其方案对象,但如果要访问其他用户的方案对象时,必须具有相应的对象权限。对象权限通常包括:ALTER DELETE INDEX INSERT REFERENCES SELECT UPDATE等8种。默认情况下,直接授予用户权限时,将访问所有列的权限都授予用户。
默认情况下,如果授予另外一个用户对象权限,这该用户默认拥有该对象所有列的权限。
9. 授予ALTER权限
如果用户在其他方案的表和序列上执行ALTER TABLE或ALTER SEQUENCE命令,必须具有ALTER对象权限。例如,如果用户BLAKE需要修改表SCOTT.EMP的结构,则必须为其授予ALTER对象权限。示例如下:
GRANT ALTER ON emp TO blake;
10. 授予EXECUTE权限
如果用户要执行其他方案的包、过程和函数,必须在包、过程和函数上具有EXECUTE对象权限。
11. 授予列权限
列权限用于控制用户对其他方案对象列的访问,只能在INSERT、UPDATE和REFERENCES上授予列权限。
GRANT UPDATE(sal)ON emp TO blake;
12. 使用WITH GRANT OPTION选项。
WITH GRANT OPTION选项用于转授对象权限,该选项只能用于用户,不能授予角色。