http://wanwentao.blog.51cto.com/2406488/457604
角色和角色許可權
角色許可權就是將屬於使用者的許可權授予一個角色。任何許可權都可以授予給一個角色。授予系統許可權給被授予者必須使用WITH_ADMIN_OPTION子句,在會話期間通過SET ROLE語句授予或撤銷角色許可權。然而,角色許可權不能依靠儲存在SQL中的許可權。如果函數、程式、包、觸發器或者方法使用另一個計劃擁有的對象,那麼就必須直接給對象的擁有者授權,這是因為許可權不會在會話之間改變。
授予和撤銷許可權
給使用者或者角色授予許可權使用GRANT 語句,GRANT語句的文法如下:
GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選)
對象許可權被授予 WITH GRANT OPTION,
許可權和資料字典
資料字典是ORACLE儲存有關資料庫結構資訊的地方,資料本身存放在其他地方,資料字典由表和視圖組成。在考試中關於資料字典最容易考的內容是:查看那一類許可權已經被授予。比如DBA_TAB_PRIV包含了使用者授予給另一使用者的對象許可權和在授予時是否帶有WITH GRANT OTPION子串的資訊。注意DBA_TAB_PRIV不僅僅包含了對錶的許可權的關係,他還包括函數、包、隊列等等上的許可權的關係。下表列出了所有的許可權和角色的資料字典視圖:
表: 許可權的資料字典視圖
視圖 |
作用 |
ALL_COL_PRIVS |
表示列上的授權,使用者和PUBLIC是被授予者 |
ALL_COL_PRIVS_MADE |
表示列上的授權,使用者是屬主和被授予者 |
ALL_COL_RECD |
表示列上的授權,使用者和PUBLIC是被授予者 |
ALL_TAB_PRIVS |
表示對象上的授權,使用者是PUBLIC或被授予者或使用者是屬主 |
ALL_TAB_PRIVS_MADE |
表示對象上的許可權,使用者是屬主或授予者 |
ALL_TAB_PRIVS_RECD |
表示對象上的許可權, 使用者是PUBLIC或被授予者 |
DBA_COL_PRIVS |
資料庫列上的所有授權 |
DBA_ROLE_PRIVS |
顯示已授予使用者或其他角色的角色 |
DBA_SYS_PRIVS |
已授予使用者或角色的系統許可權 |
DBA_TAB_PRIVS |
資料庫物件上的所有許可權 |
ROLE_ROLE_PRIVS |
顯示已授予使用者的角色 |
ROLE_SYS_PRIVS |
顯示通過角色授予使用者的系統許可權 |
ROLE_TAB_PRIVS |
顯示通過角色授予使用者的對象許可權 |
SESSION_PRIVS |
顯示使用者現在可利用的所有系統許可權 |
USER_COL_PRIVS |
顯示列上的許可權,使用者是屬主、授予者或被授予者 |
USER_COL_PRIVS_MADE |
顯示列上已授與權限,使用者是屬主或授予者 |
USER_COL_PRIVS_RECD |
顯示列上已授與權限,使用者是屬主或被授予者 |
USER_ROLE_PRIVS |
顯示已授予給使用者的所有角色 |
USER_SYS_PRIVS |
顯示已授予給使用者的所有系統許可權 |
USER_TAB_PRIVS |
顯示已授予給使用者的所有對象許可權 |
USER_TAB_PRIVS_MADE |
顯示已授予給其他使用者的對象許可權,使用者是屬主 |
USER_TAB_PRIVS_RECD |
顯示已授予給其他使用者的對象許可權,使用者是被授予者 |