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

PL/SQL Oracle Discussion :

Problème de droits d'éxécution dans un trigger


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Problème de droits d'éxécution dans un trigger
    Bonjour,

    mon problème :

    j'ai une procédure qui me crée un job et le scheduler qui va bien :

    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
    create or replace procedure period authid current_user is
    pragma AUTONOMOUS_TRANSACTION;
    begin
     
      dbms_scheduler.create_program
      (
        program_name => 'program_imp_alerte',
        program_type => 'EXECUTABLE',
        program_action => '/home/ora11g/projet/lancement.sh',
        enabled => TRUE,
        comments => 'Scheduler des imports'
      );
     
     
      dbms_scheduler.enable (name => 'program_imp_alerte');
     
     
      dbms_scheduler.create_schedule
      (
        schedule_name => 'scheduler',
        start_date => SYSTIMESTAMP, repeat_interval => 'freq=minutely; interval=' || get_option('intervale'),
        end_date => NULL,
        comments => 'Job toutes les x minutes '
      );
     
     
      dbms_scheduler.create_job
      (
        job_name => 'job_import_alerte',
        program_name => 'program_imp_alerte',
        schedule_name => 'scheduler',
        enabled => TRUE,
        comments => 'Creer le job'
      );
     
     
    end period;
    /

    Si je lance cette procédure dans un script du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    begin
      period();
    end;
    /
    -> aucun problème.

    J'ai également un trigger qui m'appelle cette procédure sur un update d'une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create or replace trigger trg_chg_option
    after update on alerte_options
    for each row
    begin
     
      if :old.nom_option = 'intervale' then
     
        period();
     
      end if;
     
    end;
    /
    Le problème, lors de l'update j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Erreur commençant à la ligne 1 de la commande :
    update alerte_options set valeur_option = '2' where nom_option = 'intervale'
    Rapport d'erreur :
    Erreur SQL : ORA-27486: privilèges insuffisants
    ORA-06512: à "SYS.DBMS_ISCHED", ligne 5
    ORA-06512: à "SYS.DBMS_SCHEDULER", ligne 36
    ORA-06512: à "XAVINOU_DATA.PERIOD", ligne 5
    ORA-06512: à "XAVINOU_DATA.TRG_CHG_OPTION", ligne 7
    ORA-04088: erreur lors d'exécution du déclencheur 'XAVINOU_DATA.TRG_CHG_OPTION'
    27486. 00000 -  "insufficient privileges"
    *Cause:    An attempt was made to perform a scheduler operation without the
               required privileges.
    *Action:   Ask a sufficiently privileged user to perform the requested
               operation, or grant the required privileges to the proper user(s).

    Là, je n'ai aucune idée pourquoi il me dit que je n'ai pas le droit de faire.


    Si quelqu'un à une idée, je suis preneur...


    Merci

  2. #2
    Membre habitué Avatar de h472009
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Service public

    Informations forums :
    Inscription : Août 2009
    Messages : 86
    Points : 170
    Points
    170
    Par défaut
    si tu as crée la procedure via un compte DBA (ce qui est souvant le cas), tu doit donner a l'utilisateur courant les droit d'execution sur la procedure, puis que tu cree un public synonym de la procedure afin qu'elle sera visible pour tout le monde:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    create public synonym period for period;
     
    grant execute on period to USR1;   -- remplace USR1 par ton nom d'utilisateur
    Bonne journée
    The Matrix has you.....

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    De plus, comme tu as créé ta procédure en authid current_user, il faut donner les droits d'exécution sur le package sys.dbms_scheduler à ton utilisateur. Ou bien alors laisser la procédure par défaut en authid definer.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci des réponses, mais en fait, j'avais juste oublier de granter l'utilisateur pour create job et create any job

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 15/10/2011, 01h30
  2. Réponses: 1
    Dernier message: 15/05/2007, 12h01
  3. Problème dans un trigger
    Par hpavavar dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 03/03/2007, 19h34
  4. Réponses: 4
    Dernier message: 01/05/2006, 22h53
  5. Calcul dans un triggers : problème du +
    Par eXiaNazaire dans le forum Oracle
    Réponses: 3
    Dernier message: 07/01/2005, 10h14

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