一、授予和撤销系统权限:
1. DBA 将CREATE TABLE 系统权限连同ADMIN OPTION 授予U01。
SQL> create user u01 identified by oracle default tablespace users quota 10m on users;
SQL> grant connect to u01;
SQL> grant create table to u01 with admin option;
2. U01 创建一个表。
SQL> create table a(id number);
3. U01 将CREATE TABLE 系统权限授予U02。
SYS:
SQL> create user u02 identified by oracle default tablespace users quota 10m on users;
SQL> grant connect to u02;
U01:
SQL> grant create table to u02;
4. U02 创建一个表。
SQL> create table b(id number);
5. DBA 撤销U01 的CREATE TABLE 系统权限。
SQL> revoke create table from u01;
结果
U01 的表仍然存在,但是他不能创建新表。
SQL> create table c(id number);
create table c(id number)
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> desc a;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
U02 的表仍然存在,而且她仍然具有CREATE TABLE 系统权限。
SQL> create table c(id number);
二、授予和撤销对象权限:
1. U01 被授予关于EMPLOYEES 的SELECT 对象权限连同GRANT OPTION。
SQL> grant select on scott.emp to u01 with grant option;
2. U01 将关于EMPLOYEES 的SELECT 权限授予U02。
SQL> grant select on scott.emp to u02;
SQL> desc scott.emp;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
3. 随后,撤销U01 的SELECT 权限。这个撤销操作会同时对U02 产生级联影响。
SQL> conn / as sysdba
SQL> revoke select on scott.emp from u01;
SQL> desc scott.emp;
ERROR:
ORA-04043: object scott.emp does not exist