Bonjour
J'ai besoin de créer un tigger (Oracle 10g) qui permet de capturer la moindre requête SQL lancée par utilisateur donné.
Comment faire ?
Merci
Version imprimable
Bonjour
J'ai besoin de créer un tigger (Oracle 10g) qui permet de capturer la moindre requête SQL lancée par utilisateur donné.
Comment faire ?
Merci
dans ce cas t'as plus vite fait de mettre la base en trace mais gare aux perfs :?
il n'existe pas de trigger pour les SELECT. Outre le TRACING, que tu peux activer pour cet utilisateur (--> DBMS_MONITOR), il y a la commande AUDIT qui peut t'aiderCitation:
Envoyé par medba
tu peux aussi consulter V$SQL
Grâce au package DBMS_FGA (par défaut c’est une propriété de sys dba)
Il faut au préalable ajouter une police FGA avec le schéma, la table et éventuellement les colonnes à surveiller :
exec dbms_fga.add_policy (object_schema=>'MON_SCHEMA',object_name=>'MA_TABLE_CLIENT',policy_name=>'Accès_aux_clients',audit_column => 'CHAMP_Nom_Client');
A partir de ce moment si quelqu’un fait un select sur CHAMP_Nom_Client', on retrouvera sa trace dans la table dba_fga_audit_trail.
Si on veut supprimer cette police il suffit de faire :
exec dbms_fga.drop_policy (object_schema=>'MON_SCHEMA',object_name=>'MA_TABLE_CLIENT’,policy_name=>'Accès_aux_clients');
Ce package accepte d’autres paramètres, comme par exemple une procédure stockée déclenchée par le select, ce qui revient à faire un trigger sur un select.
je ne connaissais pas ça... c'est pas mal du tout :)