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 :

DBMS_Jobs et DBMS_Schedule


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut DBMS_Jobs et DBMS_Schedule
    Bonsoir à tous,

    Je vous sollicite pour un (gros) problème que j'ai et sur lequel je bloque depuis plusieurs heures.
    J'ai lu et relu le tuto "DBMS_JOB ou comment plannifier des jobs sous Oracle", et testé plusieurs solutions, mais mon doute persiste, entre l'utilisation des jobs et schedulers.

    Voici mon problème :
    J'ai une table contenant un champ integer à 1, que je souhaite faire passer à 0 à chaque premier du mois à minuit, si possible, avec comme date de début le 01/01/2010.

    J'ai donc créé une première procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE PROCEDURE Charge_mens_false
    IS
    BEGIN
    	 UPDATE MAGASINS_A_CHARGER_MENS SET CHARGE_MENS = 0 where CHARGE_MENS = 1;
    END;
    /
    Dans un premier temps, en passant par un job, j'ai fait le test pour une mise à jour de 0 à 1 du champ CHARGE_MENS au bout de 30 secondes soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE
      my_job number;
    BEGIN
      dbms_job.submit(my_job, 'Charge_mens_false;',sysdate, 'SYSDATE + 30/86400');
    END;
    /
    Cela fonctionne parfaitement, au bout de 30s, mon champ charge_mens initialement fixé à 1 passe bien à 0.

    Puis, en faisant des recherches, j'ai trouvé que la mise à jour chaque début de mois correspondait à l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRUNC(LAST_DAY(SYSDATE) + 1)
    J'ai donc saisi le job suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE
      my_job_mensuel number;
    BEGIN
      dbms_job.submit(my_job_mensuel, 'Charge_mens_false;','01/01/2010', 'TRUNC(LAST_DAY(SYSDATE) + 1)');
    END;
    /
    Je joins à mon message un imprécran du résultat de l'exécution du select.
    En testant cette instruction, et en faisant un select des user_jobs, je vois bien que celui-ci a été créé. Seulement, contrairement à mon test des 30 secondes, la plupart des champs sont à null, et la prochaine date est fixée au 01/01/2010.


    Je ne vois donc pas vraiment comment résoudre ce problème, et fais appel à votre aide,
    Je vous remercie d'avance pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut le commit
    Re,

    J'ai pu finalement résoudre mon problème :

    En fait, le 01/01/2010 n'avait rien à faire ici, puisqu'on travaillait avec sysdate...j'ai donc remis un sysdate à la place, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE
      my_job number;
    BEGIN
      dbms_job.submit(my_job, 'Charge_mens_false;',sysdate, 'TRUNC(LAST_DAY(SYSDATE) + 1)');
    END;
    J'avais fait ça hier, ma procédure avait bien été prise en compte, mais il manquait quelque chose d'indispensable, et c'est ce qui a "faussé" l'affichage de mes résultats...le COMMIT!!!

    Tout marche comme il le faut désormais, et la mise à jour se fait bien tous les 1er du mois à minuit.

    Merci quand même!!!

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

Discussions similaires

  1. [10g] DBMS_SCHEDULER.stop_job
    Par Jaouad dans le forum SQL
    Réponses: 27
    Dernier message: 04/07/2008, 06h20
  2. [Pl/Sql] DBMS_JOB et procédure
    Par oursin dans le forum Oracle
    Réponses: 19
    Dernier message: 04/08/2006, 10h40
  3. DBMS_JOB ca ne fonctionne pas
    Par gubule dans le forum Oracle
    Réponses: 3
    Dernier message: 12/05/2006, 08h35
  4. [Oracle8i - dbms_job] procédure en mode background
    Par Amadigi dans le forum Oracle
    Réponses: 9
    Dernier message: 30/01/2006, 17h18
  5. [DBMS_JOB] historique
    Par Yorglaa dans le forum Administration
    Réponses: 2
    Dernier message: 12/10/2004, 14h22

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