user_role_privs や dba_role_privs テーブルから取得

ユーザに付与されているロールを確認する場合、データディクショナリの
user_role_privs テーブルや、dba_role_privs テーブルを参照する。



テーブル定義

全ユーザのロール権限情報

SQL> desc dba_role_privs
 名前           NULL?    型
 ------------ -------- ------------
 GRANTEE               VARCHAR2(30)
 GRANTED_ROLE NOT NULL VARCHAR2(30)
 ADMIN_OPTION          VARCHAR2(3)
 DEFAULT_ROLE          VARCHAR2(3)

ユーザ自身に与えられたロール権限情報

SQL> desc user_role_privs

 名前           NULL?    型
 ------------ -------- ------------
 USERNAME              VARCHAR2(30)
 GRANTED_ROLE          VARCHAR2(30)
 ADMIN_OPTION          VARCHAR2(3)
 DEFAULT_ROLE          VARCHAR2(3)
 OS_GRANTED            VARCHAR2(3)

 

ロールを付与

例えば、HOGE ユーザへ grant したロールを確認する場合。
※ ロールを付与する権限( admin option )を有するユーザで行う。

SQL> grant connect,resource to hoge;

権限付与が成功しました。

ロール一覧を確認

SQL> select * from dba_role_privs where grantee = 'HOGE';

GRANTEE GRANTED_ROLE ADMIN_ DEFAUL
------- ------------ ------ ------
HOGE    CONNECT      NO     YES
HOGE    RESOURCE     NO     YES

HOGE ユーザでログイン

SQL> conn hoge/hoge@ORCL
接続されました。

自分に付与されたロール一覧

SQL> select * from user_role_privs;

USERNAME GRANTED_ROLE ADMIN_ DEFAUL OS_GRA
-------- ------------ ------ ------ ------
HOGE     CONNECT      NO     YES    NO
HOGE     RESOURCE     NO     YES    NO