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

Forms Oracle Discussion :

[Forms]Oracle 9i, Comment lancer un job en arrière plan?


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut [Forms]Oracle 9i, Comment lancer un job en arrière plan?
    Salut,

    En 9i, je cherche a lancer un job mais en arrière plan pour me permettre de continuer mon execution
    j'ai trouvé ça
    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
     
    BACKGROUND_PROCESS 
    Indicates whether execution is a  background process or foreground process.
     
    For internal use only. dbms_job.background_process RETURN BOOLEAN 
    set serveroutput on
     
    DECLARE
     b BOOLEAN;
    BEGIN
      IF dbms_job.background_process THEN
        dbms_output.put_line('TRUE');
      ELSE
        dbms_output.put_line('FALSE');
    END IF;

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Salut Salim,
    Selon moi, les jobs lancés avec dbms_job sont tous asynchrones sauf si tu forces l'exécution avec dbms_job.run.

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut PlaineR,

    Merci pour ta réponse PlaineR.

    Meme avec dbms_job.run je ne suis pas capable de prendre la main jusqu'a la fin d'execution de la procedure.

    Voici ce que je veux: lancer le job avec dbms_job et recupérer la main pour f suivre l'éxecution de cette procédure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dbms_job.isubmit('1245','lang_laufend;',sysdate,null);
       commit ;
       synchronize;
       dbms_job.run('1245')
    Avec la 10g, quand je lance le job avec le dbms_scheduler il me rend la main et je suis capable de suivre la progression de l'execution de ma procédure.

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Vire le dbms_job.run et tu devrais récupérer la main aussitôt.

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    salut PlaineR,

    Mais le problème il va la mettre dans une fille d'attente et je ne sais pas quand il va l'executer, Alors je ne peux pas suivre la progression de l'éxecution de ma procèdure

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Normalement il va l'exécuter à la date que tu lui as indiqué :
    NEXT_DATE is the date at which the job will next be automatically run,
    assuming there are background processes attempting to run it
    => il faut que tu vérifies que le paramètre job_queue_processes est correctement paramétré (normalement nombre maxi de job simultané + 1)

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut PlaineR,

    Avec un dbms_lock.sleep(10); avant de rentrer dans la boucle qui suit la progression de l'execution

    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
     
    begin 
    dbms_job.isubmit('1245','lang_laufend;',sysdate,null);
       forms_ddl('commit') ;
        -- dbms_job.run('1245') ;
        dbms_lock.sleep(10);
    end ;
    declare 
    v_percent  number;
    begin 
    set_item_property('blo_progress.progressbar',width,	0);
    	v_percent :=0;
    	loop
      	exit when v_percent =100;
        select (sofar / totalwork) * 100
          into v_percent
        from v$session_longops
        where opname = 'APEX__JOB_LANG_LAUFEND' and sofar < totalwork;
       -- message(v_percent);
       pause;
        :blo_progress.percent:= v_percent||'%';
        set_item_property('blo_progress.progressbar',width,	round( v_percent,2));
        synchronize;
        dbms_lock.sleep(2);
    	end loop;
     
    	 exception
        when NO_DATA_FOUND then
          v_percent := -1;
      	  set_item_property('blo_progress.progressbar',width,	100);
    		  :blo_progress.percent:= '100'||'%';
        when TOO_MANY_ROWS then
          v_percent := -1;
       	  DBMS_SCHEDULER.drop_job (job_name => 'APEX__JOB_LANG_LAUFEND',FORCE=> true) ;
    end ;
    Ca fonctionne maintenent

    Chapeau plaineR

Discussions similaires

  1. comment lancer un programme en arrière plan
    Par metalica25 dans le forum Windows
    Réponses: 9
    Dernier message: 03/03/2013, 17h19
  2. [Batch] Comment lancer un job ?
    Par jeb001 dans le forum Spring
    Réponses: 2
    Dernier message: 06/06/2012, 09h37
  3. [Batch] comment lancer un job via un service REST ?
    Par elitost dans le forum Spring
    Réponses: 0
    Dernier message: 12/11/2010, 10h55
  4. comment lancer une fenètre en arrièr plan
    Par moon93 dans le forum wxPython
    Réponses: 2
    Dernier message: 16/07/2007, 09h25
  5. comment stoper 1 thread d'arrière-plan
    Par ms91fr dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2003, 17h46

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