Envoi De Fichier Via Procedure Oracle sur FTP (Package / Fonction / Procedure / FTP / Oracle)
0A travers l’article précédent vous avez appris à gérer votre ftp local, ainsi que les outils pour le gérer. Maintenant attardons nous coté Oracle à ce que nous pouvons élaborer comme procédés pour l’execution d’une fonction / procédure issue d’un package ou non. L’idée est assez simple, avec la petite fonction FTP sous Oracle, vous allez à travers soit avec un script shell ordonnancé avec Cron soit avec sur Oracle avec un Job, pouvoir envoyer plusieurs fichiers à heure fixe sur des jours précis.
Vous pouvez soit vous aidez de l’interface intuitive et grandement utile de TOAD dans le Schéma Browser, soit créer votre Job dans un bloc en ligne PL/SQL. Définissez vos Jobs aux intervalles que vous souhaitez. Hebdomadaire, journalier etc…
Les cadences, quelques exemples :
TRUNC(SYSDATE+1) - Tous les jours a minuit TRUNC(SYSDATE+7) - Tous les 7 jours a minuit TRUNC(SYSDATE+30) - Tous les 30 jours a minuit NEXT_DAY(TRUNC(SYSDATE), 'SUNDAY') - Tous les dimanche a minuit TRUNC(SYSDATE+1)+6/24 - Tous les jours a 6h du matin SYSDATE+30/1440 - Tous les jours toutes les 30 minutes TRUNC(LAST_DAY(SYSDATE)) + 1 - Tous les 1er du mois à minuit TRUNC(LAST_DAY(SYSDATE)) + 1 + 8/24 + 30/1440 - Tout les 1er du mois a 8h30 du matin
Puis en PL/SQL créez votre propre Job Oracle :
BEGIN SYS.DBMS_JOB.CHANGE ( job => <Numéro_de_job> ,what => 'begin PKG.PRC(); end;' ,next_date => TRUNC(SYSDATE+1) ,interval => 'TRUNC(SYSDATE+1)' ); END;
Dans notre exemple <Numéro_de_Job> représent l’identifiant unique de votre Job qui s’éxecutera comme vous l’avez défini en précisant la prochaine exécution (next_date) et l’intervalle (interval). Le package PKG est censé contenir la fonction/procédure lançant la génération de votre fichier, puis son transfert via la procédure.
Contrôlez sur votre FTP local pour une mini recette de vos échanges, vous pourrez ainsi bien décrypter chaque partie du processus d’échange / synchronisation de vos interfaces. Dans l’ordre vous aurez : sélection de vos données, agrégation dans votre fichier, log+archivage, transfert puis absorption.
Il est inutile que je précise d’adjoindre des logs et quelques pushs de chaque étape avec des états que vous définirez (1=selection,2=constitution…) avec un update au moment le plus précis c’est plus qu’indispensable pour garder une trame de vos échanges. Vous aurez ainsi une bonne interface pour échanger et interagir avec deux progiciels distincts. L’un faisant une extraction et l’autre une absorption. Il est encore possible de pousser le vice de synchronisation et d’automatisation de ces interfaces avec des états bloquant ou non, de constitution de pile fifo (first in -> first out, vous construisez votre liste de fichiers dans leur ordre d’arrivé par exemple) et de push mail, RSS…