특정 역할이 할당 된 모든 사용자 나열
-- Change 'DBA' to the required role
select * from dba_role_privs where granted_role = 'DBA'
사용자에게 주어진 모든 역할을 나열
-- Change 'PHIL@ to the required user
select * from dba_role_privs where grantee = 'PHIL';
사용자에게 부여 된 모든 권한을 나열합니다
select
lpad(' ', 2*level) || granted_role "User, his roles and privileges"
from
(
/* THE USERS */
select
null grantee,
username granted_role
from
dba_users
where
username like upper('%&enter_username%')
/* THE ROLES TO ROLES RELATIONS */
union
select
grantee,
granted_role
from
dba_role_privs
/* THE ROLES TO PRIVILEGE RELATIONS */
union
select
grantee,
privilege
from
dba_sys_privs
)
start with grantee is null
connect by grantee = prior granted_role;
참고 : http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html 에서 가져옴
특정 역할이 어떤 테이블에 SELECT 액세스 권한을 부여합니까?
-- Change 'DBA' to the required role.
select * from role_tab_privs where role='DBA' and privilege = 'SELECT';
사용자가 선택할 수있는 모든 테이블을 나열 하시겠습니까?
--Change 'PHIL' to the required user
select * from dba_tab_privs where GRANTEE ='PHIL' and privilege = 'SELECT';
특정 테이블에서 선택할 수있는 모든 사용자를 나열하십시오 (관련 역할을 부여 받거나 직접 부여를 통해 (예 : joe에게 부여 할 수있는 부여 선택))? 이 쿼리의 결과는 또한 사용자가이 액세스 권한을 가진 역할 또는 직접 부여 여부를 보여 주어야합니다.
-- Change 'TABLENAME' below
select Grantee,'Granted Through Role' as Grant_Type, role, table_name
from role_tab_privs rtp, dba_role_privs drp
where rtp.role = drp.granted_role
and table_name = 'TABLENAME'
union
select Grantee,'Direct Grant' as Grant_type, null as role, table_name
from dba_tab_privs
where table_name = 'TABLENAME' ;
SELECT
역할로 인해 사용 가능한 권한을 포함하지 않으며 # 6이 누락되었습니다.