Jeg sværger, at efterhånden som jeg kommer længere og længere i min Oracle-karriere, har jeg sværere og sværere ved at følge med i Oracles baggrundsprocesser. Jeg kunne godt tænke mig at opgøre dette til at blive ældre, men efter at have gravet i det, er jeg ret sikker på, at det kun er Oracles eksplosion af baggrundsprocesser i 11g, der får mig til at passe.
Tidligere i dag så jeg en produktionsdatabase ydeevnefane i Grid Control. Min 3-node RAC-klynge oplevede høj CPU, så jeg borede ned og bemærkede, at størstedelen af CPU-cyklusserne var fra en baggrundsproces ved navn NSA2. Hvad?!?!?! Hvad er NSA2? Jeg er ret sikker på, at dette ikke har noget at gøre med national sikkerhed.
Da jeg lavede en Google-søgning af denne baggrundsproces, stødte jeg på en smart forespørgsel for at give dig en hurtig beskrivelse af hver Oracle-baggrundsproces. Du bliver nødt til at køre dette som SYS, da det forespørger på X$-tabeller:
column EXTERNAL_NAME format a13
;
column INTERNAL_NAME format a13
set lin 120
SELECT x$ksbdd.ksbddidn AS external_name,
x$ksmfsv.ksmfsnam AS internal_name, x$ksbdd.ksbdddsc AS description
FROM x$ksbdd, x$ksbdp, x$ksmfsv
WHERE x$ksbdd.indx = x$ksbdp.indx AND x$ksbdp.addr = x$ksmfsv.ksmfsadr
ORDER BY 1
I min 11.2.0.2-database returnerede denne forespørgsel 296 rækker! Ikke underligt, at jeg ikke kan følge med. Jeg kan huske, da jeg kunne liste alle baggrundsprocesserne fra toppen af mit hoved (SMON, PMON, ARCH, DBWR, LGWR, CKPT og RECO). Hver ny Oracle-version øger antallet af baggrundsprocesser, hvilket sandsynligvis er en god ting. Men det gør det nogle gange svært for DBA at diagnosticere problemer.
Så hvad er NSA2? Det er en gentransportproces, der er ansvarlig for forsendelse af arkiverede redo-logfiler til min Standby-database. Da jeg så beskrivelsen fra forespørgslen ovenfor, var det indlysende.
Så læs i din database for at se alle de vidunderlige baggrundsprocesser, du kan møde på dine rejser. En af mine favoritter på listen er TEST.
Opdatering – 09/12/2012 – Efter jeg skrev dette blogindlæg, fandt jeg ud af, at Oracle allerede har dokumenteret baggrundsprocesserne i appendiks F i databasereferencen. Jeg er ikke sikker på, hvornår Oracle startede dette appendiks, og hvis jeg havde kendt til det, ville jeg bare have slået NSAx-processen op. Men scriptet ovenfor er stadig sjovt og kan bruges til at opdage nye baggrundsprocesser, som Oracle ikke har dokumenteret.