2009-12-08 9 views
0

D'abord, je suis en train de créer un travail exécutable:Est-ce une façon valide d'utiliser Oracle Recovery Manager avec Oracle Job Scheduler?

BEGIN 
    DBMS_SCHEDULER.CREATE_JOB(job_name => 'PIPE_JOB', job_type => 'EXECUTABLE', job_action => 'RMAN PIPE TEST_PIPE_1 target/TIMEOUT = 60'); 
END; 

Ensuite, je suis en train d'exécuter le travail avec cette série de commandes Oracle:

DECLARE 
    pipename CONSTANT VARCHAR2(100) := 'TEST_PIPE_1'; 
    create_result INTEGER; 
    send_result INTEGER; 
BEGIN 
    create_result := DBMS_PIPE.CREATE_PIPE(pipename); 
    DBMS_PIPE.PACK_MESSAGE('BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE;'); 
    send_result := DBMS_PIPE.SEND_MESSAGE(pipename); 
    DBMS_SCHEDULER.RUN_JOB(job_name => 'PIPE_JOB', use_current_session => false); 
END; 

Maintenant, quand je fais l'appel à RUN_JOB , l'exécutable RMAN démarre sur le serveur, mais se ferme immédiatement, vraisemblablement parce qu'il ne reçoit jamais les commandes que j'essaye de placer dans le tube.

Comment utiliser les tubes correctement pour que RMAN reçoive les commandes que j'essaie de lui envoyer?

Répondre

1

Je ne pense pas que vous pouvez utiliser DBMS_PIPE pour cela. C'est une "chose" PL/SQL et pas quelque chose que RMAN peut gérer, et pas comme les pipes unix vers STDIN.

Vous pouvez cependant faire des paramètres avec DBMS_SCHEDULER. Vous pourriez avoir besoin d'un script shell intermédiaire.

[Ajouté] j'aurais un script shell qui prend un ou plusieurs paramètres

dbms_scheduler.create_job 
(
job_name => 'job1', 
job_type => 'EXECUTABLE', 
job_action => '/somewhere/rman_script.sh', 
enabled => false, 
number_of_arguments => 2, 
comments => 'Run shell-script' 
); 
dbms_scheduler.set_job_argument_value(SHELL || jobidx,1,'blah'); 
dbms_scheduler.set_job_argument_value(SHELL || jobidx,2,'blah'); 
dbms_scheduler.enable('job1'); 

Le script shell appellerait RMAN et envoyer les paramètres à travers STDIN.

+0

Quand vous dites "Vous pouvez faire des paramètres", que voulez-vous dire exactement? Je peux ajouter des paramètres de ligne de commande à l'exécutable lorsque je crée le travail? Et où aurais-je besoin d'un script shell? (Je suis très nouveau à toutes les choses Oracle) –

1

On dirait que j'avais tort avant et RMAN peut être utilisé avec DBMS_PIPE. Article here. Ne pas le comprendre moi-même, mais un commentaire sur le blog peut donner plus de détails

+0

Merci de re-visiter la question! Je vais certainement jeter un coup d'oeil à cet article. –