Académique Documents
Professionnel Documents
Culture Documents
About ZyK
Resources
To live a full life
Page views
o 138,642 hits
Calendar
Tháng Ba 2009
T2 T3 T4 T5 T6 T7 CN
« Tháng 10 Tháng 4 »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Catagories
ZyK News
o Lịch trình chuyến đi Ủng Hộ Miền Trung
Flickr Photos
More Photos
Oracle Technology
o Oracle Announces Significant Acceleration of Oracle® Database 11g Release 2
o Leading Research Firm Names Oracle the Leader in Worldwide Embedded Database
Management Systems 18/09/2010
Upgrading to Oracle08/09/2010
Benchmark 17/08/2010
o Oracle Sets World Record Result on SAP® Sales and Distribution-Parallel Standard
Application Bench28/06/2010
300% 25/06/2010
Introduction
This post is regarding the basic database architecture for 9i. Its been very late to upload this basic
stuff, but I realized that it would be an incomplete blog without having even a brief architecture. So
here it is.
Below is the figure which gives a overview of “Inside Oracle”.
An Oracle database is a combination of oracle Instance and data files on the file system.
Again Oracle Instance is nothing but Memory architecture and Background processes. Lets start the
Memory Architecture
Oracle database uses memory for its operation. The total memory allocated to the Oracle database
can be broadly categorized into SGA (System Global Area) and PGA (Program Global Area).
Shared pool
Java pool
We can also categorized SGA into fixed SGA and variable SGA. When asked about Fixed
SGA, AskTom says that “fixed SGA is a component of the SGA that varies in size from platform to
platform and release to release. It is compiled into the database. The fixed SGA contains a set of
variables that point to the other components of the SGA and variables that contain the values of
various parameters. The size of the fixed SGA is something over which we have no control and it is
generally very small. Think of this area as a bootstrap section of the SGA, something Oracle uses
SGA.”
Variable SGA contains 4 main components as listed above, those are “Database Buffer Cache”, “Redo
Log Buffer”, “Shared Pool” and “Large Pool”. We call it variable SGA because we can alter the size of
each of these components manually using ALTER SYSTEM command. The size of each of the
components of variable SGA is determined by INIT.ORA parameters. Following are the INIT.ORA
Database Buffer Cache – This is used to hold the data into the memory. When ever a user access
the data, it gets fetched into database buffer cache and it will be managed according to LRU (Least
recently used) algorithm. Advantages – If a user is requesting data, which gets fetched into the buffer
cache, then next time if he ask for same data with in a short period of time, the data will be read from
buffer cache and Oracle process does not have to fetch data again from disk. Reading data from buffer
cache is a faster operation. Another advantage is that if a user is modifying the data, it can be
modified in the buffer cache which is a faster operation then modifying the data directly on the disk.
Redo Log Buffer - This memory block hold the data which is going to be written to redo log file. Why
do we need this data? To rollback the changes if the need be. But instead of writing the data directly
to the redo log files, it is first written to log buffer which improves performance and then with the
hold the parsed SQL statement and execution plans and parsed PLSQL codes. Dictionary cache hold
the information about user privileges, tables and column definitions, passwords etc. These 2 memory
Large Pool - If defined then used for heavy operations such as bulk copy during backup or during
restore operation.
The total size of SGA is determined by a parameter SGA_MAX_SIZE. Below is the simple calculation of
memory sizes.
This will show fixed and variable size SGA. Fixed size SGA, as I said is not in our control. However we
can verify the size of variable SGA and other memory values shown above.
This value is in terms of blocks. we can find the size of a block using DB_BLOCK_SIZE parameter
Also Variable size = “Shared Pool Size” + “Large Pool Size” + “Java Pool size” (some times defined)
POOL SUM(BYTES)
———– ———-
11069860
PGA contains information about bind variables, sort areas, and other aspect of cursor handling. This is
not a shared area and every user has its own PGA. But why PGA is required for every user? The
reason being that even though the parse information for SQL or PLSQL may be available in library
cache of shared pool, the value upon which the user want to execute the select or update statement
cannot be shared. These values are stored in PGA. This is also called Private Global Area.
1. Default Cache
2. Keep Cache
3. Recycle Cache
If we define the cache size using DB_CACHE_SIZE (or DB_BLOCK_BUFFER and specify the block size)
then this will be default cache. The cache has a limited size, so not all the data on disk can fit in the
cache. When the cache is full, subsequent cache misses cause Oracle to write dirty data already in the
You can configure the database buffer cache with separate buffer pools that either keep data in the
buffer cache or make the buffers available for new data immediately after using the data blocks.
The KEEP buffer pool retains the schema object’s data blocks in memory. This is defined using
The RECYCLE buffer pool eliminates data blocks from memory as soon as they are no longer
You can also define multiple DB block sizes using following parameters. Example if you have defined
standard default block size of 4K, then following parameters can be used to define a size of 2K, 8K,
DB_2K_CACHE_SIZE
DB_8K_CACHE_SIZE
DB_16K_CACHE_SIZE
DB_32K_CACHE_SIZE
Note that you can define the Keep and Recycle cache only on standard block size and buffer cache size
Shared Pool, as we have seen previously contains the parsed SQL statements and execution plans.
With continuous use of database, after a period of time the shared pool will get fragmented. New
parsed SQL and execution plans comes and old one gets aged out and hence overwritten. This will
also lead to larger packages being aged out with new entries going into shared pool. Hence access to
such larger packages will take time to parse and create execution plan. This might cause performance
issues.
To avoid such situation, you can define a parameter SHARED_POOL_RESERVED_SIZE. This will
reserve some additional space other then shared_pool_size. If an object (either parsed SQL statement
or execution plan) is stored in reserved shared pool area then it will not age out.
For large allocations, the order in which Oracle attempts to allocate space in the shared pool is the
following:
2. If there is not enough space in the unreserved part of the shared pool, and if the allocation is
large, then Oracle checks whether the reserved pool has enough space.
3. If there is not enough space in the unreserved and reserved parts of the shared pool, then
Oracle attempts to free enough memory for the allocation. It then retries the unreserved and
Process Architecture
Oracle has several process running in the background for proper functioning of database. Following
1. Server Process
2. Background Process
Server Process – to handle the requests of user processes connected to the instance. Server
processes (or the server portion of combined user/server processes) created on behalf of each user’s
Read necessary data blocks from datafiles on disk into the shared database buffers of the
Return results in such a way that the application can process the information
Background Process - An Oracle instance can have many background processes; not all are always
Checkpoint (CKPT)
Archiver (ARCn)
Recoverer (RECO)
Dispatcher (Dnnn)
Server (Snnn)
On many operating systems, background processes are created automatically when an instance is
started.
Database writer (DBWn) - The database writer process (DBWn) writes the contents of buffers to
datafiles. The DBWnprocesses are responsible for writing modified (dirty) buffers in the database
buffer cache to disk. Although one database writer process (DBW0) is adequate for most systems, you
can configure additional processes (DBW1 through DBW9) to improve write performance if your
system modifies data heavily. These additional DBWn processes are not useful on uniprocessor
systems.
Log Writer (LGWR) – The log writer process (LGWR) is responsible for redo log buffer
management–writing the redo log buffer to a redo log file on disk. LGWR writes all redo entries that
have been copied into the buffer since the last time it wrote.
Checkpoint (CKPT) - When a checkpoint occurs, Oracle must update the headers of all datafiles to
record the details of the checkpoint. This is done by the CKPT process. The CKPT process does not
necessary, at instance startup.SMON is also responsible for cleaning up temporary segments that are
no longer in use and for coalescing contiguous free extents within dictionary-managed tablespaces. If
any dead transactions were skipped during crash and instance recovery because of file-read or offline
errors, SMON recovers them when the tablespace or file is brought back online. SMON wakes up
The process monitor (PMON) performs process recovery when a user process fails. PMON is
responsible for cleaning up the database buffer cache and freeing resources that the user process was
using. For example, it resets the status of the active transaction table, releases locks, and removes
PMON periodically checks the status of dispatcher and server processes, and restarts any that have
died (but not any that Oracle has terminated intentionally). PMON also registers information about the
The archiver process (ARCn) copies online redo log files to a designated storage device after a log
switch has occurred. ARCn processes are present only when the database is in ARCHIVELOG mode,
An Oracle instance can have up to 10 ARCn processes (ARC0 to ARC9). The LGWR process starts a
new ARCn process whenever the current number of ARCn processes is insufficient to handle the
workload. The ALERT file keeps a record of when LGWR starts a new ARCn process.
Recoverer (RECO) – The recoverer process (RECO) is a background process used with the
transactions. The RECO process of a node automatically connects to other databases involved in an in-
doubt distributed transaction. When the RECO process reestablishes a connection between involved
database servers, it automatically resolves all in-doubt transactions, removing from each database’s
pending transaction table any rows that correspond to the resolved in-doubt transactions.
The RECO process is present only if the instance permits distributed transactions and if
Lock Manager Server (LMS) - In Oracle9i Real Application Clusters, a Lock Manager Server process
Queue Monitor (QMNn) – The queue monitor process is an optional background process for Oracle
Advanced Queuing, which monitors the message queues. You can configure up to 10 queue monitor
processes. These processes, like the Jnnn processes, are different from other Oracle background
processes in that process failure does not cause the instance to fail.
The above once explained are the mail background processes. Please refer to the Oracle
References:
Comments (6)
advance concept
You must have seen the basic concepts of Oracle Database scheduler. The basic concepts includes
programs, Jobs and schedule. Oracle Database 10g scheduler – Basic post includes these concepts
and shows how to create programs, jobs and schedule the same.
This post is regarding the advanced concepts of Oracle 10g scheduler. This includes Job Classes,
Window, Window group and profiles. Lets see each of these concepts one by one.
Job Classes
Job class allows DBA to categorize the jobs according to similar resource requirements. For each jobs
group and limit the resource for each resource group. You can check the existing resource group
CONSUMER_GROUP
——————————
SYS_GROUP
LOW_GROUP
OTHER_GROUPS
AUTO_TASK_CONSUMER_GROUP
DEFAULT_CONSUMER_GROUP
ORA$AUTOTASK_URGENT_GROUP
BATCH_GROUP
ORA$DIAGNOSTICS
ORA$AUTOTASK_HEALTH_GROUP
ORA$AUTOTASK_SQL_GROUP
ORA$AUTOTASK_SPACE_GROUP
CONSUMER_GROUP
——————————
ORA$AUTOTASK_STATS_GROUP
ORA$AUTOTASK_MEDIUM_GROUP
INTERACTIVE_GROUP
14 rows selected.
Each of these resource group is having some defined level of resource usage. We can create a job
class and allocate a resource group to that job class using RESOURCE_CONSUMER_GROUP parameter
as given below.
BEGIN
DBMS_SCHEDULER.create_job_class (
END;
If we don’t provide any value for RESOURCE_CONSUMER_GROUP parameter then a default value of
You can see different job classes and there association to consumer group using the following SQL.
JOB_CLASS_NAME RESOURCE_CONSUMER_GROUP
—————————— ——————————
DEFAULT_JOB_CLASS
AUTO_TASKS_JOB_CLASS AUTO_TASK_CONSUMER_GROUP
DBMS_JOB$
ORA$AT_JCURG_OS ORA$AUTOTASK_URGENT_GROUP
ORA$AT_JCNRM_OS ORA$AUTOTASK_STATS_GROUP
ORA$AT_JCMED_OS ORA$AUTOTASK_MEDIUM_GROUP
ORA$AT_JCURG_SA ORA$AUTOTASK_URGENT_GROUP
ORA$AT_JCNRM_SA ORA$AUTOTASK_SPACE_GROUP
ORA$AT_JCMED_SA ORA$AUTOTASK_MEDIUM_GROUP
ORA$AT_JCURG_SQ ORA$AUTOTASK_URGENT_GROUP
ORA$AT_JCNRM_SQ ORA$AUTOTASK_SQL_GROUP
JOB_CLASS_NAME RESOURCE_CONSUMER_GROUP
—————————— ——————————
ORA$AT_JCMED_SQ ORA$AUTOTASK_MEDIUM_GROUP
AQ$_PROPAGATION_JOB_CLASS
XMLDB_NFS_JOBCLASS
14 rows selected.
Once Job class has been created you can create jobs and assign the jobs to one of the Job class. You
BEGIN
– Job defined by an existing program and schedule and assigned to a job class.
DBMS_SCHEDULER.create_job (
comments => ‘Job defined by an existing program and schedule and assigned toa job class.’);
DBMS_SCHEDULER.set_attribute (
END;
You can check the scheduled jobs and the job class to which they belong using
DBA_SCHEDULER_JOBS
SQL> SELECT owner, job_name, job_class, enabled FROM dba_scheduler_jobs;
Window
A window is a time slot created within the database. A window is associated with a resource plan.
A resource plan defines the resource allocation among the resource consumer group. Do not get
confused with resource consumer group and resource plan. A resource consumer group is
associated with Job Classes which defines how much resources are required by that job for execution.
Where as resource plan is the blue print for resource allocation among resource consumer groups.
So when a resource plan is associated with a window, during that period of time when the window is
active that particular resource plan will be active. This plan will decide the resource allocation to
So if a certain amount of CPU is allocated to a resource plan which is currently assigned to the active
window, then depending on the currently running job classes each will be assigned required resources
from the available resources in the plan. Example of CPU allocated to resource plan is 50% of total
CPU and 2 resource consumer group allocated to 2 job classes is running, one job class requires 20%
CPU and other needs 80% CPU, then 50% CPU of resource plan will be divided into 80:20 ratio and
will be provided to each of job classes. Job class will run the jobs accordingly.
BEGIN
DBMS_SCHEDULER.create_window (
DBMS_SCHEDULER.create_window (
END;
You can display window names and resource plans using following query.
—————————— —————————— —– —–
the OPEN_WINDOW and CLOSE_WINDOW procedures:
BEGIN
– Open window.
DBMS_SCHEDULER.open_window (
END;
BEGIN
DBMS_SCHEDULER.drop_window (
DBMS_SCHEDULER.drop_window (
END;
Window Group
Window group is just a collection of similar windows. It can be created with 0, 1 or many windows as
BEGIN
DBMS_SCHEDULER.create_window_group (
You can display the window group details using following query.
dba_scheduler_window_groups;
—————————— —– —————–
MAINTENANCE_WINDOW_GROUP TRUE 9
ORA$AT_WGRP_OS TRUE 9
ORA$AT_WGRP_SA TRUE 9
ORA$AT_WGRP_SQ TRUE 9
the ADD_WINDOW_GROUP_MEMBER and REMOVE_WINDOW_GROUP_MEMBERprocedures.
BEGIN
DBMS_SCHEDULER.create_window (
DBMS_SCHEDULER.add_window_group_member (
END;
BEGIN
DBMS_SCHEDULER.remove_window_group_member (
END;
BEGIN
DBMS_SCHEDULER.drop_window_group (
END;
References:
http://www.oracle-base.com/articles/10g/Scheduler10g.php
Search…
Tìm ki?m
Tìm kiếm:
lifeFan77 Flat Friedmanfriendship gócHoroscope khanhnd khoanh khac khoảnh
khắckhông tên Let me love you Mars MC09 MusicMyS Ngo Thuy Mien Rang Wo
Top Posts
o Một số kinh nghiệm khi sử dụng Power Point
o Bản đồ Hà Nội
Feedback
dbametrix on Oracle Certification Prog…
23446
o Do What Makes You Happy, Be With Who Makes You Smile…
Dowload
o Kho phần mềm Portable
o Movie
o Music
o Software
o Youtube
HiTech
o Computer Ebook free
o Free code VN
o HVA Online
o Oracle Documentation
Oriental corner
o Nhạc dân tộc
Relax
o .::AC Milan FC::.
o Nhạc số
o Xone FM
Resources
o Authentic American Pronunciation
o Java source
o Tủ sách y học
Tips
o Check IMEI and SIM
o Check Invisible
o WHOIS Search
VodPodPod
239 views
02 Nov 10
Action Movie Pun Brainstorm (With Rob Huebel)
781 views
01 Nov 10
498 views
29 Oct 10
871 views
27 Oct 10
What if All Movies Had Smartphones? - CollegeHumor
1586views
21 Oct 10
follow me on vodpod »