Files
Customer/onces/CSUN/CSUN#90600_verwijderenALG.sql
Sander Schepers e4b860378d CSUN#90600 Er zijn heel veel onnodige gebouwen/verdiepingen/ruimten aangemaakt vanuit de daily procedure update_vastgoed. Die worden vervolgens (omdat ze overbodig zijn) de volgende dag met dezelfde daily weer weggegooid.
Daarmee zijn er 155.353 gebouwen, 1.986.209 verdiepingen en 1.986.209 ruimten die verwijderd kunnen worden. 
Hiervoor dit once-script. Deze wordt getoetst op een database recente ververst vanuit de productieomgeving (gisteravond).

svn path=/Customer/; revision=70541
2025-10-06 14:07:18 +00:00

78 lines
2.6 KiB
SQL

--
-- $Id$
--
-- Korte beschrijving wat het script doet
-- Onnodige gebouwen/verdiepingen/ruimten die steeds maar 1 dag hebben bestaan mogen helemaal verwijderd worden uit de database, daar staat niets aan gekoppeld.
-- Daarvoor zal er een once script gemaakt worden, dit zorgt nu voor een onnodige performance-belasting.
-- Er zijn vanaf 16 september tot en met 30 september volgend aantal gebouwen/verdiepingen/ruimten die direct de dag erop zijn verwijderd:
-- 155.353 gebouwen;
-- 1.986.209 verdiepingen;
-- 1.986.209 ruimten;
DEFINE thisfile = 'CSUN#90600.SQL'
DEFINE dbuser = '^CSUN'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
WHENEVER SQLERROR CONTINUE;
PROMPT &fcltcusterr
SET DEFINE OFF
------ payload begin ------
DECLARE
v_min_date DATE := TO_DATE('16-09-2025','DD-MM-YYYY');
BEGIN
/* 1) RUIMTES eerst */
DELETE FROM alg_ruimte r
WHERE TRUNC(r.alg_ruimte_aanmaak) = TRUNC(r.alg_ruimte_verwijder) - 1
AND r.alg_ruimte_key NOT IN (
SELECT alg_ruimte_key
FROM prs_v_perslidwerkplek_gegevens)
AND r.alg_ruimte_aanmaak >= v_min_date;
/* 2) VERDIEPINGEN daarna (alleen als er geen ruimtes meer onder hangen) */
DELETE FROM alg_verdieping v
WHERE TRUNC(v.alg_verdieping_aanmaak) = TRUNC(v.alg_verdieping_verwijder) - 1
AND v.alg_verdieping_key NOT IN (
SELECT alg_verdieping_key
FROM prs_v_perslidwerkplek_gegevens)
AND v.alg_verdieping_aanmaak >= v_min_date
AND NOT EXISTS (
SELECT 1
FROM alg_ruimte r
/* 3) GEBOUWEN tot slot (alleen als er geen verdiepingen meer onder hangen) */
DELETE FROM alg_gebouw g
WHERE TRUNC(g.alg_gebouw_aanmaak) = TRUNC(g.alg_gebouw_verwijder) - 1
AND g.alg_gebouw_key NOT IN (
SELECT alg_gebouw_key
FROM prs_v_perslidwerkplek_gegevens)
AND g.alg_gebouw_aanmaak >= v_min_date
AND NOT EXISTS (
SELECT 1
FROM alg_verdieping v
WHERE v.alg_gebouw_key = g.alg_gebouw_key);
END;
/
------ 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