Oracle Database Administration
I Oracle Server Architecture
Overview
Set of data to store and access information
Based on a relational model of rows and
columns stored in tables Also Object-oriented
(OO) structures
Contains these components:
Physical
Memory
Process
Oracle's Overall Role
Retrieve data
File I/O
Space Management
Change Management
Access Management
Database Structure
Data file(s)
Control file(s)
Redo logs
Init.ora (spfile.ora - 9i)
Trace
Alert log
Password
Instance Structure
Memory structures are allocated
Collectively known as System Global Area.
95% defined by data block buffer cache,
Shared SQL Pool, Large Pool and Java Pool.
Oracle background processes are started.
Single database accessible by multiple
instances - RAC (Real Application Cluster)
a.k.a. parallel server
Instance Defined
Defined by initialization parameter(s)
that determine the size and composition
Can be dynamically altered
initSID.ora (ascii file)
spfileSID.ora (binary file)
configSID.ora (usually only used to
create a database – not widely used)
Oracle Instance
Composed of:
SGA (System Global Area)
PGA (Program Global Area)
Oracle BACKGROUND processes
System Global Area (SGA)
Shared memory region allocated by
Oracle for an Oracle database
Allocated when the Oracle database is
started
The SGA should be in non-paged, non-
swapped memory
SGA Composition
Buffer cache
Shared SQL Pool
Large pool (optional)
Java pool
Redo log buffer
Dictionary cache
Other miscellaneous items
PGA Composition
Non-shared memory area to which a
process (server or background) can write
Allocated by Oracle when a user
connects to an Oracle database and a
session is created
Oracle Instance
Required Background Processes:
DBWn
LGWR
SMON
PMON
CKPT (9i)
Oracle Instance
Optional Background Processes:
(not all inclusive)
ARCn
CKPT (prior to 9i)
RECO
Lock (LCK0)
Job Queue (SNPn)
Queue Monitor (QMNn)
Dispatcher (Dnnn)
Server (Snnn – for dedicated MTS servers)
Oracle Instance
More Details
SGA
Buffer Cache
Redo Log BUFFER
Shared SQL Pool
Dynamic (as of Oracle 9i)
Dynamic SGA
Defined in Granules
SGA < 128mb 4mb size
SGA > 128mb 16mb size
Can be modified on the fly (9i)
Establish an overall maximum
Initially allocated – 4 for small, 3 for
large (fixed SGA, buffer cache, Shared
pool)
Data Buffer Cache Structure
Can be defined in two ways:
* By block db_block_buffers
** By byte db_cache_size
Was divided into blocks the same size as the blocks in
the data files
As of 9i, multiple buffer cache introduced (depends on
block size of each tablespace)
Size and number defined in the initialization Parameter
File
Holds copies of data blocks read from disk
Data Buffer Cache Contents
Stores the most recently accessed BLOCKS
OF DATA
Contains PINNED buffers
* Data being accessed
Contains DIRTY buffers
* Data that has been MODIFIED, but not
written to disk
FREE buffers
Two lists, write and LRU
REDO Log Buffers
Stores the REDO ENTRIES (changes to the
database)
Default is four times the OS block size
Larger reduces log I/O and uncommented redo
to online redo logs
Changed data is moved from the database
buffer cache to the redo log buffer then to the
redo log files
Shared Pool
Can be dynamically modified (9i)
Must be an integer multiple of the granule size
* Oracle will round up if not
Managed by LRU algorithm
Contains:
* Library Cache
* Data Dictionary Cache
* Control structures
* Reusable Runtime Memory
Shared Pool
Shared Pool
Library Cache
* SHARED by all users for commonly
used SQL statements
* Shared and Private SQL areas for
executed statements
* PL/SQL Procedures and Packages
* Allocation and Reuse of Memory
Library Cache
Shared SQL
* PARSE TREES for SQL statements
* EXECUTION plans for SQL statements
* Size dependent on complexity
Private SQL
* Each session has one
* Persistent and Runtime areas
* Cursors
Library Cache
PL/SQL Program Units
* Procedures, functions, Packages,
anonymous blocks and database triggers
Allocation and Reuse of Memory
* Every SQL statement submitted, Oracle
automatically allocates memory
* Checks for existence
* Allocate private SQL area
* May flush the shared pool
PGA
PGA
Varies depending if dedicated or Shared
servers (MTS) are used
Stack space
Session information (PGA verses Shared
Pool)
Memory allocated to hold a session’s
variables and arrays
Automatically managed in 9i with the
SQL memory management
Questions
What is the name of Oracle’s memory
structure?
What are its contents?
How is it divided?
If I have 150 mb SGA, why does Oracle
change the size?
Can you vary sizes of Oracle blocks? If
so, how?
Oracle Database
Composed of two structures:
Physical (Operating System view)
Logical (Oracle’s view)
Physical View
Files
Physical Structure
Made up of:
Data files
Redo Log Files – two or more with
members
One or more Control Files
One Parameter File
Trace and alert log files
One Password file
Datafile
Disk space for a tablespace
One or more per tablespace
Associated with only one tablespace
Consists of segments:
* UNDO, Temporary, Data, index, undo,
LOB and cache (for the most part)
Redo Log Files
Characteristics
Record changes made to the data by
various transactions
Help RECOVER the data in case of a
failure
Streamline the process of how data is
written to disk
Control Files
Record of the overall architecture and
status of the database
Easily moved and recovered
Contain the following:
Database NAME
Datafiles NAMES and LOCATIONS
Redo log file NAMES, Log sequence
number and LOCATIONS
Parameter File
Attributes of an instance are defined
through an Oracle Parameter File
Determines the size and characteristics
of the instance
Stored in an ASCII file or housed with
the database in a binary file
Parameter File
The only Oracle file that is ASCII
All other files are binary and not directly
changeable by the DBA
Read-only when the instance starts
Most changes require a stop and restart
of the instance
Trace and Alert Logs
Trace files contain information about
significant events
Alert log records the commands and
results of major events in the life of the
database
Monitor daily
Rename for historical purposes
Logical View
Structures
Logical View Structures
Tablespace(s)
Schema objects
Segments
Extents
Data blocks
Tablespace(s)
Logically divides a database
One or more datafiles are explicity
created for each one
Logically divided into segments that are
further divided into extents and blocks
Can be defined as read-only
A unit of space to store a schema’s
objects
Object(s)
Schema(s)
A collection of objects owned by one Oracle
user
Object(s)
Tables, indexes, views, sequences, stored
procedures, functions, packages, UNDO
segments
Extents and Blocks
A collection of the smallest object in a
database
An extent can be of a varying size
Extents MUST be contiguous
Blocks are the finest collection of space
in an Oracle database
Questions
What are the physical files of a database
system?
What are the logical entities of a
database?
What is the smallest structure?
Which structure MUST be contiguous?
Which structure will tell you event
information?
Background Processes
Review
Background Processes
Every instance has BACKGROUND
PROCESSES
BACKGROUND PROCESSES perform
I/O, handle process cleanup and monitor
the ORACLE database
Provide support, increase performance,
assist in recovery and make the database
more reliable
Background Processes
DBW0 (DBWn)
LGWR
PMON
SMON
CKPT
ARCn
Database Buffer
After the changed data (redo entries) are
written to the online redo log files, the
changed data will be written to disk
These changed data are called ‘dirty’
Dirty data are moved to the ‘write’ list
Dirty data can be on the ‘write’ list and
on the LRU list
DBWn
At some time after the redo entries have
been written into the online redo logs,
the database writer (DBWn) writes the
dirty buffer back to the database
This is called ‘delayed write’ and is
based on initialization parameters
DBWn (Database Writer)
Can have one or more running
Only available on systems with Asynch I/O
Can use I/O slaves to duplicate the above on
systems without it
Performs all WRITES to the database
Keeps the BUFFER CACHE clean and free
When does the DBWR write?
The dirty list reaches a threshold length
A DBWR timeout
LGWR issues a checkpoint
LGWR (Log Writer)
Writes the REDO log entries (located in
the REDO LOG BUFFER) to the REDO
LOG files
Only the changed data, not the entire
Oracle block(s) is written to the redo logs
Issues checkpoints
Online Redo Log Files
The online redo log files hold the
‘redo entries’
Only the changed bytes are written to
the online redo log file
The entire data block is not written to
these logs
Online Redo Log Files
There is a fixed number of online redo
log file groups
Defined at database creation time
Can add or drop groups or members
(discussed later)
Online Redo Log Files
Redo log file groups cycle
If there are three redo log file groups:
When the first group is full, LGWR starts writing tothe
second group
When the second group is full, LGWR writes to the
third group
When the third group is full, LGWR writes to the first
group
LGWR (Log Writer)
What causes the LGWR to clear the REDO LOG
BUFFER and transfer the transactions to disk?
When a user process COMMITS a
TRANSACTION
TIME-OUT (caused every three seconds)
When the redo log buffer becomes 1/3 FULL
When the DBWR writes the dirty buffers to
disk