Oracle
為什麼 Oracle 不顯示我的權限?
我有一個能夠刪除、更改、創建表和索引的使用者。但是,當我列出我的 Oracle 使用者的權限時,它沒有顯示任何
CREATE TABLE
或其他此類權限。我如何在沒有特權的情況下執行這些操作,或者 Oracle 為什麼不顯示它們?執行以下查詢不會返回任何內容:
SELECT * FROM USER_TAB_PRIVS; SELECT * FROM all_tab_privs_recd WHERE grantee = 'user_kshitiz';
執行
SELECT * FROM USER_SYS_PRIVS
返回:USERNAME PRIVILEGE ADM ------------------------------ ---------------------------------------- --- user_kshitiz UNLIMITED TABLESPACE NO user_kshitiz CREATE SEQUENCE NO
執行
SELECT * FROM USER_ROLE_PRIVS
返回:USERNAME GRANTED_ROLE ADM DEF OS_ ------------------------------ ------------------------------ --- --- --- user_kshitiz CONNECT NO YES NO user_kshitiz RESOURCE NO YES NO user_kshitiz SCHEMA_1_RW_ROLE NO YES NO
檢查每個角色的權限不會返回任何結果。
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'CONNECT'; SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'RESOURCE'; SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'SCHEMA_1_RW_ROLE';
那麼,力量從何而來?
如您所見,您已將
RESOURCE
角色授予 useruser_kshitz
。你必須查詢ROLE_SYS_PRIVS
.SQL> select * from role_sys_privs where role='RESOURCE'; ROLE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- RESOURCE CREATE TRIGGER NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TYPE NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE INDEXTYPE NO RESOURCE CREATE TABLE NO 8 rows selected.
您還可以查詢
SESSION_PRIVS
以查找授予使用者的所有權限。SQL> select * from session_privs; PRIVILEGE ---------------------------------------- CREATE SESSION CREATE TABLE CREATE CLUSTER CREATE SEQUENCE CREATE PROCEDURE CREATE TRIGGER CREATE TYPE CREATE OPERATOR CREATE INDEXTYPE 9 rows selected.