Tuesday, December 9, 2008

What can I kill?

Fairly often, I have to kill Oracle background processes. At first this probably seems crazy. Do I want to destroy my database?

No, it is SOP. Archivers (ARCn) are my favorite targets. You can solve all kinds of problems by killing the archivers and letting them be automatically restarted. Often issues with redo transport services (Streams, CDC, Logical Data Guard) can be solved by forcing the archivers to restart.

Another time you might want to kill a background process is if it is leaking memory.

Unfortunately, there are many processes in Oracle that cannot be killed. Off the top of your head you might mention PMON, SMON and LGWR. Is there anyplace in the documentation that breaks down which you can kill without terminating the instance? No. So I experimented on 11g with these results:

Killable:
ARCn: Redo log archivers
CJQn: Job scheduler coordinator
Dnnn: Dispatchers
DIA0: Diagnosibility process 0
DIAG: Diagnosibility coordinator
FDBA: Flashback data archiver process
Jnnn: Job scheduler processes
MMNL: Manageability Monitor Process 2
MMON: Manageability Monitor Process
PING: Interconnect latency measurement
Qnnn: Queue cleanup processes
QMNC: Queue coordinator
RECO: Distributed recovery process
Snnn: Shared servers
SMCO: Space management coordinator
Wnnn: Space management processes

Instance-Critical:
ACMS: Atomic controlfile to memory server
CKPT: Checkpoint
DBRM: Resource manager process
DBWn: Database writer processes
LGWR: Redo log writer
LMDn: Global enqueue service daemons
LMON: Global enqueue service monitor
MMAN: Memory manager
PMON: Process monitor
PSPn: Process spawners
RMSn: RAC management server
RVWR: Recovery writer
SMON: System monitor process
VKTM: Virtual keeper of time process

3 comments:

bill.coulam said...

Jeremiah, I attended your presentation at RMOUG. You'd mentioned both this list and presentation would be at your blog. Having a hard time finding it. Any chance you can post a link here? It is not on the RMOUG scheduler site or CD. Thanks!

Yong Huang said...

Hi, Jeremiah, Dominica Leung recommended I take at your profile. Very impressing! By the way, there's a way in 10g to find if killing a process is safe. In my "Oracle Viewed from OS" (http://yong321.freeshell.org/computer/OracleViewedFromOS.doc)
I said "Beginning with 10g, Oracle background processes on UNIX/Linux have an environment variable SKGP_HIDDEN_ARGS. Its first attribute can tell you whether killing this process would crash the instance"

Piyush Chourasia said...

Jeremiah, Could you please let me know how can I kill and restart ARCn, LGWR, DBWR, CKPT, PMON, SMON background processess (though it is mandatory) ?
This would be great help...