與對象權限有關的視圖有以下幾個,TAB表示表權限,COL表示列權限:
USER_TAB_PRIVS_MADE
USER_TAB_PRIVS_RECD
ALL_TAB_PRIVS_MADE
ALL_TAB_PRIVS_RECD
USER_COL_PRIVS_MADE
USER_COL_PRIVS_RECD
ALL_COL_PRIVS_MADE
ALL_COL_PRIVS_RECD
由于以上視圖非常類似,是以就拿USER_TAB_PRIVS_MADE,USER_TAB_PRIVS_RECD這兩個視圖舉例。
1.USER_TAB_PRIVS_MADE視圖為以下結構,簡單的說就是表示目前使用者授予其他使用者的表權限。
列
類 型
說 明
grantee
VARCHAR2(30)
該特權所授予的使用者
table_name
所授予的特權所操作的對象名
column_name
grantor
授權者
privilege
VARCHAR2(40)
對該對象授予的特權
grantable
VARCHAR2(3)
特權所授予的使用者是否可以将這種特權再授予其他使用者。該值等于YES或NO
2.USER_TAB_PRIVS_RECD視圖為以下結構,簡單的說就是表示其他使用者授予目前使用者的表權限。
列
類 型
說 明
owner
擁有該對象的使用者
hierarchy
特權是否構成層次關系。該值等于YES或NO
我想通過以上兩個視圖的解釋就很明了了,通俗的說以MADE結尾的視圖是表示我授予别人的權限,RECD結尾的就是别人授予我的權限。
--查詢已授予的對象權限(即某個使用者對哪些表對哪些使用者開放了對象權限)
以test使用者登入,test使用者是有dba權限的
SQL> SELECT * FROM user_tab_privs_made; --查出test使用者對哪些開放的對象權限
<code>TEST@orcl>SELECT * FROM user_tab_privs_made;</code>
<code>GRANTEE TABLE_NAME GRANTOR PRIVILEGE GRA HIE</code>
<code>------------------------------ ------------------------------ --------------------- ----------------- ------ ------</code>
<code>JKWY INTERFACEUSERS TEST SELECT NO NO</code>
以test1使用者登入,檢視目前使用者給tom使用者配置設定隻有查詢dn表權限
SQL> select grantee, owner, table_name, privilege from user_tab_privs;
<code>GRANTEE OWNER TABLE_NAME PRIVILEGE </code>
<code>------------------------------ --------------------- ---------------------- --------------------</code>
<code>TOM TEST1 DN SELECT</code>
本文轉自ling118 51CTO部落格,原文連結:http://blog.51cto.com/meiling/1977528,如需轉載請自行聯系原作者