room for the logs Oracle will automatically write to it. If the archive log file destination is full, Oracle will hang since it can’t archive additional redo log files. Deploying Physical Components | 47
Figure 2-7 illustrates redo log use with archiving enabled. Archived Redo Logs Group 1 Seq#=1 Seq#=4 ORCL0000000001.ARC redog1m1.log = redog1m2.log Group 2 Seq#=2 ORCL0000000002.ARC redog2m1.log = redog2m2.log Group 3 Seq#=3 ORCL0000000003.ARC redog3m1.log = redog3m2.log Logs are archived as they fill and Oracle switches to a new log Figure 2-7. Cycling redo logs with archiving The archived redo logs are critical for database recovery. Just as you can duplex the online redo logs, youcan also specify multiple archive log destinations. Oracle will copy filled redo logs to specified destinations. Youcan also specify whether all copies must succeed or not. The initialization parameters for this functionality are as follows: LOG_ARCHIVE_DUPLEX_DEST Specifies an additional location for redundant redo logs. LOG_ARCHIVE_MIN_SUCCEED_DEST Indicates whether the redo log must be successfully written to one or all of the locations. Valid values are 1 through 10 if multiplexing and 1 or 2 if duplexing. See your Oracle documentation for the additional parameters and views that enable and control this functionality. Instance Memory and Processes An Oracle instance can be defined as an area of shared memory and a collection of background processes. The area of shared memory for an instance is called the System Global Area, or SGA. The SGA is not really one large undifferentiated section of memory—it’s made up of various components that we’ll examine in the next section. All the processes of an instance—system processes and user processes—share the SGA. 48 | Chapter 2: Oracle Architecture
Prior to Oracle9 i , the size of the SGA was set when the Oracle instance was started. The only way to change the size of the SGA or any of its components was to change the initialization parameter and then stop and restart the instance. Since Oracle9 i , youcan also change the size of the SGA or its components while the Oracle instance is running. Oracle9 i also introduced the concept of the granule , which is the smallest amount of memory that you can add to or subtract from the SGA. Oracle Database 10 g introduced Automatic Shared Memory Management, while Oracle Database 11 g added Automatic Memory Management for the SGA and PGA instance components. Whenever the MEMORY_TARGET (new to Oracle Database 11 g ) or SGA_TARGET initialization parameter is set, the database automatically distributes the memory among various SGA components providing optimal memory management. The shared memory components automatically sized include the shared pool (manually set using SHARED_POOL_SIZE), the large pool (LARGE_ POOL_SIZE), the Java pool (JAVA_POOL_SIZE), the buffer cache (DB_CACHE_ SIZE), and the streams pool (STREAMS_POOL_SIZE). Automatic memory management initialization parameters can be set through Oracle Enterprise Manager. The background processes interact with the operating system and each other to manage the memory structures for the instance. These processes also manage the actual database on disk and perform general housekeeping for the instance. Figure 2-8 illustrates the memory structures and background processes discussed in the following section. SMON PMON RECO SGA Redo Log Database Buffer Cache Shared Pool Buffer DBWR CKPT LGWR ARCH Datafiles Control Files Redo Logs Figure 2-8. An Oracle instance Instance Memory and Processes | 49
Additional background processes may exist when you use certain other features of the database: for example, shared servers (formerly the Multi-Threaded Server or MTS prior to Oracle9 i ), or job queues and replication. Memory Structures for an Instance As shown in Figure 2-8, the System Global Area is composed of multiple areas. These include a