Oracleユーザーの権限とロールをどのように確認するか
1. すべてのユーザーを表示する:
select * from dba_users;
select * from all_users;
select * from user_users;
補足:dba_* > all_* > user_*
(1) dba_* : データベースのすべてのオブジェクト
※DBA(データベース管理者)権限を持つユーザーのみがこのビューを参照できます。
(2) all_* :現在のユーザーが所有している、またはアクセスできるすべてのオブジェクト
(3) user_*:現在のユーザーが所有しているすべてのオブジェクト
2. ユーザーまたはロールのシステム権限(ユーザーまたはロールに直接割り当てられたシステム権限)を表示する:
select * from dba_sys_privs;
select * from user_sys_privs;
3. ロールが持つ権限を表示する(ログインユーザーが持っているロールのみが表示されます):
sql>select * from role_sys_privs;
4. ユーザーオブジェクトの権限を表示する:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
5. すべてのロールを表示する:
select * from dba_roles;
6. ユーザーまたはロールが持つロールを表示する:
select * from dba_role_privs;
select * from user_role_privs;
7. sysdbaまたはsysoperシステム権限を持つユーザーを表示する(クエリを実行するには適切な権限が必要です):
select * from V$PWFILE_USERS
たとえば、ユーザー「tin」が持つ権限を表示する場合:
SQL> select * from dba_sys_privs where grantee='tin';
GRANTEE PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
tin CREATE TRIGGER NO
tin UNLIMITED TABLESPACE NO
たとえば、ユーザー「tin」が持つロールを表示する場合:
SQL> select * from dba_role_privs where grantee='tin';
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
tin DBA NO YES
あるユーザーのすべての権限およびロールを表示する場合:
select privilege from dba_sys_privs where grantee='tin'
union
select privilege from dba_sys_privs where grantee in
(select granted_role from dba_role_privs where grantee='tin' );
コメント欄