IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Qui modifie mon code PL?


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 49
    Points : 37
    Points
    37
    Par défaut Qui modifie mon code PL?
    Bonjour,
    je souhaiterai savoir s'il existe un moyen de connaître le user qui modifie ou a compilé des objets sur la base tel que procédures, package, trigger ou vue.

    Merci

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    Bonjour,
    Il n'existe aucun moyen.
    Au plus, tu peux savoir quand il a été recompilé pour la dernière fois.
    sinon, c'est à toi de le gérer au niveau des droits.
    tu dois savoir qui peux se connecter et changer les packages.

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il y a peut-être 2 possibilités à creuser:
    - en configurant l'audit pour savoir quel est le compte OS qui a lancé la commande SQL correspondante (mais si l'audit n'avait pas été configuré à l'instant voulu, c'est exclu ...) ?
    - en analysant les redo logs avec LogMiner (uniquement si la base est en archive log) ? A condition de pouvoir faire le lien entre les commandes SQL DML qui mettent à jour le dictionnaire et la commande SQL CREATE XXX ...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 165
    Points
    165
    Par défaut
    Il y a plusieurs "solutions" à ton problème :

    1. comme le dit aline, tu as la solution de contrôler les privilèges,

    2. comme le dit pifor, les logminers peuvent être un moyen efficace pour tracer ce genre de chose. ( la colonne sql_redo de v$logmnr_contents trace pas mal de chose mais tout dépend aussi de ta version d'oracle),


    3. Une autre solution à ton problème peut être la création d'un trigger dit DDL :

    il va permettre de quasiment tout tracer (package, trigger, sequence, vue, fonction, procedure, table etc ...),

    !!!!!!!!! ATTENTION !!!!!!!

    je te met quand même en garde ==> si ton trigger DDL est invalide pour une raison X, l'ensemble des commandes DDL que l'on cherchera à executer échoueront ...

    je te met le code ci-dessous, et je te conseille de bien tester tous les cas sur une base de dev ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    connect system/XXX@base
     
    drop table system.ddl_log;
     
    create table
       system.ddl_log
     (
       user_name        varchar2(30),
       ddl_date         date,
       ddl_type         varchar2(30),
       object_type      varchar2(18),
       owner            varchar2(30),
       object_name      varchar2(128),
    terminal     varchar2(30),
    audsid      number
     )
     tablespace XXXXX;
     
     
    create or replace trigger
       DDLTrigger
    AFTER DDL ON DATABASE
    BEGIN
     insert into
       system.ddl_log
     (
       user_name,
       ddl_date,
       ddl_type,
       object_type,
       owner,
       object_name,
    terminal,
    audsid
     )
     VALUES
     (
       ora_login_user,
       sysdate,
       ora_sysevent,
       ora_dict_obj_type,
       ora_dict_obj_owner,
       ora_dict_obj_name,
    sys_context('USERENV','TERMINAL'),
    sys_context('USERENV','SESSIONID')
     );
    END;
    /

Discussions similaires

  1. [MySQL] aider moi a modifier mon code
    Par tapoza dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 11/06/2011, 17h59
  2. Code VBA qui modifie du Code VBA ?
    Par tictactoc dans le forum Excel
    Réponses: 2
    Dernier message: 30/07/2009, 09h43
  3. [Tableaux] comment doit-je modifier mon code
    Par teen6517 dans le forum Langage
    Réponses: 10
    Dernier message: 27/02/2007, 13h22
  4. [VBA-E] Aide pour un bouton dans excel qui exécuterai mon code.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 16h23
  5. CSS comment puis-je modifier mon code pr avoir un bord blanc
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 30/09/2005, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo