Oracle Architecture - Explained In Detailed - Administration I
Figures shown in these notes
are from Oracle®
Database Concepts 11g Release 2
Objectives
Objectives
These notes introduce the Oracle server
architecture. The architecture includes physical
components, memory components, processes, and logical structures.
The figure shown above details the Oracle
architecture.
Oracle server: An
Oracle server includes an Oracle Instance and an Oracle database.
·
An
Oracle database includes several different types of files: datafiles, control files, redo log files and
archive redo log files. The Oracle
server also accesses parameter files and password files.
·
This
set of files has several purposes.
o
One is
to enable system users to process SQL statements.
o
Another
is to improve system performance.
o
Still
another is to ensure the database can be recovered if there is a
software/hardware failure.
·
The
database server must manage large amounts of data in a multi-user
environment.
·
The
server must manage concurrent access to the same data.
·
The
server must deliver high performance.
This generally means fast response times.
Oracle instance: An
Oracle Instance consists of two
different sets of components:
·
The first
component set is the set of background processes (PMON, SMON, RECO, DBW0,
LGWR, CKPT, D000 and others).
o
These
will be covered later in detail – each background process is a computer
program.
o
These
processes perform input/output and monitor other Oracle processes to provide
good performance and database reliability.
·
The
second component set includes the memory structures that comprise the Oracle
instance.
o
When an
instance starts up, a memory structure called the System Global Area (SGA) is
allocated.
o
At this
point the background processes also start.
·
An
Oracle Instance provides access to one and only one Oracle database.
Oracle database: An Oracle database consists of files.
·
Sometimes
these are referred to as operating system files, but they are actually database files
that store the database information that a firm or organization needs in order
to operate.
·
The redo log files
are used to recover the database in the event of application program failures,
instance failures and other minor failures.
·
The archived redo log
files are used to recover the database if a disk fails.
·
Other
files not shown in the figure include:
o
The
required parameter
file that is used to specify parameters for configuring an Oracle
instance when it starts up.
o
The
optional password
file authenticates special users of the database – these are termed privileged users
and include database administrators.
o
Alert and Trace Log Files – these files store information
about errors and actions taken that affect the configuration of the database.
User and server processes: The
processes shown in the figure are called user and server processes.
These processes are used to manage the execution of SQL statements.
·
A Shared Server
Process can share memory and variable processing for multiple user
processes.
·
A Dedicated Server
Process manages memory and variables for a single user process.
This figure from the Oracle Database Administration Guide provides another way of
viewing the SGA.
System users can connect to an Oracle
database through SQLPlus or through an application program like the Internet
Developer Suite (the program becomes the system user). This connection enables users to execute SQL statements.
The act of connecting creates a
communication pathway between a user process and an Oracle Server. As is shown in the figure above, the User
Process communicates with the Oracle Server through a Server Process. The User Process executes on the client
computer. The Server Process executes on
the server computer, and actually executes SQL statements submitted by the
system user.
The figure shows a one-to-one correspondence between the
User and Server Processes. This is
called a Dedicated
Server connection. An
alternative configuration is to use a Shared Server where more than one User Process
shares a Server Process.
Sessions: When
a user connects to an Oracle server, this is termed a session. The User Global Area is session memory and these
memory structures are described later in this document. The session starts when the Oracle server
validates the user for connection. The
session ends when the user logs out (disconnects) or if the connection
terminates abnormally (network failure or client computer failure).
A user can typically
have more than one concurrent session, e.g., the user may connect using SQLPlus
and also connect using Internet Developer Suite tools at the same time. The limit of concurrent session connections
is controlled by the DBA.
If a system users
attempts to connect and the Oracle Server is not running, the system user
receives the Oracle
Not Available error message.
Physical Structure – Database Files
As was noted above, an Oracle database
consists of physical files. The database
itself has:
·
Datafiles – these contain the organization's actual
data.
·
Redo log files – these contain a chronological record of
changes made to the database, and enable recovery when failures occur.
·
Control files – these are used to synchronize all
database activities and are covered in more detail in a later module.
Other key files as noted above include:
·
Parameter
file – there are two types
of parameter files.
o
The init.ora
file (also called the PFILE) is a static parameter file. It contains parameters that specify how the
database instance is to start up. For
example, some parameters will specify how to allocate memory to the various
parts of the system global area.
o
The spfile.ora
is a dynamic
parameter file. It also
stores parameters to specify how to startup a database; however, its parameters
can be modified while the database is running.
·
Password
file – specifies which
*special* users are authenticated to startup/shut down an Oracle Instance.
·
Archived
redo log files – these are
copies of the redo log files and are necessary for recovery in an online,
transaction-processing environment in the event of a disk failure.
Memory Management
and Memory Structures
Oracle
Database Memory Management
Memory management - focus is to
maintain optimal sizes for memory structures.
·
Memory is managed based on memory-related initialization parameters.
·
These values are stored in the init.ora file for each
database.
Three basic options for memory management are as follows:
·
Automatic
memory management:
o
DBA specifies the target size for instance memory.
o
The database instance automatically tunes to the target
memory size.
o
Database redistributes memory as needed between the SGA
and the instance PGA.
·
Automatic
shared memory management:
o
This management mode is partially automated.
o
DBA specifies the target size for the SGA.
o
DBA can optionally set an aggregate target size for the
PGA or managing PGA work areas individually.
·
Manual
memory management:
o
Instead of setting the total memory size, the DBA sets
many initialization parameters to manage components of the SGA and instance PGA
individually.
If you create a database with Database Configuration Assistant (DBCA) and
choose the basic installation option, then automatic memory management is the
default.
The memory
structures include three areas of memory:
·
System Global Area (SGA) – this is allocated when an
Oracle Instance starts up.
·
Program Global Area (PGA) – this is allocated when a
Server Process starts up.
·
User Global Area (UGA) – this is allocated when a
user connects to create a session.
System Global Area
The SGA is a read/write memory area that stores
information shared by all database processes and by all users of the database
(sometimes it is called the Shared Global Area).
o
This information
includes both organizational data and control information used by the Oracle
Server.
o
The SGA
is allocated in memory and virtual memory.
o
The
size of the SGA can be established by a DBA by assigning a value to the
parameter SGA_MAX_SIZE in the parameter file—this is an optional
parameter.
The SGA is
allocated when an Oracle instance (database) is started up based on values
specified in the initialization parameter file (either PFILE or SPFILE).
The SGA has the
following mandatory memory structures:
·
Database Buffer Cache
·
Redo Log Buffer
·
Java Pool
·
Streams Pool
·
Shared Pool – includes two components:
o Library Cache
o Data Dictionary
Cache
·
Other structures (for example, lock and latch
management, statistical data)
Additional optional memory structures in the SGA include:
·
Large Pool
The SHOW SGA SQL command will show you the SGA memory
allocations.
·
This is
a recent clip of the SGA for the DBORCL database at SIUE.
·
In
order to execute SHOW SGA you must be connected with the special privilege SYSDBA
(which is only available to user accounts that are members of the DBA Linux
group).
Early versions of
Oracle used a Static SGA. This meant that if modifications to memory
management were required, the database had to be shutdown, modifications were
made to the init.ora parameter file, and
then the database had to be restarted.
Oracle 11g uses a Dynamic SGA.
Memory configurations for the system global area can be made without
shutting down the database instance. The
DBA can resize the Database Buffer Cache and Shared Pool dynamically.
Several
initialization parameters are set that affect the amount of random access
memory dedicated to the SGA of an Oracle Instance. These are:
·
SGA_MAX_SIZE:
This optional parameter is used to set a limit on the amount of virtual memory
allocated to the SGA – a typical setting might be 1 GB; however, if the value for SGA_MAX_SIZE in the initialization parameter file or
server parameter file is less than the sum the memory allocated for all
components, either explicitly in the parameter file or by default, at the time
the instance is initialized, then the database ignores the setting for
SGA_MAX_SIZE. For optimal performance,
the entire SGA should fit in real memory to eliminate paging to/from disk by
the operating system.
·
DB_CACHE_SIZE:
This optional parameter is used to tune the amount memory allocated to
the Database Buffer Cache in standard database blocks. Block sizes vary among operating systems. The DBORCL database uses 8 KB blocks. The total blocks in the cache defaults to 48 MB
on LINUX/UNIX and 52 MB on Windows operating systems.
·
LOG_BUFFER:
This optional parameter specifies the number of bytes allocated for the
Redo Log Buffer.
·
SHARED_POOL_SIZE:
This optional parameter specifies the number of bytes of memory
allocated to shared SQL and PL/SQL. The
default is 16
MB. If the operating system
is based on a 64
bit configuration, then the default size is 64 MB.
·
LARGE_POOL_SIZE:
This is an optional memory object – the size of the Large Pool defaults
to zero. If the init.ora parameter PARALLEL_AUTOMATIC_TUNING
is set to TRUE,
then the default size is automatically calculated.
·
JAVA_POOL_SIZE:
This is another optional memory object.
The default is 24 MB of memory.
The size of the SGA cannot exceed the
parameter SGA_MAX_SIZE
minus the combination of the size of the additional parameters, DB_CACHE_SIZE,
LOG_BUFFER,
SHARED_POOL_SIZE,
LARGE_POOL_SIZE,
and JAVA_POOL_SIZE.
Memory is allocated
to the SGA as contiguous virtual memory in units termed granules. Granule size depends on the estimated total
size of the SGA, which as was noted above, depends on the SGA_MAX_SIZE
parameter. Granules are sized as
follows:
·
If the SGA is less than 1
GB in total, each granule is 4 MB.
·
If the SGA is greater than 1 GB in total, each granule is 16 MB.
Granules are assigned to the Database Buffer
Cache, Shared Pool, Java Pool, and other memory structures, and these memory components
can dynamically grow and shrink. Using
contiguous memory improves system performance.
The actual number of granules assigned to one of these memory components
can be determined by querying the database view named V$BUFFER_POOL.
Granules are allocated when the Oracle
server starts a database instance in order to provide memory addressing space
to meet the SGA_MAX_SIZE parameter. The
minimum is 3 granules: one each for the
fixed SGA, Database Buffer Cache, and Shared Pool. In practice, you'll find the SGA is allocated
much more memory than this. The SELECT
statement shown below shows a current_size of 1,152 granules.
SELECT name, block_size, current_size, prev_size, prev_buffers
FROM v$buffer_pool;
NAME
BLOCK_SIZE CURRENT_SIZE PREV_SIZE
PREV_BUFFERS
-------------------- ---------- ------------ ---------- ------------
DEFAULT
8192 560 576 71244
Program Global Area (PGA)
A PGA is:
·
a nonshared
memory region that contains data and control information exclusively for use by
an Oracle process.
·
A PGA
is created by Oracle Database when an Oracle process is started.
·
One
PGA exists for each Server Process and each Background Process. It stores data and control information for a
single Server
Process or a single Background Process.
·
It is
allocated when a process is created and the memory is scavenged by the
operating system when the process terminates.
This is NOT a shared
part of memory – one PGA to each process only.
·
Database
initialization parameters set the size of the instance PGA, not individual
PGAs.
The content of the
PGA varies, but as shown in the figure above, generally includes the following:
·
Private SQL Area: Stores
information for a parsed SQL statement – stores bind variable values and
runtime memory allocations. A user
session issuing SQL statements has a Private SQL Area that may be associated
with a Shared SQL Area if the same SQL statement is being executed by more than
one system user. This often happens in
OLTP environments where many users are executing and using the same application
program.
o Dedicated
Server environment –
the Private SQL Area is located in the Program Global Area.
o Shared
Server environment –
the Private SQL Area is located in the System Global Area.
·
Session Memory:
Memory that holds session variables and other session information.
·
SQL Work Areas:
Memory allocated for sort, hash-join, bitmap merge, and bitmap create
types of operations.
o Oracle 9i and later versions enable
automatic sizing of the SQL Work Areas by setting the WORKAREA_SIZE_POLICY = AUTO
parameter (this is the default!) and PGA_AGGREGATE_TARGET = n (where n is some amount
of memory established by the DBA). However,
the DBA can let the Oracle DBMS determine the appropriate amount of memory.
Automatic
Shared Memory Management
Prior to Oracle 10G, a DBA had to manually specify SGA Component sizes
through the initialization parameters, such as SHARED_POOL_SIZE, DB_CACHE_SIZE,
JAVA_POOL_SIZE, and LARGE_POOL_SIZE parameters.
Automatic
Shared Memory Management enables a DBA to specify the total SGA memory
available through the SGA_TARGET initialization parameter. The Oracle Database automatically distributes
this memory among various subcomponents to ensure most effective memory
utilization.
The DBORCL
database SGA_TARGET
is set in the initDBORCL.ora
file:
sga_target=1610612736
With automatic SGA memory management, the different SGA components are
flexibly sized to adapt to the SGA available.
Setting a single
parameter simplifies the administration task – the DBA only specifies the
amount of SGA memory available to an instance – the DBA can forget about the
sizes of individual components. No out of memory errors are generated unless
the system has actually run out of memory.
No manual tuning effort is needed.
The SGA_TARGET
initialization parameter reflects the total size of the SGA and includes memory
for the following components:
- Fixed SGA and other internal allocations needed by the Oracle Database instance
- The log buffer
- The shared pool
- The Java pool
- The buffer cache
- The keep and recycle buffer caches (if specified)
- Nonstandard block size buffer caches (if specified)
- The Streams Pool
If SGA_TARGET
is set to a value greater than SGA_MAX_SIZE at startup, then the SGA_MAX_SIZE
value is bumped up to accommodate SGA_TARGET.
When you set a value for SGA_TARGET, Oracle Database 11g
automatically sizes the most commonly configured components, including:
- The shared pool (for SQL and PL/SQL execution)
- The Java pool (for Java execution state)
- The large pool (for large allocations such as RMAN backup buffers)
- The buffer cache
There are a few SGA components whose sizes are not automatically adjusted.
The DBA must specify the sizes of these components explicitly, if they are
needed by an application. Such components are:
- Keep/Recycle buffer caches (controlled by DB_KEEP_CACHE_SIZE and DB_RECYCLE_CACHE_SIZE)
- Additional buffer caches for non-standard block sizes (controlled by DB_nK_CACHE_SIZE, n = {2, 4, 8, 16, 32})
- Streams Pool (controlled by the new parameter STREAMS_POOL_SIZE)
Shared Pool
The Shared Pool
is a memory structure that is shared by all system users.
·
It caches various types of program data.
For example, the shared pool stores parsed SQL, PL/SQL code, system parameters,
and data dictionary
information.
·
The shared pool is involved in almost every
operation that occurs in the database. For example, if a user executes a SQL
statement, then Oracle Database accesses the shared pool.
·
It
consists of both fixed and variable structures.
·
The
variable component grows and shrinks depending on the demands placed on memory
size by system users and application programs.
Memory can be
allocated to the Shared Pool by the parameter SHARED_POOL_SIZE in the parameter
file. The default
value of this parameter is 8MB on
32-bit platforms and 64MB on
64-bit platforms. Increasing the value of this parameter increases the amount
of memory reserved for the shared pool.
You can alter the
size of the shared pool dynamically with the ALTER SYSTEM SET command. An example command is shown in the figure
below. You must keep in mind that the
total memory allocated to the SGA is set by the SGA_TARGET parameter (and may also be limited by the SGA_MAX_SIZE if
it is set), and since the Shared Pool is part of the SGA, you cannot exceed the
maximum size of the SGA. It is
recommended to let Oracle optimize the Shared Pool size.
The Shared Pool
stores the most recently executed SQL statements and used data
definitions. This is because some system
users and application programs will tend to execute the same SQL statements
often. Saving this information in memory
can improve system performance.
The Shared Pool
includes several cache areas described below.
Library
Cache
Memory is allocated
to the Library
Cache whenever an SQL statement is parsed or a program unit is
called. This enables storage of the most
recently used SQL and PL/SQL statements.
If the Library
Cache is too small, the Library Cache must purge statement definitions in order
to have space to load new SQL and PL/SQL statements. Actual management of this memory structure is
through a Least-Recently-Used
(LRU) algorithm. This means
that the SQL and PL/SQL statements that are oldest and least recently used are
purged when more storage space is needed.
The Library Cache
is composed of two memory subcomponents:
·
Shared SQL: This stores/shares the execution plan and
parse tree for SQL statements, as well as PL/SQL statements such as functions,
packages, and triggers. If a system user
executes an identical statement, then the statement does not have to be parsed
again in order to execute the statement.
·
Private SQL Area:
With a shared server, each session issuing a SQL statement
has a private SQL area in its PGA.
o
Each user that submits the same statement
has a private SQL area pointing to the same shared SQL area.
o
Many private SQL areas in separate PGAs can
be associated with the same shared SQL area.
o
This figure depicts two different client
processes issuing the same SQL statement – the parsed solution is already in
the Shared SQL Area.
Data
Dictionary Cache
The Data Dictionary
Cache is a memory structure that caches data dictionary information that has
been recently used.
·
This
cache is necessary because the data dictionary is accessed so often.
·
Information
accessed includes user account information, datafile names, table descriptions,
user privileges, and other information.
The database server
manages the size of the Data Dictionary Cache internally and the size depends
on the size of the Shared Pool in which the Data Dictionary Cache resides. If the size is too small, then the data
dictionary tables that reside on disk must be queried often for information and
this will slow down performance.
Server
Result Cache
The Server
Result Cache holds result sets and not data blocks. The server
result cache contains the SQL query result cache and PL/SQL function result cache, which share the same
infrastructure.
SQL Query Result Cache
This cache stores the results of queries and query
fragments.
·
Using the cache results for future queries
tends to improve performance.
·
For example, suppose an application runs
the same SELECT statement repeatedly. If the results are cached, then the
database returns them immediately.
·
In this way, the database avoids the
expensive operation of rereading blocks and recomputing results.
PL/SQL Function Result Cache
The
PL/SQL
Function Result Cache stores function result sets.
·
Without
caching, 1000 calls of a function at 1 second per call would take 1000 seconds.
·
With
caching, 1000 function calls with the same inputs could take 1 second total.
·
Good
candidates for result caching are frequently invoked functions that depend on
relatively static data.
·
PL/SQL
function code can specify that results be cached.
Buffer Caches
A number of buffer
caches are maintained in memory in order to improve system response time.
Database
Buffer Cache
The Database Buffer
Cache is a fairly large memory object that stores the actual data blocks
that are retrieved from datafiles by system queries and other data manipulation
language commands.
The purpose is to
optimize physical input/output of data.
When Database Smart
Flash Cache (flash cache) is enabled, part
of the buffer cache can reside in the flash cache.
·
This buffer cache extension is stored on a flash disk
device, which is a solid state storage device that uses flash memory.
·
The database can improve performance by caching buffers
in flash memory instead of reading from magnetic disk.
·
Database Smart Flash Cache is available only in Solaris
and Oracle Enterprise Linux.
A query causes a Server Process
to look for data.
·
The first
look is in the Database Buffer Cache to determine if the requested information
happens to already be located in memory – thus the information would not need
to be retrieved from disk and this would speed up performance.
·
If the
information is not in the Database Buffer Cache, the Server Process retrieves
the information from disk and stores it to the cache.
·
Keep in
mind that information read from disk is read a block at a time, NOT a row
at a time, because a database block is the smallest addressable storage
space on disk.
Database blocks are
kept in the Database Buffer Cache according to a Least Recently Used (LRU) algorithm and
are aged out of memory if a buffer cache block is not used in order to provide
space for the insertion of newly needed database blocks.
There are three
buffer states:
·
Unused - a buffer is available for use - it has
never been used or is currently unused.
·
Clean - a buffer that was used earlier - the data
has been written to disk.
·
Dirty - a buffer that has modified data that has not
been written to disk.
Each buffer has one
of two access modes:
·
Pinned - a buffer is pinned so it does not age out
of memory.
·
Free (unpinned).
The buffers in the cache are organized in two lists:
·
the write list and,
·
the least recently used (LRU) list.
The write list (also called a write queue) holds dirty buffers – these are buffers that hold that
data that has been modified, but the blocks have not been written back to disk.
The LRU list holds unused,
free clean buffers, pinned buffers, and free dirty buffers that have not yet been
moved to the write list. Free clean buffers
do not contain any useful data and are available for use. Pinned buffers are currently being accessed.
When an Oracle process accesses a buffer,
the process moves the buffer to the most recently used (MRU) end of the LRU list –
this causes dirty buffers to age toward the LRU end of the LRU list.
When an Oracle user process needs a data row, it searches
for the data in the database buffer cache because memory can be searched more
quickly than hard disk can be accessed.
If the data row is already in the cache (a cache hit),
the process reads the data from memory; otherwise a cache miss occurs and data must be
read from hard disk into the database buffer cache.
Before reading a data block into the cache, the process must
first find a free buffer. The process searches the LRU list, starting at the
LRU end of the list. The search
continues until a free buffer is found or until the search reaches the
threshold limit of buffers.
Each time a user process finds a dirty buffer as it searches
the LRU, that buffer is moved to the write list and the search for a free
buffer continues.
When a user process finds a free buffer, it
reads the data block from disk into the buffer and moves the buffer to the MRU
end of the LRU list.
If an Oracle user process searches the threshold limit of
buffers without finding a free buffer, the process stops searching the LRU list
and signals the DBWn background process to write some of the dirty buffers to
disk. This frees up some buffers.
Redo Log Buffer
The Redo Log Buffer
memory object stores images of all changes made to database blocks.
·
Database
blocks typically store several table rows of organizational data. This means that if a single column value from
one row in a block is changed, the block image is stored. Changes include INSERT, UPDATE, DELETE,
CREATE, ALTER, or DROP.
·
LGWR writes redo sequentially to disk while
DBWn performs scattered writes of data blocks to
disk.
o
Scattered writes tend to be much slower
than sequential writes.
o
Because LGWR enable users to avoid waiting
for DBWn to complete its slow writes, the database
delivers better performance.
Large Pool
The Large Pool
is an optional memory structure that primarily relieves the memory burden
placed on the Shared Pool. The Large
Pool is used for the following tasks if it is allocated:
·
Allocating
space for session memory requirements from the User Global Area where a Shared
Server is in use.
·
Transactions
that interact with more than one database, e.g., a distributed database
scenario.
·
Backup
and restore operations by the Recovery Manager (RMAN) process.
o RMAN uses this only if the BACKUP_DISK_IO = n
and BACKUP_TAPE_IO_SLAVE
= TRUE parameters are set.
o If the Large Pool is too small, memory
allocation for backup will fail and memory will be allocated from the Shared
Pool.
·
Parallel
execution message buffers for parallel server operations. The PARALLEL_AUTOMATIC_TUNING = TRUE parameter must be
set.
The Large Pool size
is set with the LARGE_POOL_SIZE
parameter – this is not a dynamic parameter.
It does not use an LRU list to manage memory.
Java Pool
The Java Pool is an
optional memory object, but is
required if the database has Oracle Java installed and in use for Oracle JVM
(Java Virtual Machine).
·
The
size is set with the JAVA_POOL_SIZE parameter that defaults to 24MB.
·
The
Java Pool is used for memory allocation to parse Java commands and to store
data associated with Java commands.
·
Storing
Java code and data in the Java Pool is analogous to SQL and PL/SQL code cached
in the Shared Pool.
Streams Pool
This pool stores
data and control structures to support the Oracle Streams feature of Oracle
Enterprise Edition.
·
Oracle
Steams manages sharing of data and events in a distributed environment.
·
It is
sized with the parameter STREAMS_POOL_SIZE.
·
If
STEAMS_POOL_SIZE is not set or is zero, the size of the pool grows dynamically.
Processes
You need to understand
three different types of Processes:
·
User Process:
Starts when a database user requests to connect to an Oracle Server.
·
Server Process:
Establishes the Connection to an Oracle Instance when a User Process
requests connection – makes the connection for the User Process.
·
Background Processes:
These start when an Oracle Instance is started up.
Client Process
Server Process
A Server Process is the go-between for a
Client Process and the Oracle Instance.
·
Dedicated
Server environment – there is a single Server Process to serve each Client
Process.
·
Shared
Server environment – a Server Process can serve several User Processes,
although with some performance reduction.
·
Allocation
of server process in a dedicated environment versus a shared environment is
covered in further detail in the Oracle11g Database Performance Tuning course
offered by Oracle Education.
Background Processes
As is
shown here, there are both mandatory, optional, and slave background processes
that are started whenever an Oracle Instance starts up. These background processes serve all system
users. We will cover mandatory process
in detail.
Mandatory
Background Processes
·
Process
Monitor Process (PMON)
·
System
Monitor Process (SMON)
·
Database
Writer Process (DBWn)
·
Log
Writer Process (LGWR)
·
Checkpoint
Process (CKPT)
·
Manageability
Monitor Processes (MMON and MMNL)
·
Recover
Process (RECO)
Optional Processes
·
Archiver
Process (ARCn)
·
Coordinator
Job Queue (CJQ0)
·
Dispatcher
(number “nnn”) (Dnnn)
·
Others
This
query will display all background processes running to serve a database:
SELECT PNAME
FROM
V$PROCESS
WHERE
PNAME IS NOT NULL
ORDER BY PNAME;
PMON
The Process Monitor
(PMON) monitors other background processes.
- It is a cleanup type of process that cleans up after failed processes.
- Examples include the dropping of a user connection due to a network failure or the abnormal termination (ABEND) of a user application program.
- It cleans up the database buffer cache and releases resources that were used by a failed user process.
- It does the tasks shown in the figure below.
SMON
- The System Monitor (SMON) does system-level cleanup duties.
- It is responsible for instance recovery by applying entries in the online redo log files to the datafiles. Other processes can call SMON when it is needed.
- It also performs other activities as outlined in the figure shown below.
If an Oracle
Instance fails, all information in memory not written to disk is lost. SMON is responsible for recovering the
instance when the database is started up again.
It does the following:
- Rolls forward to recover data that was recorded in a Redo Log File, but that had not yet been recorded to a datafile by DBWn. SMON reads the Redo Log Files and applies the changes to the data blocks. This recovers all transactions that were committed because these were written to the Redo Log Files prior to system failure.
- Opens the database to allow system users to logon.
- Rolls back uncommitted transactions.
SMON also does
limited space management. It combines
(coalesces) adjacent areas of free space in the database's datafiles for
tablespaces that are dictionary managed.
It also deallocates
temporary segments to create free space in the datafiles.
DBWn (also called DBWR in earlier Oracle Versions)
The Database Writer writes modified blocks from the
database buffer cache to the datafiles.
- One database writer process (DBW0) is sufficient for most systems.
- A DBA can configure up to 20 DBWn processes (DBW0 through DBW9 and DBWa through DBWj) in order to improve write performance for a system that modifies data heavily.
- The initialization parameter
DB_WRITER_PROCESSES
specifies the number of DBWn processes.
The purpose of DBWn is to improve system
performance by caching writes of database blocks from the Database Buffer Cache back to
datafiles.
- Blocks that have been modified and that need to be written back to disk are termed "dirty blocks."
- The DBWn also ensures that there are enough free buffers in the Database Buffer Cache to service Server Processes that may be reading data from datafiles into the Database Buffer Cache
- Performance improves because by delaying writing changed database blocks back to disk, a Server Process may find the data that is needed to meet a User Process request already residing in memory!
- DBWn writes to datafiles when one of these events occurs that is illustrated in the figure below.
LGWR
The Log Writer (LGWR)
writes contents from the Redo Log Buffer to the Redo Log File that is in
use.
- These are sequential writes since the Redo Log Files record database modifications based on the actual time that the modification takes place.
- LGWR actually writes before the DBWn writes and only confirms that a COMMIT operation has succeeded when the Redo Log Buffer contents are successfully written to disk.
- LGWR can also call the DBWn to write contents of the Database Buffer Cache to disk.
- The LGWR writes according to the events illustrated in the figure shown below.
CKPT
The Checkpoint (CPT)
process writes information to update the database control files and headers of
datafiles.
- A checkpoint identifies a point in time with regard to the Redo Log Files where instance recovery is to begin should it be necessary.
- It can tell DBWn to write blocks to disk.
- A checkpoint is taken at a minimum, once every three seconds.
Think of a
checkpoint record as a starting point for recovery. DBWn will have completed writing all buffers
from the Database Buffer Cache to disk prior to the checkpoint, thus those
records will not require recovery. This
does the following:
- Ensures modified data blocks in memory are regularly written to disk – CKPT can call the DBWn process in order to ensure this and does so when writing a checkpoint record.
- Reduces Instance Recovery time by minimizing the amount of work needed for recovery since only Redo Log File entries processed since the last checkpoint require recovery.
- Causes all committed data to be written to datafiles during database shutdown.
All right reserved to their respective authors and blog writer on the internet. Images from Oracle EKits and reference manual.
nice blogg
ReplyDeleteThanks Lot babu
DeleteSuch a wonderful and clear article. Great!
ReplyDeleteThanks for alot Mohan.
Deletehttps://www.unisoftindia.org
Nice Article. Great !
ReplyDeleteThanks a lot Ganesh
DeleteI want to thank you for your efforts in writing this article. The information provided was very useful.
ReplyDeleteIot Course in Bangalore
Thanks for sharing doc.. It's very useful for me
ReplyDeleteThanks a lot Rajesh DBA
DeleteI have also been apart intended for a while, although at this point From the the reason When i helpful to appreciate that web site. https://www.allmaxbet.com
ReplyDeleteเว็บพนันออนไลน์ เว็บที่ไว้ใจได้ มาตรฐานสูง >>> UFABET ทางเข้า >> แทงบาคาร่า >> เว็บแทงบอล
ReplyDeletenice blog. Thanks. สมัครเว็บบอล
ReplyDeleteAUTOBETCASINO เล่น บาคาร่า อย่างไรให้ได้เงิน เคยไหม กับการเล่น บาคาร่า เพื่อต้องการเงินและกำไรจากการเดิมพัน แน่นอนว่า ทุกคนจะต้องอยากได้... ที่ autobetcasino
ReplyDeleteNice blog. Thanks. สล็อตค่าย red tiger
ReplyDeleteMEGA GAME https://www.megaslot.game/ มีตัวเลือกการเข้าถึงสล็อตอย่างเต็มรูปแบบ มีให้เลือกมากกว่า 200 แบบ สนุกสนานแบบไม่มีเงื่อนไข คุณไม่จำเป็นต้องฝากเงิน คุณสามารถเล่นผ่านระบบได้เลย ลองเล่นสล็อต คลิกที่นี่ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการเล่นสล็อตแมชชีน
ReplyDeleteSo this is the excellent contents.7m ผลบอลเมื่อคืน
ReplyDeletethis. It should be very good for me. Thank you. บริษัทกําจัดปลวก ดีแลนด์
ReplyDeleteI like your article very much. You write it well and it's helpful. i always follow you. ข่าวฟุตบอลต่างประเทศ
ReplyDeleteI your writing style genuinely loving this internet site สมัครเล่นสล็อตเมก้าวิน
ReplyDeleteThank you for your good content. วิธีแทงบอลสเต็ป
ReplyDeleteThank you for your good content. เล่นเกมรูเล็ตบนมือถือ
ReplyDeleteDon’t worry if plan A fails. There are 25 more letters in the alphabet. ดูผลบอลสด
ReplyDeleteClaps for your effort to wrote this blog post. Android app development company in Hyderabad
ReplyDeleteif possible share a article about Flutter app development
DeleteSoftware development company in Hyderabad
ERP software company in Hyderabad
Nice info post about oracle architecture.
ReplyDeleteGenerator rental in Hyderabad
Generator for sale
It cool site.โปรโมชั่นสล็อตดีๆ
ReplyDeleteOn 1xbet korea a warm night time in May of 1969, a throng of awestruck gamblers crowded round a well-worn roulette table in the Italian Riviera. Finally the casino discovered that the bias was brought on by the frets, or walls, between numbers. The downside was corrected, and Jagger began to lose, but nonetheless left Monte Carlo, by no means to return, with more than $300,000. For example, for example our $5 bettor begins with the series 2-3 for the $5 start line. If he loses, the series turns into 2-3-5, and the subsequent wager is $7 -- the sum of the numbers on both end. A win at $7 would cancel the two and the 5, leaving $3 as the subsequent wager.
ReplyDeleteKhon Kaen, a deal for the half-crossed forward center to add to the team. วิเคราะห์บอลลีก
ReplyDelete
ReplyDeleteMarseille borrowed from Malinowski. วิเคราะห์บอลลีก
gacor terus di link ini https://vicis.co/ole777-situs-judi-bola-dan-slot-online-terbaik-di-asia/
ReplyDeleteSPBO dikenal sebagai platform yang menyediakan informasi terkait olahraga, terutama sepak bola. Situs live score spbo menawarkan pembaruan skor langsung, statistik pertandingan, dan data terkait tim dan pemain, menjadikannya sumber daya yang berguna bagi penggemar olahraga yang ingin mengikuti perkembangan terkini dalam dunia sepak bola. Fokusnya pada penyediaan data secara real-time membuatnya populer di kalangan penggemar yang mencari informasi terkini dan terperinci.
ReplyDeleteLive Toto Macau adalah sebuah platform yang menyediakan layanan terkait dengan hasil pengundian nomor yang diadakan di Macau. live toto macau hari ini Layanan ini menawarkan pengalaman berbasis angka dan statistik, sering kali digunakan untuk keperluan hiburan dan analisis data.
ReplyDeleteSitus Jowoslot menawarkan berbagai jenis permainan online yang dirancang untuk hiburan. Platform ini menggunakan teknologi terkini untuk memberikan pengalaman bermain yang lancar dan menarik, dengan grafis yang menawan dan antarmuka pengguna yang mudah digunakan. Situs jowoslot juga sering memperbarui konten permainannya untuk menjaga kesegaran dan variasi bagi para penggunanya.
ReplyDeleteqqstarvegas adalah sebuah platform hiburan daring yang menawarkan beragam permainan menarik dan pengalaman seru untuk para penggunanya.
ReplyDeletejkttogel adalah sebuah fenomena yang memikat perhatian banyak orang dengan berbagai cara menarik untuk menghibur diri.
ReplyDeleteThis comment has been removed by the author.
ReplyDeletesantaipoker adalah sebuah platform yang menghadirkan pengalaman seru dan menyenangkan bagi para penggunanya.
ReplyDeleteprediksi bola akurat dapat menjadi sumber hiburan yang seru dan memungkinkan penggemar sepakbola untuk berspekulasi tentang hasil pertandingan dengan lebih baik.
ReplyDeleteprediksi bola bisa menjadi hiburan yang seru dan mendebarkan bagi para penggemar olahraga. Itu membantu membangun antusiasme dan menambah aspek kompetitif dalam menikmati pertandingan sepak bola.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
Delete