-- -- $Id$ -- -- Meetwaarden opruim script. -- Hetzelfde als ARAI#25591 maar dan gewoon met een delete -- Om regelmatig toe te passen. -- We verwijderen ze per week om de transacties niet al te groot te maken -- Daarbij beginnen we een jaar terug, er van uitgaande dat je dit script -- echt wel eens per jaar draait. -- Reken op zo'n 5 minuten om 1063733 records terug te brengen tot 287947 -- (2 maand data) DEFINE thisfile = 'ARAI#37152.sql' DEFINE dbuser = '^ARAI' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; WHENEVER SQLERROR EXIT; SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL; WHENEVER SQLERROR CONTINUE; SPOOL &fcltlogfile SET DEFINE OFF ------ payload begin ------ SET SERVEROUTPUT ON SIZE UNLIMITED; SELECT COUNT(*) FROM ins_kenmerkdeel; DECLARE week NUMBER (10); BEGIN FOR week IN REVERSE 0 .. 52 LOOP DBMS_OUTPUT.put_line (TO_CHAR(SYSDATE, 'HH24:MI:SS') || ' Week: ' || TO_CHAR (week)); DELETE FROM ins_kenmerkdeel ikd WHERE ins_kenmerkdeel_aanmaak < SYSDATE - 30 - 7 * week -- Filteren op alle records die weg moeten AND ins_kenmerkdeel_verwijder IS NOT NULL AND EXISTS (SELECT 1 FROM ins_kenmerk ik, ins_deel idd WHERE ikd.ins_kenmerk_key = ik.ins_kenmerk_key AND ikd.ins_deel_key = idd.ins_deel_key AND ik.ins_kenmerk_meetwaarde = 1); COMMIT; END LOOP; END; / SELECT COUNT(*) FROM ins_kenmerkdeel; ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 1); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile