65 lines
1.8 KiB
SQL
65 lines
1.8 KiB
SQL
--
|
|
-- $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
|
|
|