2010-07-11 12 views

Répondre

5

Vous pouvez créer des emplois afin d'exécuter la même requête avec le parallélisme.

EXEMPLE

CREATE OR REPLACE PROCEDURE target_deletion 
IS 
    number_of_the_job NUMBER; 
BEGIN 
    DBMS_JOB.submit (number_of_the_job, 'begin stored_procedure_for_deletion; end;', SYSDATE); 
END; 
/

explaination

S'il vous plaît supposons que vous avez, dans votre Oracle DataBase, une procédure stockée appelée exactement comme suit:

stored_procedure_for_deletion

Si vous souhaitez exécuter cette procédure stockée plusieurs fois avec PARALLELISM, vous devez créer une procédure stockée appelée par exemple "TARGET_DELETION" 10 ci-dessus), ce qui crée un nouveau travail qui appelle, avec le bloc PL/SQL:

begin stored_procedure_for_deletion; fin;

... l'exécution de votre procédure appelée "stored_procedure_for_deletion".

Le travail démarre immédiatement. Vous pouvez donc exécuter la procédure stockée target_deletion plusieurs fois de suite, afin d'exécuter la même procédure avec le parallélisme.

+1

merci, mais je dois exemple complet parce que je ne sais pas comment utiliser parallelisem. – shirel

+0

Parallélisme est authomatic, j'ai montré un exemple sur la façon de l'utiliser: vous êtes obligé de créer des emplois afin d'utiliser le parallélisme. – UltraCommit

+0

J'ai édité la définition de la variable: number_of_the_job NUMBER; Auparavant, j'ai écrit par erreur number_of_thejob NUMBER – UltraCommit

3

Si elle est activée au niveau de l'instance, Oracle lui-même a des caractéristiques de requête parallèles:

http://www.orafaq.com/wiki/Parallel_Query_FAQ

edit: il est clair pas ce que vous essayez de faire. Peut-être que vous voulez asynchrone l'exécution de la requête, de sorte que la suggestion de travail Oracle est correcte (voir l'autre réponse).

La fonctionnalité parallèle d'Oracle n'est pas asynchrone, elle indique simplement à l'optimiseur d'utiliser un certain nombre de processeurs dans l'exécution de la requête pour accélérer le résultat. Par exemple:

select /*+ PARALLEL(DOGS,4) */ * from DOGS where A>20 

exécute votre requête avec le parallélisme au degré 4.

+1

par exemple: mon nom de table est DOGS, A, B, C -are colonne je veux faire une requête simple comme: sélectionner * des chiens où A> 20; CE QUE JE DOIS FAIRE POUR FAIRE CETTE DEMANDE EN PARALLÈLE - VEUILLEZ ME DONNER LES COMMANDES SPÉCIFIÉES. MERCI – shirel

+1

Voir la réponse ci-dessus - vous ajoutez l'indice PARALLEL. Regardez le plan d'explication de la déclaration pour voir si elle est utilisée. Le site Oracle de Tahiti est également un bon point de départ. – JulesLt

Questions connexes