權限主要可以分成三類:系統權限、角色、對象權限,角色是一類系統權限的分組,
Oracle 的角色存放在表 dba_roles 中,某角色包含的系統權限存放在 dba_sys_privs 中,
包含的對象權限存放在 dba_tab_privs 中。
2.1、系統權限:
系統權限其實就是使用者在目前使用者架構下所具有的權限,在11g中系統權限有200個,
比如create table,UNLIMITED TABLESPACE等。
1、查詢目前使用者擁有的系統權限:
select * from session_privs;
2、查詢某一個使用者的系統權限:
select * from dba_role_privs where GRANTEE='<使用者名>';
select * from dba_sys_privs where GRANTEE='<使用者名>';
2.2、角色:
角色其實就是一類系統權限的分組,是以給使用者配置設定角色其實也是在給使用者配置設定系統權限;
1、在oracle中有三個比較常用的角色:
1)
CONNECT(基本的連接配接), RESOURCE(程式開發),DBA(資料庫管理);
2)
DBA:擁有全部特權,是系統最高權限,隻有DBA才可以建立資料庫結構;
RESOURCE:擁有Resource權限的使用者隻可以建立實體,不可以建立資料庫結構;
CONNECT:擁有Connect權限的使用者隻可以登入Oracle,不可以建立實體,不可以建立資料庫結構;
3)
對于普通使用者:授予connect, resource權限;
對于DBA管理使用者:授予connect,resource, dba權限;
4)檢視RESOURCE和CONNECT角色中所包含的系統權限:
SELECT * FROM dba_sys_privs WHERE grantee IN ('RESOURCE', 'CONNECT') ORDER BY 1;

2、查詢目前使用者擁有的角色:
SELECT * FROM USER_ROLE_PRIVS;
3、查詢目前使用者擁有的角色和對應的系統權限:
select * from role_sys_privs;
2.3、對象權限(表級權限):
對象權限指的是其它擁有使用者的對象的權限,即對表的操作權限,其它使用者對象的權限包括:
SELECT,DELETE,UPDATE,ALTER,INSERT,INDEX,REFERENCES,FLASHBACK,DEBUG,QUERY REWRITE,ON COMMIT REFRESH;
1、查詢目前使用者擁有的對象權限:
SELECT * FROM USER_TAB_PRIVS;
2.4、grant授權:
1、授予使用者系統權限:
GRANT CREATE VIEW TO <使用者名>;
#給使用者添加"RESOURCE"角色權限中沒有的建立視圖的權限;
補充:
#CREATE DATABASE LINK:建立表空間連結
#CREATE SYNONYM:建立同義詞
2、授予使用者角色權限:
GRANT CONNECT,RESOURCE TO <使用者名>;
3、授予使用者對象權限:
GRANT SELECT,INSERT,UPDATE,DELETE ON <表名> TO <使用者名>;
GRANT ALL PRIVILEGES ON <表名> to <使用者名>;
grant connect,select any table to <使用者名>;
#所有表賦予查詢權限
2.5、REVOKE 回收權限:
1、回收系統權限:
REVOKE CREATE VIEW FROM <使用者名>;
2、回收角色權限:
REVOKE CONNECT,RESOURCE FROM <使用者名>;
3、回收對象權限:
REVOKE INSERT,UPDATE,DELETE ON <表名> FROM <使用者名>;
2.5、角色管理:
1、建立一個角色:
create role <角色名>;
2、将系統權限授權給角色:
grant create any table,create procedure to <角色名>;
3、檢視角色所包含的權限
SELECT * FROM dba_sys_privs WHERE grantee IN ('<角色名>') ORDER BY 1;
4、将角色授權給使用者:
grant <角色名> to <使用者名>;
alter user <使用者名> default role <角色名>;
#将指定角色設定為指定使用者的預設角色;
5、生效角色:
set role <角色名>;
#使特定的角色生效;
set role all;
#将所有的角色生效;
set role none;
#将所有的角色失效;
6、删除角色:
drop role <角色名>;
#角色删除後,原來擁用該角色的使用者就不再擁有該角色了,相應的權限也就沒有了;
2.6、使用者操作:
1、建立使用者:
create user <使用者名> identified by <密碼>;
alter user <使用者名> identified by <密碼>;
#修改密碼;
2、删除使用者:
drop user <使用者名> cascade;
3、設定使用者密碼登入後失效,并要求修改密碼:
alter user <使用者名> password expire;
4、賬戶鎖定和解鎖:
alter user 使用者名 account lock;
#賬戶鎖定;
alter user 使用者名 account unlock;
#解鎖賬号;
5、啟用scott使用者:
scott是一個系統已經建立好的普通使用者,使用者名scott,密碼預設tiger,
預設狀态是被鎖定,DBA使用者執行"alter user scott account unlock"可以
解鎖登陸;