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
| DECLARE
CURSOR c_lecture_traces(date_limite_purge IN DATE)
IS SELECT DATE_TRACE__TMS, COMPO_INIT__CHR, TECHNO__CHR,
NIVEAU_TRACE__CHR, COMPO_TRACE__CHR, TYP_COUCHE__CHR,
NOM_ETAPE__CHR, TYP_COMPO__CHR, MESSAGE_CODE__CHR,
MESSAGE_TEXTE__CHR, DESC_EXCEPTION__CHR, DETAILS__CHR,
FONCTION_APPELEE__CHR, FONCT_NUM_LIGNE__ENT, MESSAGE_DATE_RECEP__TMS,
MESSAGE_NOM_QUEUE__CHR, DATE_CREAT__DTE, NOM_CREATEUR__CHR,
DATE_MODIF__DTE, NOM_MODIF__CHR
FROM LOG_TRACES
WHERE DATE_TRACE__TMS < date_limite_purge ;
-- l'idée ici est de stocker le pointeur du fichier en fonction du nom du fichier
TYPE TYPE_INFOS_FICHIER IS TABLE OF UTL_FILE.FILE_TYPE INDEX BY VARCHAR2(100) ;
infos_fichier TYPE_INFOS_FICHIER ;
BEGIN
-- Recherche de la date limite de conservation des traces
SELECT TRUNC(SYSDATE-5) INTO date_purge FROM dual;
-- Lecture de toutes les traces avant la date de purge
FOR lecture_colonnes IN c_lecture_traces (date_purge+1)
LOOP
date_trace := TO_CHAR(lecture_colonnes.DATE_TRACE__TMS, 'YYYYMMDD');
serveur := TRIM(lecture_colonnes.NOM_CREATEUR__CHR);
composant := TRIM(lecture_colonnes.COMPO_INIT__CHR);
nom_fichier := COMPOSANT || '-' || date_trace || '-' || serveur ;
IF infos_fichier.EXISTS(nom_fichier) = FALSE THEN
infos_fichier(nom_fichier) := UTL_FILE.FOPEN( 'LOG_EXTRACTDIR', nom_fichier, 'W', 32767 ) ;
END IF;
.... |
Partager