db.dobo.sk

prehľad background procesov na Ora11g2 inštancii

bez komentára

Aby som mal rýchlu referenciu, hlavne čo sa týka nepovinných processov.

Background procesy spolu so SGA tvoria inštanciu. V zásade sa dajú rozdeliť na:

  • povinné (mandatory) – bežia vždy, keď je database startup
  • nepoviné (optional) – podľa konfigurácie a požiadavkov

Všeobecne sa dajú vylistovať pomocou utilít OS (ps), alebo dotazom do systémového katalógu (V$SESSIONS, V$PROCESS). Katalógový view V$PROCESS je obzvlášť užitočný – obsahuje i identifikátory procesov v rámci inštancie, v rámci OS, pamäťové nároky v SGA, cesty k tracelogom jednotlivých procesov a pod…

$ ps -ef | grep ora_ | grep SID
SQL> SELECT sid, name FROM v$session WHERE type = 'background';

Zoznam a popis povinných procesov

SMON

Jest system monitor. Nastupuje pri havárii inštancie (napr. vypnutie elektriky) – tzv. INSTANCE CRASH RECOVERY.

  • štartuje automaticky v niekoľkominútovom intervale (kde sa to nastavuje? nerozumiem…)
  • prevádza údržbu po štarte, ešte pred OPEN stavom
  • kontroluje, či existujú komitnuté transakcie, ktoré nie sú v datafiles; ak áno, použije redology a transakcie zapíše do datafiles
  • kontroluje, či existujú nejaké nekomitnuté transakcie, ktoré už sú zapísané v datafiles; ak áno, tak ich odvolá pomocou rollback segmentov (undo tables)
  • upratuje bordel v extentoch (???)
  • 1 SMON na 1 inštanciu (platí aj pre RAC)

PMON

Jest proces monitor. Stará sa hlavne o klientské prístupy (sessions) a upratuje ich.

  • štartuje každé 3 sekundy
  • ak je nejaké session, ktorá bola predčasne ukončená, pmon odroluje zmeny back
  • stará sa u uvoľnovanie buffer cache po skončení sessions
  • obhospodaruje dispatcher na shared serveri
  • 1 pmon na 1 inštanciu (jak je to v RAC?)

CKPT

Čekpoint. Stará sa o konzistenciu dát. Nerozumiem celkom, aký vzťah má s DBW a LGWR (je im nadriadený a volá ich?). Asi áno, vzhľadom k tomu, že synchronizuje SCN medzi redologom a datafiles.

  • respawnuje každú sekundu (LOG_CHECKPOINT_TIMEOUT; LOG_CHECKPOINT_INTERVAL)
  • koná vždy, keď sa zaplní db buffer cache (takže asi áno, zavolá DBW)
  • vždy pri switchi redologov, automatickom i manuálnom (ALTER SYSTEM SWITCH LOGFILE)
  • súvisí s DB recovery – MTTR (mean time to recover)
  • 1 ckpt na 1 inštanciu

DBW

Je Database Writer (alebo Data Buffer Writer). Zapisuje údaje z bufferu do datafiles (dirty blocks) a to vždy, keď:

  • dochádza k switchu redo logs, t.j. pri default checkpointe
  • je prekročený prah veľkosti dirty block v bufferu
  • sa DB shutdownuje, alebo tablespace sa alteruje na OFFLINE/BEGIN BACKUP
  • nejaký proces nemôže nájsť čistý buffer block pre nové dáta. Typicky je vracaný nejaký veľký resultset z dotazu do SGA a Oracle nemá kde alokovať pamäť (vyflushovať dirty blocks)

V inštancii môže fungovať až 20 DBW procesov {DBW0-9; DBWa-j}, ale nie je to obvyklé, normálny stav je 1 inštancia/1 DBW. Pokiaľ ich je viac, tak sa môžu trieskať o ten istý data block, čomuž sa predchádza parametrom DB_BLOCK_LRU_LATCHES.

LGWR

Je Log Writer pre redology. Zapisuje dáta z redo bufferov do redologov. Je volaný ďaleko častejšie, nž DBW, pretože redology sú malé (kB až pár málo MB) a prepisujú sa rýchlo. V dobe, keď LGWR zapisuje do redologu, je tento označený ako CURRENT (možné stavy – CURRENT, INACTIVE, ACTIVE).

Kedy sa zapisuje:

  • každé 3 sekundy (fakt, to sa mi nezdá? preveriť)
  • keď je relo buffer plný z 1/3, alebo keď dosiahne jeho objem 1MB
  • keď checkpoint (buď explicitný, alebo pri switchu redologov)
  • keď je potvrdená transakcia (ROLLBACK/COMMIT)

RECO

Recoverer pre transakcie v distribuovaných databázach (two phase commit transactions). V prípade, že niečo zlyhá (napr. sieťové spojenie) a jedna z fází commitu zostane nepotvrdená, tak RECO upratuje – rozhoduje o dokončení 2. commitu, alebo rollbacku.

 Zoznam nepovinných procesov, menej popisu

ARC

Archiver – archivuje redology po switchu do priestoru na to urečeného (ARCHIVELOG ON).  Môže ich byť viac (ARC0-9) a ich počet omedzuje direktíva LOG_ARCHIVE_MAX_PROCESSES

 CJQ

Coordinated Job Queue – stará sa o spúšťanie jobov, ktoré sú nadefinované v JOB$

 TRWR

Trace writer, zápis do trasovacích súborov, len 1 proces na inštanciu.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

locky

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

LMON, LMD, LCK

Lock Monitor – šéfuje globálne locky, hlavne procesov v inštancii. Len 1 proces na 1 inštanciu; Lock Manager Daemon; Lock Process (až 10 na inštanciu) – správa lockov procesov.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

pamäť

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

MMAN, MMON, MMNL

Managery pre správu pamäte (SGA) s rôznymi kompetenciami. Memory manager – nafukuje a sfukuje súčasti SGA (java pool, data buffer a pod.) podľa potreby. Memory monitor – monitoruje a zbiera štatistiky pre AWR. Memory manager light zbiera štatistiky o sessions history.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

asm

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ASMB, RBAL

Procesy pre ASM. ASMB sa stará o diskové zdroje a ich synchronizáciu. Zabezpečuje heartbeat v clusteri. RBAL vykonáva rebalancing.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

shared, paralelizácia

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

D(nnn)

Dispatcher, až do tisíc procesov (parameter MAX_DISPATCHERS). Radí klientské požiadavky (sessions) do fronty na spracovanie, t.j. komunikátor medzi klientskými programami a shared serverovými procesmi.

S(nnn)

Shared server processes, až do 1000.

P(nnn)

Paralel execution, až do 1000 procesov.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

data guard

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 DMON

Data Guard Monitor – hlavný proces a hlavný broker. Štartuje automaticky, pokiaľ beží DG. Jeden proces na 1 inštanciu.

NSV(n)

DG Netserver. Stará sa o konektivitu medzi databázami. Môže ich byť toľko, koľko databáz.

DRC(n)

Je proces na slave databázi, ktorý prijím aspojenie z master databáze (spojenie od NSV).

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

data pump

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 DM(n)

Datapump master, šéfovací proces, ktorý úkoluje datapump workera a zároveň obhospodaruje požiadavky klientov. Vytvára a ruší master table.

DW(n)

Datapump worker – to je hlavný makač, loaduje a unloaduje dáta a metadáta, ktoré poručí master.

 

A naostatok obrázok procesov z ofiko Oracle doku:

ora_proc

píše: ďobo

October 22nd, 2015 o 11:47 am

chlievik: oracle

okomentuj