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 :

Parallélisation de requêtes via DBMS_JOB


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Parallélisation de requêtes via DBMS_JOB
    Est-il possible de mettre en multi-threading de simples lancement de requêtes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mon_query_1 := 'INSERT INTO Ma_table (Mon_champ) VALUES (CHR(39)totoCHR(39));';
    mon_query_2 := 'INSERT INTO Ma_table (Mon_champ) VALUES (CHR(39)titiCHR(39));';
    dbms_job.submit(job,mon_query_1);
    dbms_job.submit(job,mon_query_2);
    Ou est-ce que chaque requête doit être insérée dans une procédure à part entière pour être ensuite parallélisée par dbms_job ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create or replace procedure ma_proc_1 is
    begin
    INSERT INTO Ma_table (Mon_champ) VALUES ('toto');
    end ma_proc_1;
     
    create or replace procedure ma_proc_2 is
    begin
    INSERT INTO Ma_table (Mon_champ) VALUES ('titi');
    end ma_proc_2;
     
    dbms_job.submit(job,ma_proc_1);
    dbms_job.submit(job,ma_proc_2);

  2. #2
    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
    avant de poser la question, vous avez bien sûr essayé ?

    quels résultats avez-vous obtenus ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Oui j'ai testé et j'ai un pop-up dont les messages dépassent un peu ma compréhension :

    ORA-06550: line 1, column 193:
    PL/SQL: ORA-00917: missing comma
    ORA-06550: line 1, column 93:
    PL/SQL: SQL Statement ignored
    ORA-06512: at "SYS.DBMS_JOB", line 79
    ORA-06512: at "SYS.DBMS_JOB", line 136
    ORA-06512: at "ORAGP23U01.TEST_PARALLEL_QUERY", line 10
    ORA-06512: at line 3
    Code :

    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
     
     
    create or replace procedure test_parallel_query is 
    jobno integer;
    query_1 varchar(256);
    query_2 varchar(256);
     
    begin
    query_1 := 'INSERT INTO Blablabla;';
    query_2 := 'INSERT INTO Blablalba;';
     
    dbms_job.submit(jobno,query_1);
    dbms_job.submit(jobno,query_2);
    commit;
     
    end test_parallel_query;

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    En l'absence de résultats probants et de retours d'autres membres de ce forum, je déclare le lancement de requêtes via dbms_job impossible !!

    Obligation de les imbriquer dans une procédure.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Au lieu de dire que ça ne marche pas, pourquoi ne pas regarder la description du package :

    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
      PROCEDURE submit    ( job       OUT BINARY_INTEGER,
             what      IN  VARCHAR2,
                            next_date IN  DATE DEFAULT sysdate,
                            interval  IN  VARCHAR2 DEFAULT 'null',
                            no_parse  IN  BOOLEAN DEFAULT FALSE,
    
                            -- Bug 1346620: replace pkg vars with constants.
                            -- Default for instance = dbms_job.any_instance.
    			instance  IN  BINARY_INTEGER DEFAULT 0,
    			force     IN  BOOLEAN DEFAULT FALSE );
    
    
     -- Parameters are:
      -- WHAT is the PL/SQL procedure to execute.
      --   The job must always be a single call to a procedure.  The
      --     routine may take any number of hardcoded parameters.

    D'où ton code corrigé :

    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
    CREATE OR REPLACE procedure test_parallel_query IS 
    jobno integer;
    query_1 varchar(256);
    query_2 varchar(256);
     
    begin
    query_1 := 'begin 
    	INSERT INTO Blablabla; 
    	end;'; 
     
    query_2 := 'begin 
    	INSERT INTO Blablabla; 
    	end;'; 
     
    dbms_job.submit(jobno,query_1);
    dbms_job.submit(jobno,query_2);
    commit;
     
    end test_parallel_query;
    Dernière modification par Invité ; 31/07/2008 à 20h47.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Je suis un auto-didacte de pl/sql sans formation technique , certains réflexes me font défaut.

    Alors je te dis merci et je te fais un bisou tiens, tu l'as bien mérité .... allez hop ... résolu !!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2007, 19h44
  2. Erreur d'éxécution requête via lien ODBC
    Par ft035580 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 27/08/2006, 18h46
  3. Comment effectuer des requêtes via ClientDataSat1 en client/serveur ?
    Par MaTHieU_ dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/06/2006, 01h04
  4. Réponses: 1
    Dernier message: 16/06/2006, 15h34
  5. Modification critére requête via formulaire
    Par frevale dans le forum Access
    Réponses: 1
    Dernier message: 02/11/2005, 21h30

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