Apress.Expert.Oracle.Database.Architecture.9i.and.10g.Programming.Techniques.and.Solutions.Sep.2005

rekharaghuram
from rekharaghuram More from this publisher
05.11.2015 Views

CHAPTER 5 ■ ORACLE PROCESSES 181 CTWR: Change Tracking Processes This is a new optional process of the Oracle 10g database. The CTWR process is responsible for maintaining the new change tracking file, as described in Chapter 3. RVWR: Recovery Writer This process, another new optional process of the Oracle 10g database, is responsible for maintaining the before images of blocks in the Flash Recovery Area (described in Chapter 3) used with the FLASHBACK DATABASE command. Remaining Utility Background Processes So, is that the complete list? No, there are others. For example, Oracle Data Guard has a set of processes associated with it to facilitate the shipping of redo information from one database to another and apply it (see the Data Guard Concepts and Administration Guide from Oracle for details). There are processes associated with the new Oracle 10g Data Pump utility that you will see during certain Data Pump operations. There are Streams apply and capture processes as well. However, the preceding list covers most of the common background processes you will encounter. Slave Processes Now we are ready to look at the last class of Oracle processes: the slave processes. There are two types of slave processes with Oracle: I/O slaves and parallel query slaves. I/O Slaves I/O slaves are used to emulate asynchronous I/O for systems or devices that do not support it. For example, tape devices (which are notoriously slow) do not support asynchronous I/O. By using I/O slaves, we can mimic for tape drives what the operating system normally provides for disk drives. Just as with true asynchronous I/O, the process writing to the device batches a large amount of data and hands it off to be written. When the data is successfully written, the writer (our I/O slave this time, not the operating system) signals the original invoker, who removes this batch of data from its list of data that needs to be written. In this fashion, we can achieve a much higher throughput, since the I/O slaves are the ones waiting for the slow device, while their caller is off doing other important work getting the data together for the next write. I/O slaves are used in a couple of places in Oracle. DBWn and LGWR can make use of them to simulate asynchronous I/O, and RMAN will make use of them when writing to tape. Two parameters control the use of I/O slaves: • BACKUP_TAPE_IO_SLAVES: This parameter specifies whether I/O slaves are used by RMAN to back up, copy, or restore data to tape. Since this parameter is designed around tape devices, and tape devices may be accessed by only one process at any time, this parameter is a Boolean, and not the number of slaves to use, as you might expect. RMAN will start up as many slaves as necessary for the number of physical devices being used.

182 CHAPTER 5 ■ ORACLE PROCESSES When BACKUP_TAPE_IO_SLAVES = TRUE, an I/O slave process is used to write to or read from a tape device. If this parameter is FALSE (the default), then I/O slaves are not used for backups. Instead, the dedicated server process engaged in the backup will access the tape device. • DBWR_IO_SLAVES: This parameter specifies the number of I/O slaves used by the DBW0 process. The DBW0 process and its slaves always perform the writing to disk of dirty blocks in the buffer cache. By default, the value is 0 and I/O slaves are not used. Note that if you set this parameter to a nonzero value, LGWR and ARCH will use their own I/O slaves as well—up to four I/O slaves for LGWR and ARCH will be permitted. The DBWR I/O slaves appear with the name I1nn, and the LGWR I/O slaves appear with the name I2nn, where nn is a number. Parallel Query Slaves Oracle 7.1.6 introduced the parallel query capability into the database. This is the capability to take a SQL statement such as a SELECT, CREATE TABLE, CREATE INDEX, UPDATE, and so on and create an execution plan that consists of many execution plans that can be done simultaneously. The outputs of each of these plans are merged together into one larger result. The goal is to do an operation in a fraction of the time it would take if you did it serially. For example, say you have a really large table spread across ten different files. You have 16 CPUs at your disposal, and you need to execute an ad hoc query on this table. It might be advantageous to break the query plan into 32 little pieces and really make use of that machine, as opposed to just using one process to read and process all of that data serially. When using parallel query, you will see processes named Pnnn—these are the parallel query slaves themselves. During the processing of a parallel statement, your server process will be known as the parallel query coordinator. Its name won’t change at the operating system level, but as you read documentation on parallel query, when you see references to the coordinator process, know that it is simply your original server process. Summary We’ve covered the files used by Oracle, from the lowly but important parameter file to data files, redo log files, and so on. We’ve taken a look inside the memory structures used by Oracle, both in the server processes and the SGA. We’ve seen how different server configurations, such as shared server versus dedicated server mode for connections, will have a dramatic impact on how memory is used by the system. Lastly, we looked at the processes (or threads, depending on the operating system) that enable Oracle to do what it does. Now we are ready to look at the implementation of some other features of Oracle, such as locking, concurrency controls, and transactions.

CHAPTER 5 ■ ORACLE PROCESSES 181<br />

CTWR: Change Tracking Processes<br />

This is a new optional process of the <strong>Oracle</strong> 10g database. The CTWR process is responsible for<br />

maintaining the new change tracking file, as described in Chapter 3.<br />

RVWR: Recovery Writer<br />

This process, another new optional process of the <strong>Oracle</strong> 10g database, is responsible for<br />

maintaining the before images of blocks in the Flash Recovery Area (described in Chapter 3)<br />

used with the FLASHBACK DATABASE comm<strong>and</strong>.<br />

Remaining Utility Background Processes<br />

So, is that the complete list? No, there are others. For example, <strong>Oracle</strong> Data Guard has a set of<br />

processes associated with it to facilitate the shipping of redo information from one database<br />

to another <strong>and</strong> apply it (see the Data Guard Concepts <strong>and</strong> Administration Guide from <strong>Oracle</strong><br />

for details). There are processes associated with the new <strong>Oracle</strong> 10g Data Pump utility that you<br />

will see during certain Data Pump operations. There are Streams apply <strong>and</strong> capture processes<br />

as well. However, the preceding list covers most of the common background processes you<br />

will encounter.<br />

Slave Processes<br />

Now we are ready to look at the last class of <strong>Oracle</strong> processes: the slave processes. There are<br />

two types of slave processes with <strong>Oracle</strong>: I/O slaves <strong>and</strong> parallel query slaves.<br />

I/O Slaves<br />

I/O slaves are used to emulate asynchronous I/O for systems or devices that do not support it.<br />

For example, tape devices (which are notoriously slow) do not support asynchronous I/O. By<br />

using I/O slaves, we can mimic for tape drives what the operating system normally provides<br />

for disk drives. Just as with true asynchronous I/O, the process writing to the device batches a<br />

large amount of data <strong>and</strong> h<strong>and</strong>s it off to be written. When the data is successfully written, the<br />

writer (our I/O slave this time, not the operating system) signals the original invoker, who<br />

removes this batch of data from its list of data that needs to be written. In this fashion, we<br />

can achieve a much higher throughput, since the I/O slaves are the ones waiting for the slow<br />

device, while their caller is off doing other important work getting the data together for the<br />

next write.<br />

I/O slaves are used in a couple of places in <strong>Oracle</strong>. DBWn <strong>and</strong> LGWR can make use of them to<br />

simulate asynchronous I/O, <strong>and</strong> RMAN will make use of them when writing to tape.<br />

Two parameters control the use of I/O slaves:<br />

• BACKUP_TAPE_IO_SLAVES: This parameter specifies whether I/O slaves are used by RMAN<br />

to back up, copy, or restore data to tape. Since this parameter is designed around tape<br />

devices, <strong>and</strong> tape devices may be accessed by only one process at any time, this parameter<br />

is a Boolean, <strong>and</strong> not the number of slaves to use, as you might expect. RMAN will<br />

start up as many slaves as necessary for the number of physical devices being used.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!