sql >> Databasteknik >  >> RDS >> Oracle

Bakgrundsprocesser

Jag svär att när jag kommer längre och längre i min Oracle-karriär har jag svårare och svårare att hänga med i Oracles bakgrundsprocesser. Jag skulle vilja räkna upp det här till att bli äldre, men efter att ha grävt i det är jag ganska säker på att det bara är Oracles explosion av bakgrundsprocesser i 11g som gör att jag passar.

Tidigare idag tittade jag på en produktionsdatabas prestandaflik i Grid Control. Mitt 3-nods RAC-kluster upplevde hög CPU så jag borrade ner och märkte att majoriteten av CPU-cyklerna kom från en bakgrundsprocess som heter NSA2. Vad?!?!?! Vad är NSA2? Jag är ganska säker på att detta inte har något med nationell säkerhet att göra.

När jag gjorde en Google-sökning av denna bakgrundsprocess, stötte jag på en fiffig fråga för att ge dig en snabb beskrivning av varje Oracle-bakgrundsprocess. Du måste köra detta som SYS eftersom det frågar 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-databas returnerade denna fråga 296 rader! Inte konstigt att jag inte kan hänga med. Jag minns när jag kunde lista alla bakgrundsprocesser ovanför mitt huvud (SMON, PMON, ARCH, DBWR, LGWR, CKPT och RECO). Varje ny Oracle-version ökar antalet bakgrundsprocesser, vilket förmodligen är bra. Men det gör det svårt för DBA att diagnostisera problem ibland.

Så vad är NSA2? Det är en redo-transportprocess som ansvarar för att skicka arkiverade redo-loggar till min Standby-databas. När jag såg beskrivningen från frågan ovan var det uppenbart.

Så läs igenom din databas för att se alla underbara bakgrundsprocesser du kan möta på dina resor. En av mina favoriter i listan är TEST.

Uppdatering – 2012-09-12 – Efter att jag skrev det här blogginlägget upptäckte jag att Oracle redan har dokumenterat bakgrundsprocesserna i Appendix F i databasreferensen. Jag är inte säker på när Oracle startade den här bilagan och om jag hade vetat om det, skulle jag bara ha kollat ​​upp NSAx-processen. Men skriptet ovan är fortfarande roligt och kan användas för att upptäcka nya bakgrundsprocesser som Oracle inte har dokumenterat.


  1. SQL SELECT-sats

  2. Hur man får antalet bitar i en sträng i MySQL – BIT_LENGTH()

  3. Hur får jag det aktuella tidszonsnamnet i Postgres 9.3?

  4. Kalkylblad kontra databaser:Är det dags att byta? Del 2