Jsem si jistý, že to bylo požádáno již dříve, ale nemohu najít relevantní podrobnosti pro následující.
Existuje nějaká předpřipravená tabulka, která může dělat následující (použila jsem dba_tab_privs, ale je omezená a nesplňuje všechny mé potřeby), pokud ne, má někdo nějaké dotazy k zodpovězení následujícího?
Seznam všech uživatelů, kterým byla přidělena určitá role
-- Change 'DBA' to the required role
select * from dba_role_privs where granted_role = 'DBA'
Seznam všech rolí přidělených uživateli
-- Change '[email protected] to the required user
select * from dba_role_privs where grantee = 'PHIL';
Seznam všech oprávnění udělených uživateli
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;
Poznámka: Převzato z http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html
Seznam tabulek, které určitá role dává SELECT přístupu?
-- Change 'DBA' to the required role.
select * from role_tab_privs where role='DBA' and privilege = 'SELECT';
Seznam všech tabulek, z nichž si uživatel může VYBRAT?
--Change 'PHIL' to the required user
select * from dba_tab_privs where GRANTEE ='PHIL' and privilege = 'SELECT';
Seznam všech uživatelů, kteří se mohou VYBRAT na konkrétní tabulce (buď prostřednictvím přiřazení relevantní role nebo přímým grantem (tj. Výběr grantu na možnost, aby se připojili))? Výsledek tohoto dotazu by měl také ukázat, jakou rolí má uživatel tento přístup nebo zda se jedná o přímý grant.
-- 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' ;
Existuje mnoho způsobů, jak získat informace, které chcete použít:
zobrazení datového slovníku
přítomen v Oracle.
Můžete pouze dotazovat pohledy a načíst podrobnosti: Například:
vyberte * z DBA_COL_PRIVS;
vyberte * z ALL_COL_PRIVS;
vyberte * z USER_COL_PRIVS;
To vám řekne:
Pohled DBA popisuje všechny udělení objektu sloupce v databázi. Zobrazení ALL popisuje všechny granty objektu sloupce, pro které je aktuální uživatel nebo PUBLIC vlastníkem objektu, poskytovatelem grantu nebo příjemcem grantu. Pohled USER popisuje granty objektu sloupce, pro které je aktuálním uživatelem vlastník objektu, poskytovatel grantu nebo příjemce grantu.
Pro více informací podívejte se na toto
Snad to pomůže.