vendredi 25 janvier 2013

Utilisation de SYS_CONTEXT Oracle 10g.

Cette fonction est très utile pour déterminer par exemple le nom de la machine, l'adresse IP ainsi que d'autres fonctions (système d'exploitation utilisé, problème de connexion à la BD, audit, etc...).

Pour voir des exemples de l'usage de SYS_CONTEXT (audit de la BD), on va créer deux objets (une table et un trigger ).

La création de la table est comme suit:






 Et la création d'un trigger:






















create or replace trigger logon_succes_bd
AFTER LOGON ON DATABASE

begin
    begin
     -- Insertion dans la table audit_logon
     insert into v$audit_logon (
     audit_date    ,
     db_user_name  ,
     os_user_name  ,
     computer_name ,
     ip_address    ,
     module        ,
     comments )
     values  (
     sysdate       ,
     user          ,
     sys_context('USERENV','OS_USER'),
     sys_context('USERENV','HOST'),
     sys_context('USERENV','IP_ADDRESS'),
     sys_context('USERENV','MODULE'),
     ' Connexion avec succès à la BD ' || sys_context('USERENV','DB_NAME'));
     exception
          when others then null;
    end;
end;
 Lorsqu'on fait une connexion avec la BD, il y aura une insertion dans la table. Voici les résultats:

















Une interrogation da la table v$audit_logon permet d'afficher les informations de la connexion à la BD.




















Voici la liste de tous les paramètres de SYS_CONTEXT:











Exemple d'utilisation de cette fonction:
select sys_context('USERENV','NLS_DATE_FORMAT') from DUAL;