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 :

lancement automatique d'un trigger


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 6
    Points
    6
    Par défaut lancement automatique d'un trigger
    Bjr,
    j'ai crée un trigger pour un table sensible et mon but c'est d'activer automatiquement ce trigger lors du lancement du sqlplus, mais je n'arrive pas à trouver le fichier où je vais mettre mon prog de céation.
    J'ai essayé de le mettre dans le fic oracle 'glogin.sql' mais il y avait toujours des erreurs. (oracle7)

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    tu veux activer ou déclencher le trigger ? C'est quoi comme trigger ?

  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
    Par définition, un trigger est exécuté dès qu'il est créé et que l'opération définie dans le trigger est exécutée dans le base.

    Sauf si le trigger a des erreurs de compilation ou si on aexplicitement désactivé le trigger avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TRIGGER <trg> DISABLE
    Dans ce cas là, il faut exécuter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TRIGGER <trg> ENABLE;

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Mon problème c'est de connaître l'utilisateur unix et oracle pour la création du trigger.
    Exemple : c'est l'utilisateur 'client' sous unix (Login : client) et l'utilisateur 'toto' sous oracle (user-name: toto) que je veux auditer. C'est à dire que cet utilisateur 'client' travaille sous oracle après sa connexion unix en utilisant l'user-name 'toto'.

  5. #5
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut Re: lancement automatique d'un trigger
    Citation Envoyé par tsyl
    mon but c'est d'activer automatiquement ce trigger lors du lancement du sqlplus
    Un trigger ne se déclenche pas sur ce type d'évènements.
    Ce sont les opérations INSERT/DELETE/UPDATE ou CONNECT/LOGOFF (pour schématiser) qui peuvent servir de base au trigger.

    Que souhaitez-vous faire (fonctionnellement) ?
    je pense que l'audit sera plus approprié.

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT user FROM dual;
    retourne l'utilisateur Oracle de la session courante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    select osuser, username from v$session;
    donne le lien entre le compte Oracle et le compte Unix.

    S'il n'y a qu'une seule connection Oracle, c'est facile de faire le lien.
    Sinon :

    Si vous aviez Oracle 9, on pourrait utiliser un LOGON TRIGGER.
    Mais pour faire des audit, il est sans doute plus facile d'utiliser les fonctionnalités de l'audit de la base. Vous être sûr d'être encore en Oracle 7 ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut triggers
    Bonjour,

    je voulais savoir s'il était possible d'utiliser un seul trigger qui se declenchera pour plusieurs tables, car le code de mon trigger est le meme pour toute les tables c'est juste le nom de table qui change (forcemment). Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    CREATE OR REPLACE TRIGGER update_new_line_candidats
    BEFORE UPDATE ON candidats
    FOR EACH ROW
    BEGIN
     
    	  :new.new_line := 2;
     
    END update_new_line_candidats;
    Si quelqu'un peut m'aider...
    Merci d'avance.

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    merci de continuer ici sans recréer de sujet

  9. #9
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il suffit de créer une procédure stockée lancée par le trigger de chacune des tables concernées

  10. #10
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    je vous remercie pour m'aider à utiliser la table v$session. Et en suite,
    est ce qu'il est possible de connaître le compte unix et le compte oracle
    à chaque terminal (après connexion) en utilisant un table , parcequ'après une connexion dans plusieurs terminaux, le resulat dans le table v$session est le même et on n'arrive plus à distinguer le compte unix par rapport au compte oracle (select user from dual), surtout si les utilisateurs utilisent ses comptes et ensuite ils utilisent un même compte pour la connexion oracle.

    Merci.

  11. #11
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut Re: lancement automatique d'un trigger
    Citation Envoyé par LeoAnderson
    Citation Envoyé par tsyl
    mon but c'est d'activer automatiquement ce trigger lors du lancement du sqlplus
    Un trigger ne se déclenche pas sur ce type d'évènements.
    Ce sont les opérations INSERT/DELETE/UPDATE ou CONNECT/LOGOFF (pour schématiser) qui peuvent servir de base au trigger.

    Que souhaitez-vous faire (fonctionnellement) ?
    je pense que l'audit sera plus approprié.


    Avez-vous regardé les fonctions d'audit ????
    http://download-west.oracle.com/docs...udit.htm#10055

    Vous pouvez demander à Oracle de surveiller/journaliser les opérations sur des tables (SELECT, INSERT, UPDATE ou DELETE).
    De plus, vous pouvez n'avoir que les ordres qui ont réussi, ceux qui ont échoués, ..

    Ne cherchez pas à réinventer la roue, cherchez plutôt à utiliser ce qui existe (vous vous épargnerez des lignes de codes, du temps de test/validation/débug et au final vous aurez quelque chose de plus sûr et plus rapide en utilisant les outils Oracle).

  12. #12
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Est ce qu'il est possible de connaître le nom du terminal utilisé à partir d'une table oracle? (c'est à dire qu'on n'utilise pas les commandes UNIX ex: tty...)

    Merci.

  13. #13
    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
    C'est dans la colonne V$SESSION.TERMINAL.

  14. #14
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    si on utilise la table v$session, on voit tous les terminaux utilisés mais mon objectif est de connaître le nom du terminal à chaque connexion.

    Merci.

  15. #15
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Au risque de me répéter, si vous voulez savoir qui se connecte depuis où et interroge quelle table (avec ou sans mise à jour/insertion/suppression) vous devez utilisez l'audit !

    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select  Machine, Terminal, Program, OsUser, UserName 
      from v$session 
     where AudSid = UserEnv('SESSIONID');
    mais ça, avec un peu de recherches vous auriez du le trouver !

Discussions similaires

  1. Lancement automatique d'application
    Par atao29 dans le forum MFC
    Réponses: 2
    Dernier message: 18/10/2005, 15h03
  2. Lancement automatique d'un script
    Par srvremi dans le forum Oracle
    Réponses: 2
    Dernier message: 13/10/2005, 11h45
  3. lancement automatique d'1 fichier
    Par meknes dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 01/06/2005, 14h05
  4. Comment éviter le lancement automatique de CBuilder
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/01/2005, 18h35
  5. lancement automatique d'une commande
    Par khadidja dans le forum C++
    Réponses: 3
    Dernier message: 21/07/2004, 16h22

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