個人把oracle許可權理解為三類,系統許可權,對象許可權,會話許可權。
分別對應:
dba_sys_privs;
dba_tab_privs:
session_privs;
當然還有role ,
dba_role_privs;
role_sys_privs;
區分很好區分,create,execute等 算是系統許可權,update 等屬於對象許可權。
+++++++++++++++++++++++++++++++++++++++++++
如何查看某個使用者,具有什麼樣的角色。
select * from dba_role_privs where grantee='使用者名稱'
查看每個role擁有的許可權個數:
select role,count(*) from role_sys_privs group by role;
查看哪些使用者有sysdba或sysoper系統許可權(查詢時需要相應許可權)
select * from V$PWFILE_USERS
++++++++++++++++++++++++++++++++++++++++++++ 對於with admin option/ with grant option 2個, 只用記住,如果revoke的時候,grant是連帶回收的。 對於一個普通使用者 需要授予:
grant connect,resource,create view to user1;
10g 開始,connect裡面只有 create session許可權了, resource許可權裡沒有 create view。 還需要重點說明下的是 unlimited tablespace(上面那個實驗,授予了resource許可權給user1, user1 其實自動有了unlimited tablespace許可權)
Unlimited tablespace的特點:
1、系統許可權unlimited tablespace不能被授予role,只能被授予使用者。也就是說,unlimited tablespace系統許可權不能包含在一個角色role中
2、unlimited tablespace沒有被包括在resource role和dba role中,但是unlimited tablespace隨著resource或者dba的授予而授予使用者的。也就是說,如果將role角色授予了某個使用者,那麼這個使用者將會擁有unlimited tablespace系統許可權
3、unlimited tablespace不能伴隨這resource被授予role而授予使用者。也就是說加入resource角色被授予了role_test角色,然後把role_test授予了test使用者,但是此時unlimited tablespace沒有被授予test使用者
PS: 雜補
+++++++++++++++++++++++++++++++++++
編輯上一條SQL命令:
在$ORACLE_HOME/sqlplus/admin 裡的glogin.sql 檔案加入:
define _editor=vi
t1表的的 c1列 想按照第一個字母的先後順序進行排列:
select * from t1 order by nlssort(c1,'NLS_SORT=SCHINESE_PINYIN_M');