Oracle

為什麼 Oracle 不顯示我的權限?

  • May 28, 2016

我有一個能夠刪除、更改、創建表和索引的使用者。但是,當我列出我的 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角色授予 user user_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.

引用自:https://dba.stackexchange.com/questions/139803