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 36 37 38 39 40
| Lancer un job de type commande Unix
DBMS_SCHEDULER permet de lancer une commande Unix en spécifiant EXECUTABLE comme job_type.
Exemple : stocker toutes les 10 secondes la valeur de la date système Unix dans le fichier /tmp/date.log.
Attention, pour lancer une commande Unix sous Oracle, il faut lancer le shell Unix dans une nouvelle instance et passer la commande en argument avec la procédure DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE :
job_name : nom du job auquel passer un argument
argument_position : position de l'argument dans le job
argument_value : valeur de l'argument
Le job à exécuter par Oracle est : /bin/sh -c /bin/date>>/tmp/date.log avec
/bin/sh -c : lancement d'une nouvelle instance du bash unix (sans -c, une instance shell doit déjà être lancée; il est plus sur d'utiliser l'option -c)
/bin/date>>/tmp/date.log : lancement de la commande unix avec son chemin absolu pour enregistrer la date système Unix dans un fichier
Le code PL/SQL est :
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'TEST',
job_type => 'EXECUTABLE',
repeat_interval => 'FREQ=SECONDLY;INTERVAL=10',
job_action => '/bin/sh',
number_of_arguments => 2
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => 'TEST',
argument_position => 1,
argument_value => '-c'
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => 'TEST',
argument_position => 2,
argument_value => '/bin/date>>/tmp/date.log'
);
DBMS_SCHEDULER.ENABLE('TEST');
END;
/ |
Partager