天天看點

oracle确定被授予的對象權限

與對象權限有關的視圖有以下幾個,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&gt;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&gt; 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,如需轉載請自行聯系原作者