Je suis sûr que cela a déjà été demandé, mais je n'arrive pas à trouver les détails pertinents pour ce qui suit.
Existe-t-il une sorte de table pré-construite qui peut faire ce qui suit (j'ai utilisé dba_tab_privs mais il est limité et ne répond pas à tous mes besoins), sinon quelqu'un a-t-il des questions pour répondre à ce qui suit?
Liste tous les utilisateurs auxquels un rôle particulier a été attribué
-- Change 'DBA' to the required role
select * from dba_role_privs where granted_role = 'DBA'
Liste tous les rôles attribués à un utilisateur
-- Change 'PHIL@ to the required user
select * from dba_role_privs where grantee = 'PHIL';
Liste tous les privilèges accordés à un utilisateur
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;
Remarque: extrait de http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html
Liste des tables auxquelles un certain rôle donne accès à SELECT?
-- Change 'DBA' to the required role.
select * from role_tab_privs where role='DBA' and privilege = 'SELECT';
Liste de toutes les tables à partir desquelles un utilisateur peut sélectionner?
--Change 'PHIL' to the required user
select * from dba_tab_privs where GRANTEE ='PHIL' and privilege = 'SELECT';
Énumérer tous les utilisateurs qui peuvent SÉLECTIONNER sur une table particulière (soit en se voyant attribuer un rôle pertinent, soit par une attribution directe (c.-à-d. Accorder une sélection sur atable à joe))? Le résultat de cette requête doit également montrer à travers quel rôle l'utilisateur a cet accès ou s'il s'agissait d'une subvention directe.
-- 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' ;
Il existe de nombreuses façons d'obtenir les informations que vous souhaitez utiliser:
vues du dictionnaire de données
présent dans Oracle.
Vous pouvez simplement interroger les vues et récupérer les détails: Par exemple:
sélectionnez * dans DBA_COL_PRIVS;
sélectionnez * dans ALL_COL_PRIVS;
sélectionnez * dans USER_COL_PRIVS;
Cela vous indique:
La vue DBA décrit toutes les autorisations d'objet de colonne dans la base de données. La vue ALL décrit toutes les attributions d'objet de colonne pour lesquelles l'utilisateur actuel ou PUBLIC est le propriétaire, le concédant ou le bénéficiaire de l'objet. La vue UTILISATEUR décrit les octrois d'objet de colonne pour lesquels l'utilisateur actuel est le propriétaire, le concédant ou le bénéficiaire de l'objet.
Pour plus d'informations, vérifiez ceci
J'espère que cela t'aides.