Kunskaper utan bäst före-datum

2011-09-27

Jag blev för en tid sedan kontaktad av en kund som hade mycket kraftiga driftstörningar på ett nästintill nyinköpt system. Efter omstart fungerade det utmärkt några minuter, men sedan blev det omöjligt att logga in i systemet. Leverantören gjorde några försök att lösa problemet och kom fram till tre kreativa alternativlösningar som kunden tyckte såg misstänkt lika halmstrån, varpå kunden kontaktade Atea.

Jag loggade in via VPN och kunde omgående konstatera att jodå, tjänsterna var igång men databasen var inte det minsta intresserad av att logga in mig. En kik i Oracles ALERT.LOG-fil gav följande information:

ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997
ORA-27301: OS failure message: Overlapped I/O operation is in progress.
ORA-27302: failure occurred at: skgpspawn 

Det var inte igår jag såg det felet, så jag börjar med en liten tillbakablick.

Jag började arbeta med Oracle 1997, och på den tiden var det 32-bitars operativ och databas för hela slanten, samt med dagens mått mätt väldigt små maskiner. Det var ovanligt med mer än 1-2GB internminne, och att slå i taket för 32-bitars Windows minnesadressering var rätt ovanligt. En 32-bitars windowsprocess kan hantera 2GB minne, något högre med växeln /3GB i BOOT.INI. Varje enskild koppling mot Oracle kräver en liten mängd minne, och enkel matematik säger att "många kopplingar" x "lite minne" resulterar i "mycket minne" om värdet för "många kopplingar" är tillräckligt högt. Vilket för oss åter till felmeddelandet - Oracleprocessen har slut på minne och kan inte hantera det. Alls.

Med dagens 64-bitars operativsystem och databaser är det ett ickeexisterande problem. Minne är nästintill gratis, och det är tyvärr mycket enklare att bygga bort problem med hårdvara än att skriva bra kod. Kundens miljö bestod av en 32-bitars Windows 2003 Standard Edition, en likaledes 32-bitars Oracle 10.2 och en maskin med 4GB minne.

Loggen ovan förklarar nästintill i klartext vad som felas - förutsatt att man minns hur det var förr i tiden. Sensmoralen är således att det inte finns något som heter "föråldrade kunskaper"...