rudolf_kleurenbalk.png

Ruimtebesparing blijkt beheersnachtmerrie

Een laadproces haalde data op uit een ander systeem via een databaselink. Om ruimte te sparen, werd één query afgevuurd op de brondatabase die alle benodigde data (een join over 6 hele grote tabellen) in een keer terug zou geven.

Aangezien het andere systeem beheerd werd door een externe leverancier mocht de query daar niet worden geinstalleerd. Oracle gaat niet goed om met een complexe query over een databaselink, waardoor de query vaak vastliep met een voor de kenners beruchte ‘snapshot too old’ foutmelding. Dit is een onbegrepen foutmelding met eigenlijk altijd de zelfde oorzaak: een inefficiente query die te lang draait.

De oplossing was simpel: Alle tabellen uit het bronsysteem (bij voorkeur alleen gewijzigde data) kopiëren naar een staging tabel in de datawarehouse database en daar verder verwerken. Dat staat ook als aanbeveling in alle handboeken.

Dus een besparing van enige tientallen MB’s had tot resultaat een beheersnachtmerrie en ontevreden gebruikers. Een goed voorbeeld van de noodzaak van standaardisatie en dat je je niet moet blindstaren op één aspect.

Tip: Kopieer je brondata altijd eerst naar de staging area. Dit geldt ook voor external tables en vergelijkbare technieken.

scheidingslijntje