รายชื่อผู้ใช้ทั้งหมดที่ได้รับมอบหมายบทบาทเฉพาะ
-- 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';
ทำรายการผู้ใช้ทุกคนที่สามารถเลือกได้บนตารางเฉพาะ (ผ่านการได้รับบทบาทที่เกี่ยวข้องหรือผ่านการให้สิทธิ์โดยตรง ผลลัพธ์ของแบบสอบถามนี้ควรแสดงให้เห็นถึงบทบาทที่ผู้ใช้มีสิทธิ์เข้าถึงนี้หรือไม่ว่าจะเป็นการให้สิทธิ์โดยตรง
-- 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 หายไป