在Oracle資料庫中,使用者的許可權分為兩種(在這裡我們不討論dba或dbopr的許可權,只考慮普通使用者的許可權),分別是System Privilege系統許可權 和User Table Privilege使用者資料表許可權.
1.首先,建立使用者,以下幾條命令可以建立一個使用者,前提是必須以DBA的身份登入(如果你不是DBA,不要看下去了):
create user DB_USER identified by DB_USER_PW '建立使用者DB_USER,密碼為DB_USER_PW
grant create session to DB_USER '給使用者建立會話的許可權
grant resource to DB_USER
2.當使用者建立後,會自動在Oracle資料庫系統中產生屬於該使用者的Scheme (可以理解為所有屬於該使用者的表,視圖....等對象的集合).
該使用者可以將對這些對象的存取權限賦予其它的系統使用者.
3.該使用者用sqlplus登入後,以下命令可以看到該使用者的許可權(該部分取自於CNOUG網站):
本使用者讀取其他使用者物件的許可權:
select * from user_tab_privs;
本使用者所擁有的系統許可權:
select * from user_sys_privs;
4. System Privilege列表
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-228 ADMINISTER DATABASE TRIGGER 0
-227 ADMINISTER RESOURCE MANAGER 1
-161 ALTER PROFILE 0
-189 CREATE ANY LIBRARY 0
-201 CREATE ANY OPERATOR 0
-224 CREATE ANY OUTLINE 0 -141 CREATE ANY PROCEDURE 0
-120 CREATE PUBLIC DATABASE LINK 0
-90 CREATE VIEW 0
-50 DELETE ANY TABLE 0
-220 DEQUEUE ANY QUEUE 1
-63 DROP ANY CLUSTER 0
-223 DROP ANY CONTEXT 0
-217 DROP ANY DIMENSION 0
-178 DROP ANY DIRECTORY 0
-73 DROP ANY INDEX 0
-208 DROP ANY INDEXTYPE 0
-191 DROP ANY LIBRARY 0
-203 DROP ANY OPERATOR 0
-226 DROP ANY OUTLINE 0
-209 EXTENDS ANY TYPE 0 -186 EXTENDS TYPE 0
-139 FORCE ANY TRANSACTION 0
-138 FORCE TRANSACTION 0
-199 WRITEUP 0
-196 WRITEUP DBHIGH
......
......
-- 確定角色的許可權
select * from role_tab_privs ; 資料字典視圖包含了授予角色的對象許可權
select * from role_role_privs ; 包含了授予另一角色的角色
select * from role_sys_privs ; 包含了授予角色的系統許可權
-- 確定使用者帳戶所授與權限
select * from DBA_tab_privs ; 直接授予使用者帳戶的對象許可權
select * from DBA_role_privs ; 授予使用者帳戶的角色
select * from DBA_sys_privs ; 授予使用者帳戶的系統許可權
查看目前使用者許可權:
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER