Senin, 28 Juni 2010

The Oracle RDBMS

Because we'll be talking about the Oracle RDBMS in depth in later sections, we'll simply cover a few of the more important details here. One of the major differences between Oracle running on Windows and Oracle running on UNIX-based platforms is the number of processes that combine to create the actual RDBMS. On Windows there is simply the oracle.exe process, but on UNIX platforms there are multiple processes each responsible for some part of functionality. Using ps we can list these processes:

$ ps -ef | grep oracle
oracle 17749 1 0 11:26:13 ? 0:00 ora_pmon_orasidsol
oracle 10109 1 0 Sep 18 ? 0:01 /u01/oracle/product/9.2.0/bin/tnslsnr listener920 -inherit
oracle 17757 1 0 11:26:16 ? 0:01 ora_smon_orasidsol
oracle 17759 1 0 11:26:17 ? 0:00 ora_reco_orasidsol
oracle 17751 1 0 11:26:15 ? 0:01 ora_dbw0_orasidsol
oracle 17753 1 0 11:26:16 ? 0:01 ora_lgwr_orasidsol
oracle 17755 1 0 11:26:16 ? 0:05 ora_ckpt_orasidsol
oracle 17762 1 0 11:30:59 ? 1:34 oracleorasidsol (LOCAL=NO)

Each RDBMS process has the name of the database SID appended to it—in this case orasidsol. The following list looks at each process and discusses what each does.

  • The PMON process. This is the Process Monitor process and its job is to check if any of the other processes fail, and perform housekeeping tasks if one does such as free handles and so on.

  • The SMON process. This is the System Monitor process and it is responsible for crash recovery if a database instance crashes.

  • The RECO process. This is the Distributed Transaction Recovery process and handles any unresolved transactions.

  • The DBWR process. This is the Database Writer process. There may be many such processes running. From the preceding ps listing we can see only one—numbered 0.

  • The LGWR process. This is the Log Writer process and is responsible for handling redo logs.

  • The CKPT process. This is the Checkpoint process and every so often it nudges the Database Writer process to flush its buffers.

All of these background processes are present on Windows, too; they're just all rolled up into the main oracle.exe process.

The oracleorasidsol process is what is termed the shadow or server process. It is actually this process that the client interacts with. Information about processes and sessions is stored in the V$PROCESS and V$SESSION tables in SYS schema.

chapter 2 (2)

The Database Hacker's Handbook: Defending Database Servers
by David Litchfield et al.
John Wiley & Sons © 2005