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 č 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ė 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ų 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; /