What signals do the DBWn processes send to LGWR

oracleoracle-11g

I'm preparing to take the OCA exam.

I would really like to know what signals are in the following quote from the Process Architecture docs, and how does DBWn know LGWR has completed?

Before DBWn can write a modified buffer, all redo records that are associated with the changes to the buffer must be written to disk (the write-ahead protocol). If DBWn finds that some redo records have not been written, it signals LGWR to write the redo records to disk and waits for LGWR to complete writing the redo log buffer before it can write out the data buffers.

Best Answer

Actually, you're not required to have that deep knowledge for OCA exam, you just need to know which processes are required for database to function (PMON, SMON, DBWR, LGWR, CKPT, MMON, MMNL, RECO), some other processes that may be required when you configure other database options such as ARCHIVELOG database mode, what each of these processes does, and how they communicate with each other in rough outline.

As far as inter-process communication (IPC) is concerned, it is quite possible, for example, that on *nix, Oracle uses POSIX calls for communication, whereas on Windows it uses Windows API calls, in other words, the way Oracle implements inter-process communication differs between platforms because these platforms are implemented differently.

If you're preparing for OCA exam, you may already know (and you really should know) the memory architecture of Oracle, and that there's an area of memory called System Global Area (SGA). This memory area is used to keep the information used by many background and foreground processes including server processes and shared server processes (when Shared Server Architecture is used).

There's also the Fixed SGA area within the SGA which contains:

Information communicated between processes, such as information about locks

You can also determine if Oracle allocates some IPC resources on *nix if you run ipcs command before and after you start up the database. (I stumbled upon this in this AskTom article).

Therefore, you can see that Oracle uses both system calls, and shared memory to share information between Oracle processes.