Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpapp/script/pkg/mnp/pkg_storicizzazione.sql
2024-05-13 12:54:14 +02:00

1282 lines
43 KiB
SQL
Raw Permalink Blame History

create or replace package pkg_storicizzazione is
-- Author : ALGHISIL
-- Created : 16/04/2012 10.21.08
-- Purpose :
-- procedura per lo svecchiamento con data calcolata
-- in automantica tramite sysdate
PROCEDURE P_MAIN_STORICIZZAZIONE;
-- procedura per lo svecchiamento con data in ingresso
PROCEDURE P_MAIN_STORICIZZAZIONE(P_DATA DATE);
end pkg_storicizzazione;
/
create or replace package body pkg_storicizzazione is
path_file_log varchar2(10) := 'LOG_PART';
PROCEDURE P_SVECCHIA_DONOR_E_RECVIRT (P_DATA date, p_puntatore_file_log UTL_FILE.FILE_TYPE) is
BEGIN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio Procedura di storicizzazione processo DONOR e RECIPIENT VIRTUALE');
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Caricamento tabella temporanea delle Richieste DONOR da CANCELLARE');
-- Caricamento tabella temporanea delle richieste DONOR da storicizzare
EXECUTE IMMEDIATE 'TRUNCATE TABLE HIST_SVECCHIA_DONOR';
INSERT /* +APPEND */ INTO HIST_SVECCHIA_DONOR
SELECT ID_RICHIESTA
FROM MNP_GESTIONE_RICHIESTA RD, MNP_STATO S
WHERE RD.DATARICEZIONERICHIESTA < P_DATA
AND RD.STATO = S.ID_STATO
AND S.FINALE = 1
AND RD.ID_RICHIESTA NOT IN
( SELECT ID_RICHIESTA
FROM MNP_GEST_RICH_DON_TC GRD_TC, MNP_STATO_DON_TC STC
WHERE GRD_TC.STATO = STC.ID_STATO
AND STC.FINALE <> 1);
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Caricamento tabella temporanea delle Richieste RECIPIENT VIRTUALE da CANCELLARE');
-- Caricamento tabella temporanea delle richieste RECIPIENT VIRTUALE da storicizzare
EXECUTE IMMEDIATE 'TRUNCATE TABLE HIST_SVECCHIA_RECVIRT';
INSERT /* +APPEND */ INTO HIST_SVECCHIA_RECVIRT
SELECT ID_RICHIESTA
FROM MNP_GEST_RICH_REC_VIRT RRV, MNP_STATO_REC_VIRT S
WHERE RRV.DATARICEZIONERICHIESTA < P_DATA
AND RRV.STATO = S.ID_STATO
AND S.FINALE = 1
AND RRV.ID_RICHIESTA NOT IN
( SELECT ID_RICHIESTA
FROM MNP_GEST_RICH_REC_VIRT_TC GRRV_TC, MNP_STATO_REC_VIRT_TC STC
WHERE GRRV_TC.STATO = STC.ID_STATO
AND STC.FINALE <> 1);
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Spostamento delle richieste nelle tabelle di storico');
--
-- SPOSTAMENTO DELLE RICHIESTE DONOR NELLA TABELLA DI STORICO
INSERT /* +APPEND */ INTO HIST_GESTIONE_RICHIESTA
SELECT R.*
FROM MNP_GESTIONE_RICHIESTA R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
-- SPOSTAMENTO DELLE RICHIESTE RECIPIENT VIRTUALE NELLA TABELLA DI STORICO
INSERT /* +APPEND */ INTO HIST_GEST_RICH_REC_VIRT
SELECT R.*
FROM MNP_GEST_RICH_REC_VIRT R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
-- GESTIONE DEL TRASFERIMENTO CREDITO PER IL DONOR
INSERT /* +APPEND */ INTO HIST_GEST_RICH_DON_TC
SELECT R.*
FROM MNP_GEST_RICH_DON_TC R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
-- GESTIONE DEL TRASFERIMENTO CREDITO PER IL RECIPIENT VIRTUALE
INSERT /* +APPEND */ INTO HIST_GEST_RICH_REC_VIRT_TC
SELECT R.*
FROM MNP_GEST_RICH_REC_VIRT_TC R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
--
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Cancellazione dati dalle tabelle di frontiera');
--
-- CANCELLAZIONE DEI DATI DALLE TABELLE DI FRONTIERA/INTEGRAZIONE
DELETE /*+ index(MNP_ASP_CRM_CESSAZIONE_OUT IDX_ASP_CRM_CESSAZIONE_OUT_2)*/
MNP_ASP_CRM_CESSAZIONE_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_ASP_CRM_CESS_OUT_GISP
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_BIT_NOTIFICA_DONOR_OUT
WHERE ID_RICHIESTA_AOM IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_CCRM_NOTIFICA_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE /*+ index(MNP_CIRCE_OUT IDX_MNP_CIRCE_OUT_NEW1) */
MNP_CIRCE_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_DBCFX_DPP_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_DBCGO_NOTIFICA_DONOR_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_DBCGO_NOTIFICA_DON_TC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_DBCGO_NOT_REC_VIRT_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_DBCGO_NOT_REC_VIRT_TC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_FMSRISK_CESSAZIONE_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GESTIONE_RICHIESTA_EXT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_GEST_RICH_DON_TC_EXT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_GINO_RETRIEVE_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GISP_ATT_CESS_IN
WHERE CODICE_RIPROPOSIZIONE IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GISP_ATT_OUT
WHERE TID IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GISP_CESS_OUT
WHERE TID IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GISP_CESS_OUT_DON_ABB
WHERE TID IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GISP_CESS_OUT_DON_PP
WHERE TID IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GISP_NOTIFICA_IN
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_GISP_RETRIEVE_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE /*+ index(MNP_MSS_CESSAZIONE_IN IDX_MNP_MSS_CESSAZIONE_IN_1) */
MNP_MSS_CESSAZIONE_IN
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_MVNO_DETT_NOT_SLA_DON_OUT
WHERE ID_NOTIFICA IN
( SELECT UNIQUE_ID
FROM MNP_MVNO_NOT_SLA_DON_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT
)
);
--
DELETE MNP_MVNO_DETT_NOT_SLA_REC_OUT
WHERE ID_NOTIFICA IN
( SELECT UNIQUE_ID
FROM MNP_MVNO_NOT_SLA_REC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT)
);
--
DELETE MNP_MVNO_NOTIFICA_DON_OUT
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_MVNO_NOTIFICA_REC_OUT
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_MVNO_NOT_SLA_DON_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_MVNO_NOT_SLA_REC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_MVNO_PORTING_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_MVNO_TC_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_MVNO_UPDATE_DCO_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_MVNO_VALIDAZ_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_SBLOCCO_RICHIESTE
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_SMS_L1
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_SMS_L1V
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE /*+ index(MNP_STORICO_RICHIESTA IDX_MNP_STORICO_RICHIESTA_1) */
MNP_STORICO_RICHIESTA
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_STORICO_RICH_REC_VIRT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_STOR_RICH_DON_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_STOR_RICH_REC_VIRT_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
DELETE MNP_BLOCCO_RICHIESTE
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR);
--
DELETE MNP_BIT_TC_DONOR_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT);
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati dalle tabelle di frontiera');
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Cancellazione dati dalle tabelle principali');
-- CANCELLAZIONE DELLE TABELLE MASTER
DELETE FROM MNP_GEST_RICH_DON_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR)
AND DATARICEZIONERICHIESTA < P_DATA;
--
DELETE FROM MNP_GEST_RICH_REC_VIRT_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT)
AND DATARICEZIONERICHIESTA < P_DATA;
--
DELETE FROM MNP_GESTIONE_RICHIESTA
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONOR)
AND DATARICEZIONERICHIESTA < P_DATA;
--
DELETE FROM MNP_GEST_RICH_REC_VIRT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECVIRT)
AND DATARICEZIONERICHIESTA < P_DATA;
--
COMMIT;
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati dalle tabelle principali');
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati processo DONOR e RECIPIENT VIRTUALE');
EXCEPTION WHEN OTHERS THEN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' ERRORE NELLA STORICIZZAZIONE DONOR RECIPIENT VIRTUALE '||SQLERRM);
ROLLBACK;
END P_SVECCHIA_DONOR_E_RECVIRT;
-- ####################### --
--
--
-- ####################### --
PROCEDURE P_SVECCHIA_RECIPIENT_E_DONVIRT(P_DATA DATE, p_puntatore_file_log UTL_FILE.FILE_TYPE) IS
BEGIN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio Procedura di storicizzazione processo RECIPIENT E DONOR VIRTUALE');
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Caricamento tabella temporanea delle Richieste RECIPIENT da CANCELLARE');
-- Caricamento tabella temporanea delle richieste DONOR da storicizzare
EXECUTE IMMEDIATE 'TRUNCATE TABLE HIST_SVECCHIA_RECIPIENT';
INSERT /* +APPEND */ INTO HIST_SVECCHIA_RECIPIENT
SELECT ID_RICHIESTA
FROM MNP_GESTIONE_RICHIESTA_REC RR, MNP_STATO_REC S
WHERE RR.DATARICEZIONERICHIESTA < P_DATA
AND RR.STATO = S.ID_STATO
AND S.FINALE = 1
AND RR.ID_RICHIESTA NOT IN
( SELECT ID_RICHIESTA
FROM MNP_GEST_RICH_REC_TC GRR_TC, MNP_STATO_REC_TC STC
WHERE GRR_TC.STATO = STC.ID_STATO
AND STC.FINALE <> 1);
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Caricamento tabella temporanea delle Richieste DONOR VIRTUALE da CANCELLARE');
-- Caricamento tabella temporanea delle richieste RECIPIENT VIRTUALE da storicizzare
EXECUTE IMMEDIATE 'TRUNCATE TABLE HIST_SVECCHIA_DONVIRT';
INSERT /* +APPEND */ INTO HIST_SVECCHIA_DONVIRT
SELECT ID_RICHIESTA
FROM MNP_GEST_RICH_DONOR_VIRT RDV, MNP_STATO_DON_VIRT S
WHERE RDV.DATARICEZIONERICHIESTA < P_DATA
AND RDV.STATO = S.ID_STATO
AND S.FINALE = 1
AND RDV.ID_RICHIESTA NOT IN
( SELECT ID_RICHIESTA
FROM MNP_GEST_RICH_DON_VIRT_TC GRDV_TC, MNP_STATO_DON_VIRT_TC STC
WHERE GRDV_TC.STATO = STC.ID_STATO
AND STC.FINALE <> 1);
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Spostamento delle richieste nelle tabelle di storico');
--
-- SPOSTAMENTO DELLE RICHIESTE RECIPIENT NELLA TABELLA DI STORICO
INSERT /* +APPEND */ INTO HIST_GESTIONE_RICHIESTA_REC
SELECT R.*
FROM MNP_GESTIONE_RICHIESTA_REC R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
-- SPOSTAMENTO DELLE RICHIESTE DONOR VIRTUALE NELLA TABELLA DI STORICO
INSERT /* +APPEND */ INTO HIST_GEST_RICH_DONOR_VIRT
SELECT R.*
FROM MNP_GEST_RICH_DONOR_VIRT R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
-- GESTIONE DEL TRASFERIMENTO CREDITO PER IL RECIPIENT
INSERT /* +APPEND */ INTO HIST_GEST_RICH_REC_TC
SELECT R.*
FROM MNP_GEST_RICH_REC_TC R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
-- GESTIONE DEL TRASFERIMENTO CREDITO PER IL DONOR VIRTUALE
INSERT /* +APPEND */ INTO HIST_GEST_RICH_DON_VIRT_TC
SELECT R.*
FROM MNP_GEST_RICH_DON_VIRT_TC R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
--
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Cancellazione dati dalle tabelle di frontiera');
--
DELETE MNP_BIT_IN_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_BIT_OUT_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_BIT_PPBU_OUT_REC
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_CCRM_NOTIFICA_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE /*+ index(MNP_CIRCE_OUT_REC IDX_MNP_CIRCE_OUT_REC_NEW1) */
MNP_CIRCE_OUT_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_DBCFX_DPP_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_DBCGO_NOTIFICA_REC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_DBCGO_NOTIFICA_REC_TC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_DBCGO_NOT_DON_VIRT_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_DBCGO_NOT_DON_VIRT_TC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE /*+ index(MNP_GESTIONE_RICHIESTA_REC_EXT PK_MNP_GESTIONE_RICH_REC_EXT) */
MNP_GESTIONE_RICHIESTA_REC_EXT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_GEST_RICH_REC_TC_EXT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_GINO_RETRIEVE_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_GISP_ATT_OUT
WHERE TID IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_GISP_NOTIFICA_IN
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_GISP_RETRIEVE_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MSC_IN_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MSC_OUT_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MSP_END_TC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MSP_IN_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MSP_OUT_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MSP_TC_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MSS_ATTIVAZIONE_IN_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_MVNO_DETT_NOT_SLA_DON_OUT
WHERE ID_NOTIFICA IN
( SELECT UNIQUE_ID FROM MNP_MVNO_NOT_SLA_DON_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT)
);
--
DELETE MNP_MVNO_DETT_NOT_SLA_REC_OUT
WHERE ID_NOTIFICA IN
( SELECT UNIQUE_ID FROM MNP_MVNO_NOT_SLA_REC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT)
);
--
DELETE MNP_MVNO_NOTIFICA_DON_OUT
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MVNO_NOTIFICA_REC_OUT
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_MVNO_NOT_SLA_DON_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MVNO_NOT_SLA_REC_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_MVNO_PORTING_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_MVNO_TC_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_MVNO_VALIDAZ_IN
WHERE ID_RICHIESTA_DBC IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_SEC_SMS_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT
UNION
SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_SBLOCCO_RICHIESTE
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_BLOCCO_RICHIESTE
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE /*+ index(MNP_STORICO_RICHIESTA_REC IDX_STORICO_RICHIESTA_REC_2) */
MNP_STORICO_RICHIESTA_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
DELETE MNP_STORICO_RICH_DON_VIRT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_STOR_RICH_DON_VIRT_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT);
--
DELETE MNP_STOR_RICH_REC_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT);
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati dalle tabelle di frontiera');
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Cancellazione dati dalle tabelle principali');
-- CANCELLAZIONE TABELLE MASTER
DELETE FROM MNP_GEST_RICH_REC_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT)
AND DATARICEZIONERICHIESTA < P_DATA;
--
DELETE FROM MNP_GEST_RICH_DON_VIRT_TC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT)
AND DATARICEZIONERICHIESTA < P_DATA;
--
DELETE FROM MNP_GESTIONE_RICHIESTA_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_RECIPIENT)
AND DATARICEZIONERICHIESTA < P_DATA;
--
DELETE FROM MNP_GEST_RICH_DONOR_VIRT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_DONVIRT)
AND DATARICEZIONERICHIESTA < P_DATA;
--
COMMIT;
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati dalle tabelle principali');
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati processo RECIPIENT e DONOR VIRTUALE');
EXCEPTION WHEN OTHERS THEN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' ERRORE NELLA STORICIZZAZIONE RECIPIENT E DONOR VIRTUALE '||SQLERRM);
ROLLBACK;
END P_SVECCHIA_RECIPIENT_E_DONVIRT;
-- ####################### --
--
--
-- ####################### --
PROCEDURE P_SVECCHIA_PORTING (P_DATA DATE, p_puntatore_file_log UTL_FILE.file_type) IS
BEGIN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio procedura cancellazione dati per il processo di PORTING');
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Caricamento tabella temporanea delle Richieste PORTING');
-- Caricamento tabella temporanea delle richieste PORTING da storicizzare
EXECUTE IMMEDIATE 'TRUNCATE TABLE HIST_SVECCHIA_PORTING';
--
INSERT /* +APPEND */ INTO HIST_SVECCHIA_PORTING
SELECT ID_RICHIESTA
FROM MNP_GESTIONE_RICHIESTA_PORTING RP, MNP_STATO_PORTING S
WHERE RP.DATARICEZIONERICHIESTA < P_DATA
AND RP.STATO = S.ID_STATO
AND S.FINALE = 1;
--
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Spostamento delle richieste nelle tabelle di storico');
--
-- SPOSTAMENTO DELLE RICHIESTE PORTING NELLA TABELLA DI STORICO
INSERT /* +APPEND */ INTO HIST_GESTIONE_RICHIESTAPORTING
SELECT R.*
FROM MNP_GESTIONE_RICHIESTA_PORTING R
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_PORTING);
--
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Cancellazione dati dalle tabelle di frontiera');
--
DELETE MNP_DBCFX_DPP_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_PORTING);
--
DELETE MNP_DBCGO_NOTIFICA_PORTING_OUT
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_PORTING);
--
DELETE MNP_MSS_PORTING_IN
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_PORTING);
--
DELETE /*+ index(MNP_STORICO_PORTING IDX_STORICO_PORTING_1) */
MNP_STORICO_PORTING
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_PORTING);
--
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati dalle tabelle di frontiera');
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Cancellazione dati dalle tabelle principali');
-- CANCELLAZIONE TABELLA MASTER
DELETE MNP_GESTIONE_RICHIESTA_PORTING
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA FROM HIST_SVECCHIA_PORTING)
AND DATARICEZIONERICHIESTA < P_DATA;
--
COMMIT;
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati dalle tabelle principali');
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati processo PORTING');
EXCEPTION WHEN OTHERS THEN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' ERRORE NELLA STORICIZZAZIONE PORTING '||SQLERRM);
ROLLBACK;
END P_SVECCHIA_PORTING;
-- ####################### --
--
--
-- ####################### --
PROCEDURE P_SVECCHIA_TAB_XML (P_DATA DATE, p_puntatore_file_log UTL_FILE.file_type) IS
vb_delete boolean;
V_COUNT_RICH number;
BEGIN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio cancellazione dati per tabelle XML');
--
-- Ciclo sui file XML IN INGRESSO che potrebbero essere eliminati
FOR R_XML_IN IN
( SELECT * FROM MNP_XML_IN
WHERE DATA_EFF < P_DATA
AND TIPO_FILE IN (1,9,13,2,5,6,10,11,12,3)
)
LOOP
vb_delete := false;
IF R_XML_IN.TIPO_FILE IN (1,9,13) THEN
-- VERIFICO LE RICHIESTE CONTENUTE NEL FILE
-- PER IL PROCESSO DONOR (MNP_GESTIONE_RICHIESTA)
SELECT COUNT(*)
INTO V_COUNT_RICH
FROM MNP_GESTIONE_RICHIESTA
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA
FROM MNP_XML_RICHIESTA_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE
);
IF V_COUNT_RICH = 0 THEN
-- FILE XML POSSIBILE DA CANCELLARE
vb_delete := true;
END IF;
ELSIF R_XML_IN.TIPO_FILE IN (2,5,6,10,11,12) THEN
-- VERIFICO LE RICHIESTE CONTENUTE NEL FILE
-- PER IL PROCESSO DONOR (MNP_GESTIONE_RICHIESTA_REC)
SELECT COUNT(*)
INTO V_COUNT_RICH
FROM MNP_GESTIONE_RICHIESTA_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA
FROM MNP_XML_RICHIESTA_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE
);
IF V_COUNT_RICH = 0 THEN
-- FILE XML POSSIBILE DA CANCELLARE
vb_delete := true;
END IF;
ELSIF R_XML_IN.TIPO_FILE IN (3) THEN
-- VERIFICO LE RICHIESTE CONTENUTE NEL FILE
-- PER IL PROCESSO PORTING (MNP_GESTIONE_RICHIESTA_PORTING)
SELECT COUNT(*)
INTO V_COUNT_RICH
FROM MNP_GESTIONE_RICHIESTA_PORTING
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA
FROM MNP_XML_RICHIESTA_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE
);
IF V_COUNT_RICH = 0 THEN
-- FILE XML POSSIBILE DA CANCELLARE
vb_delete := true;
END IF;
END IF;
--
-- PROCEDO ALLA STORICIZZAZIONE E CANCELLAZIONE
if vb_delete then
-- SALVO IL FILE E I RECORD COLLEGATI
-- NELLE TABELLE DI STORICO
INSERT /* +APPEND */ INTO HIST_XML_ACK_IN
SELECT * FROM MNP_XML_ACK_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_RICHIESTA_IN
SELECT * FROM MNP_XML_RICHIESTA_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_IN
SELECT * FROM MNP_XML_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_ACK_OUT
SELECT * FROM MNP_XML_ACK_OUT
WHERE NOME_FILE_RIFERITO = R_XML_IN.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_OUT
SELECT * FROM MNP_XML_OUT
WHERE NOME_FILE IN
( SELECT NOME_FILE FROM MNP_XML_ACK_OUT
WHERE NOME_FILE_RIFERITO = R_XML_IN.NOME_FILE
);
-- PROCEDO ALLA CANCELLAZIONE
DELETE MNP_RICHIESTA_DUP
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
DELETE MNP_RICHIESTA_PORTING_DUP
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
DELETE MNP_XML_ACK_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
DELETE MNP_XML_RICHIESTA_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
DELETE MNP_XML_IN
WHERE NOME_FILE = R_XML_IN.NOME_FILE;
--
DELETE MNP_XML_OUT
WHERE NOME_FILE IN
( SELECT NOME_FILE FROM MNP_XML_ACK_OUT
WHERE NOME_FILE_RIFERITO = R_XML_IN.NOME_FILE
);
--
DELETE MNP_XML_ACK_OUT
WHERE NOME_FILE_RIFERITO = R_XML_IN.NOME_FILE;
--
COMMIT;
end if;
END LOOP;
--
--
-- Ciclo sui file XML IN USCITA che potrebbero essere eliminati
FOR R_XML_OUT IN
( SELECT * FROM MNP_XML_OUT
WHERE DATA_EFF < P_DATA
AND TIPO_FILE IN (2,5,6,10,11,12,1,9,13,6)
)
LOOP
vb_delete := false;
IF R_XML_OUT.TIPO_FILE IN (2,5,6,10,11,12) THEN
-- VERIFICO LE RICHIESTE CONTENUTE NEL FILE
-- PER IL PROCESSO DONOR (MNP_GESTIONE_RICHIESTA)
SELECT COUNT(*)
INTO V_COUNT_RICH
FROM MNP_GESTIONE_RICHIESTA
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA
FROM MNP_XML_RICHIESTA_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE
);
IF V_COUNT_RICH = 0 THEN
-- FILE XML POSSIBILE DA CANCELLARE
vb_delete := true;
END IF;
ELSIF R_XML_OUT.TIPO_FILE IN (1,9,13) THEN
-- VERIFICO LE RICHIESTE CONTENUTE NEL FILE
-- PER IL PROCESSO DONOR (MNP_GESTIONE_RICHIESTA_REC)
SELECT COUNT(*)
INTO V_COUNT_RICH
FROM MNP_GESTIONE_RICHIESTA_REC
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA
FROM MNP_XML_RICHIESTA_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE
);
IF V_COUNT_RICH = 0 THEN
-- FILE XML POSSIBILE DA CANCELLARE
vb_delete := true;
END IF;
ELSIF R_XML_OUT.TIPO_FILE IN (6) THEN
-- VERIFICO LE RICHIESTE CONTENUTE NEL FILE
-- PER IL PROCESSO PORTING (MNP_GESTIONE_RICHIESTA_PORTING)
SELECT COUNT(*)
INTO V_COUNT_RICH
FROM MNP_GESTIONE_RICHIESTA_PORTING
WHERE ID_RICHIESTA IN
( SELECT ID_RICHIESTA
FROM MNP_XML_RICHIESTA_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE
);
IF V_COUNT_RICH = 0 THEN
-- FILE XML POSSIBILE DA CANCELLARE
vb_delete := true;
END IF;
END IF;
--
-- PROCEDO ALLA VERIFICA DELLA CANCELLAZIONE
if vb_delete then
-- SALVO IL FILE E I RECORD COLLEGATI
-- NELLA TABELLE DI STORICO
INSERT /* +APPEND */ INTO HIST_XML_ACK_OUT
SELECT * FROM MNP_XML_ACK_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_RICHIESTA_OUT
SELECT * FROM MNP_XML_RICHIESTA_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_OUT
SELECT * FROM MNP_XML_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_ACK_IN
SELECT * FROM MNP_XML_ACK_IN
WHERE NOME_FILE_RIFERITO = R_XML_OUT.NOME_FILE;
--
INSERT /* +APPEND */ INTO HIST_XML_IN
SELECT * FROM MNP_XML_IN
WHERE NOME_FILE IN
( SELECT NOME_FILE FROM MNP_XML_ACK_IN
WHERE NOME_FILE_RIFERITO = R_XML_OUT.NOME_FILE
);
--
-- PROCEDO ALLA CANCELLAZIONE
DELETE MNP_XML_ACK_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE;
--
DELETE MNP_XML_RICHIESTA_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE;
--
DELETE MNP_XML_OUT
WHERE NOME_FILE = R_XML_OUT.NOME_FILE;
--
DELETE MNP_XML_IN
WHERE NOME_FILE IN
( SELECT NOME_FILE FROM MNP_XML_ACK_IN
WHERE NOME_FILE_RIFERITO = R_XML_OUT.NOME_FILE
);
--
DELETE MNP_XML_ACK_IN
WHERE NOME_FILE_RIFERITO = R_XML_OUT.NOME_FILE;
--
COMMIT;
end if;
END LOOP;
--
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati per tabelle XML');
--
EXCEPTION WHEN OTHERS THEN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' ERRORE NELLA STORICIZZAZIONE TABELLE XML '||SQLERRM);
ROLLBACK;
END P_SVECCHIA_TAB_XML;
-- ####################### --
--
--
-- ####################### --
PROCEDURE P_SVECCHIA_TABELLE_GENERALI (P_DATA DATE, p_puntatore_file_log UTL_FILE.file_type) IS
BEGIN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio cancellazione dati per tabelle generali');
--
DELETE MNP_BIT_SCARTI_IN
WHERE DATA_INSERIMENTO < P_DATA;
--
DELETE MNP_CIRCE_OUT_SCARTI
WHERE DATA_INSERIMENTO < P_DATA;
--
DELETE MNP_GISP_SCARTO_ATT_CESS_IN
WHERE DATA_RICEZIONE < P_DATA;
--
DELETE MNP_GISP_SCARTO_NOTIFICA_IN
WHERE DATA_RICEZIONE < P_DATA;
--
DELETE MNP_MSC_SCARTI_IN
WHERE DATA_INSERIMENTO < P_DATA;
--
DELETE MNP_MSP_SCARTI_IN
WHERE DATA_INSERIMENTO < P_DATA;
--
DELETE MNP_MSP_SCARTO_TC_IN
WHERE DATA_RICEZIONE < P_DATA;
--
DELETE MNP_MSS_SCARTI_IN
WHERE DATA_INSERIMENTO < P_DATA;
--
DELETE MNP_MVNO_SCARTO_PORTING_IN
WHERE DATA_RICEZIONE < P_DATA;
--
DELETE MNP_MVNO_SCARTO_TC_IN
WHERE DATA_RICEZIONE < P_DATA;
--
DELETE MNP_MVNO_SCARTO_UPDATE_DCO_IN
WHERE DATA_RICEZIONE < P_DATA;
--
DELETE MNP_MVNO_SCARTO_VALIDAZ_IN
WHERE DATA_RICEZIONE < P_DATA;
--
DELETE MNP_PRJHOC_DONOR
WHERE CODICE_GRUPPO NOT IN
( SELECT DISTINCT CODICE_GRUPPO FROM MNP_GESTIONE_RICHIESTA);
--
DELETE MNP_XML_ACK_IN_FP
WHERE NOME_FILE_RIFERITO IN
( SELECT NOME_FILE FROM MNP_XML_OUT_FP
WHERE DATA_INVIO < P_DATA
);
--
DELETE MNP_XML_ACK_OUT_FP
WHERE NOME_FILE_RIFERITO IN
( SELECT NOME_FILE FROM MNP_XML_IN_FP
WHERE DATA_EFF < P_DATA
);
--
DELETE MNP_XML_IN_FP
WHERE DATA_EFF < P_DATA;
--
DELETE MNP_XML_OUT_FP
WHERE DATA_INVIO < P_DATA;
--
DELETE MNP_XML_RIPETIZIONI_IN
WHERE DATA_EFF < P_DATA;
--
DELETE MNP_XML_RIPETIZIONI_OUT
WHERE DATA_EFF < P_DATA;
--
DELETE MNP_XML_SCARTO
WHERE DATA_EFF < P_DATA;
--
COMMIT;
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione dati per tabelle generali');
EXCEPTION WHEN OTHERS THEN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' ERRORE NELLA STORICIZZAZIONE TABELLE GENERALI '||SQLERRM);
ROLLBACK;
END P_SVECCHIA_TABELLE_GENERALI;
-- ####################### --
--
--
-- ####################### --
-- Procedura che verifica le partizioni da droppare
PROCEDURE P_ELIMINA_PARTIZIONI (P_DATA DATE, p_puntatore_file_log UTL_FILE.file_type) IS
v_data_massima_part date;
v_partition_name varchar2(30);
v_high_value varchar2(1000);
v_count number;
CURSOR c_part_tab (p_table_name varchar2) is
select partition_name, high_value
from user_tab_partitions
where table_name = p_table_name
and high_value is not null
order by partition_position;
BEGIN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio cancellazione partizioni');
-- ESTRAZIONE DELLE TABELLE PARTIZIONATE PER LE QUALI DROPPARE LE PARTIZIONI
-- ESCLUDENDO DELLE TABELLE PER LE QUALI NON SI DEVE FARE NESSUNA AZIONE
FOR R_PART IN
( SELECT TP.TABLE_NAME
FROM USER_TABLES TP WHERE TP.PARTITIONED = 'YES'
AND TP.TABLE_NAME NOT IN ('MNP_XML_IN','MNP_XML_OUT', 'HIST_GESTIONE_RICHIESTA',
'HIST_GESTIONE_RICHIESTA_REC', 'HIST_GEST_RICH_DONOR_VIRT', 'HIST_GEST_RICH_DON_TC',
'HIST_GEST_RICH_DON_VIRT_TC', 'HIST_GEST_RICH_REC_TC', 'HIST_GEST_RICH_REC_VIRT',
'HIST_GEST_RICH_REC_VIRT_TC', 'HIST_SVECCHIA_DONOR', 'HIST_SVECCHIA_DONVIRT',
'HIST_SVECCHIA_RECIPIENT', 'HIST_SVECCHIA_RECVIRT', 'HIST_GESTIONE_RICHIESTAPORTING',
'HIST_SVECCHIA_PORTING','HIST_XML_ACK_IN', 'HIST_XML_ACK_OUT', 'HIST_XML_IN',
'HIST_XML_OUT', 'HIST_XML_RICHIESTA_IN', 'HIST_XML_RICHIESTA_OUT', 'MNP_XML_ACK_IN',
'MNP_XML_ACK_OUT','MNP_XML_RICHIESTA_IN', 'MNP_XML_RICHIESTA_OUT', 'MNP_CCRMW_COOP_NOT_OUT',
'BCK_SID_IN', 'BCK_CRM_VALIDAZIONE_IN', 'BCK_CRM_VALIDAZIONE_OUT')
)
LOOP
OPEN c_part_tab(R_PART.TABLE_NAME);
LOOP
FETCH c_part_tab INTO v_partition_name, v_high_value;
EXIT WHEN c_part_tab%NOTFOUND;
-- trasformazione della stringa in data per verificare se <20> possibile eliminarla
execute immediate 'select '||v_high_value||' from dual' into v_data_massima_part;
-- verifica della data della partizione
if v_data_massima_part <= p_data then
-- controllo di presenza di record nella partizione in elaborazione
execute immediate 'select count(*) from '||R_PART.TABLE_NAME||' partition ('||v_partition_name||')'into v_count;
if v_count = 0 then
-- NESSUN DATO NELLA PARTIZIONE
-- PROCEDO AL DROP
execute immediate 'alter table '||R_PART.TABLE_NAME||' drop partition '||v_partition_name||' update global indexes';
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Eliminata partizione '||v_partition_name||
' della tabella '||R_PART.TABLE_NAME);
else
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Impossibile Eliminare partizione '||v_partition_name||
' della tabella '||R_PART.TABLE_NAME||' per la presenza di dati');
end if;
else
CLOSE c_part_tab;
exit;
end if;
END LOOP;
END LOOP;
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine cancellazione partizioni');
EXCEPTION WHEN OTHERS THEN
UTL_FILE.PUT_LINE(p_puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' ERRORE NELLA PROCEDURA DI ELIMINAZIONE DELLE PARTIZIONI '||SQLERRM);
END P_ELIMINA_PARTIZIONI;
--
--
PROCEDURE P_CHECK_START_STOP (P_FLAG_START NUMBER, P_DATA_STORICIZZAZIONE DATE, P_DATA_ESECUZIONE IN OUT DATE)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
V_REC NUMBER;
BEGIN
-- GESTIONE DELLO START DELLA STORICIZZAZIONE
IF P_FLAG_START = 1 THEN
-- VERIFICA SE C'E' GIA' IN ESECUZIONE LA PROCEDURA
SELECT COUNT(*)
INTO V_REC
FROM HIST_GESTIONE_ESECUZIONI
WHERE IS_RUNNING = 1;
--
-- se non trovo niente in esecuzione
-- scrivo il record di start r valorizzo il parametro P_DATA_ESECUZIONE
-- In caso contrario il parametro P_DATA_ESECUZIONE
-- rimane non valorizzato cos<6F> da non permettere l'avvio della storicizzazione
IF V_REC = 0 THEN
P_DATA_ESECUZIONE := SYSDATE;
-- SCRITTURA DEL RECORD PER BLOCCARE ESECUZIONI CONCORRENTI
INSERT INTO HIST_GESTIONE_ESECUZIONI (DATA_STORICIZZAZIONE, DATA_ESECUZIONE, IS_RUNNING)
VALUES (P_DATA_STORICIZZAZIONE, P_DATA_ESECUZIONE, 1);
COMMIT;
END IF;
ELSE
-- GESTIONE DELLO STOP DELLA STORICIZZAZIONE
UPDATE HIST_GESTIONE_ESECUZIONI
SET IS_RUNNING = 0
WHERE DATA_STORICIZZAZIONE = P_DATA_STORICIZZAZIONE
AND DATA_ESECUZIONE = P_DATA_ESECUZIONE;
COMMIT;
END IF;
END P_CHECK_START_STOP;
-- procedura per lo storicizzazione da inserire in crontab:
-- considera la data di oggi - 13 mesi e richiama la procedura principale
PROCEDURE P_MAIN_STORICIZZAZIONE IS
BEGIN
P_MAIN_STORICIZZAZIONE(ADD_MONTHS(TRUNC(SYSDATE),-13));
END P_MAIN_STORICIZZAZIONE;
--
--
-- ################################################ --
-- PROCEDURA PRINCIPALE CHE RICHIAMA LA STORICIZZAZIONE
-- PER I VARI PROCESSI
-- ################################################ --
PROCEDURE P_MAIN_STORICIZZAZIONE (P_DATA DATE) IS
puntatore_file_log UTL_FILE.FILE_TYPE;
v_data_esecuzione date;
BEGIN
-- scrittura log
puntatore_file_log := UTL_FILE.FOPEN(path_file_log,'svecchiamento_'||to_char(sysdate, 'ddmmyyyy_hh24miss')||'.log','a');
--
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio Procedura di storicizzazione con data in ingresso '||to_char(P_DATA,'dd-mm-yyyy'));
--
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Verifica data in ingresso < 13 mesi');
--
if P_DATA <= add_months(trunc(sysdate),-13) then
--
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Verifica lanci concorrenti');
--
-- VERIFICA SE E' IN ESECUZIONE GIA' UN PROCESSO DI STORICIZZAZIONE
P_CHECK_START_STOP(1,P_DATA,v_data_esecuzione);
-- La procedura di check valorizza v_data_esecuzione
-- se non trova esecuzioni concorrenti
if v_data_esecuzione is not null then
P_SVECCHIA_DONOR_E_RECVIRT(P_DATA, puntatore_file_log);
-- scrittura del log per lo svecchiamento sopra eseguito
UTL_FILE.fflush(puntatore_file_log);
--
P_SVECCHIA_RECIPIENT_E_DONVIRT(P_DATA, puntatore_file_log);
-- scrittura del log per lo svecchiamento sopra eseguito
UTL_FILE.fflush(puntatore_file_log);
--
P_SVECCHIA_PORTING(P_DATA, puntatore_file_log);
-- scrittura del log per lo svecchiamento sopra eseguito
UTL_FILE.fflush(puntatore_file_log);
--
P_SVECCHIA_TAB_XML(P_DATA, puntatore_file_log);
-- scrittura del log per lo svecchiamento sopra eseguito
UTL_FILE.fflush(puntatore_file_log);
--
P_SVECCHIA_TABELLE_GENERALI(P_DATA, puntatore_file_log);
-- scrittura del log per lo svecchiamento sopra eseguito
UTL_FILE.fflush(puntatore_file_log);
--
P_ELIMINA_PARTIZIONI(P_DATA, puntatore_file_log);
-- scrittura del log per lo svecchiamento sopra eseguito
UTL_FILE.fflush(puntatore_file_log);
-- CHIUSURA DEL RECORD DI START
P_CHECK_START_STOP(0,P_DATA,v_data_esecuzione);
else
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Trovata procedura di svecchiamento in esecuzione. Impossibile lanciarne un''altra in parallelo');
end if;
else
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Impossibile eseguire la storicizzazione. La data in ingresso deve essere almeno pi<70> vecchia di 13 mesi.');
end if;
--
--
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine Procedura di svecchiamento');
--
UTL_FILE.FCLOSE(puntatore_file_log);
END P_MAIN_STORICIZZAZIONE;
END PKG_STORICIZZAZIONE;
/