The Self-Managing Database - Oracle id: 40091 The Self-Managing Database: Automatic SGA Memory...
Transcript of The Self-Managing Database - Oracle id: 40091 The Self-Managing Database: Automatic SGA Memory...
Session id: 40091
The Self-Managing Database: Automatic SGA Memory Management
Tirthankar LahiriSenior Manager, Distributed Cache &
Memory ManagementOracle Corporation
OutlineOverview of Oracle Shared Memory (SGA)Introducing Automatic SGA Management Benefits Using the featureHow Does it Work? Summary
SGA Overview
SGA: Oracle’s “Shared Global Area”Comprises multiple memory components
Java Pool
DatabaseBuffer Cache
Redo Log BufferShared Pool
Large Pool
SGA
Fixed SGA
SGA Overview
In past releases: Separate parameters for SGA components
DB_CACHE_SIZESHARED_POOL_SIZELARGE_POOL_SIZEJAVA_POOL_SIZE
SGA Overview
Difficult to optimally set parametersUndersized component:
– Poor performance (excess IO, parses)– Out-of-memory errors (ORA-4031)
Oversized component: – Wastes memory – Configuring for the worst-case
SGA Overview
Oracle9i introduced SGA memory advisories:– Buffer Cache Advice (v$db_cache_advice)– Shared Pool Advice (v$shared_pool_advice)
Predicts performance for different sizes
Buffer Cache Advice
Physical IOs
Buffer cache size
SGA Overview
Advisories allow better sizing for components– Available out-of-the-box– Reduces trial and error– Recommendations based on actual workload– With Dynamic SGA:
Recommendations can be implemented online
Task of adjusting sizes still left to the DBA
Introducing Automatic SGA Memory Management
The Oracle Database 10g– Single parameter for total SGA size– Automatically sizes SGA components– Memory is transferred to where most needed – Uses workload information – Uses internal advisory predictions
Introducing Automatic SGA Memory Management
Single parameter for SGA size
DB_CACHE_SIZESHARED_POOL_SIZELARGE_POOL_SIZEJAVA_POOL_SIZE
Enable Automatic Shared Memory Management
SGA_TARGET
Introducing Automatic SGA Memory Management
Set SGA_TARGET to the total SGA size
Java Pool
DatabaseBuffer Cache
Redo Log BufferShared Pool
Large Pool
SGA
Fixed SGA
SGA_TARGET = 8G
Introducing Automatic SGA Memory Management
Four most commonly configured components are automatically sized:
– Shared Pool– Large Pool– Java Pool– Buffer Cache (DEFAULT buffer pool)
STATISTICS_LEVEL must be set to TYPICAL
Benefits of Automatic SGA Management
Automatically adapts to workload changesMaximizes memory utilizationSingle Parameter makes it easier to useHelps eliminate out of memory errorsCan help improve performance
Large Batch Jobs
Java Pool
Shared Pool
Large Pool
Buffer Cache
Shared Pool
Large Pool
Buffer Cache
Java Pool
Online Users
Using Automatic SGA Management: SGA_TARGET Parameter
Includes everything in the SGA:– Fixed SGA and other internal allocations– Automatically sized SGA components
Default buffer cacheShared pool Large poolJava pool
– Manual SGA componentsLog bufferOther caches (KEEP/RECYCLE, other blocksizes)Streams pool (new in 10g)
When SGA_TARGET is not set (or zero):– Auto-tuned parameters behave as in Oracle9i– Exception: SHARED_POOL_SIZE:
In Oracle10g internal startup overhead is includedMay need to increase value from Oracle9i Query to determine actual shared pool size in 9iShared Pool Size automatically adjusted during upgrade
Using Automatic SGA Management: Automatically Tuned Parameters
SELECT SUM(bytes)FROM v$sgastatWHERE pool = 'shared pool';
Using Automatic SGA Management: Automatically Tuned Parameters
When SGA_TARGET is set:– Default values of auto-tuned
parameters is zero– A non-zero value is a lower bound
on the size of the component – Actual component size may be
higher
Java Pool (1G)
Large Pool (1G)
Buffer Cache (3G)
Shared Pool (3G)
(Min size = 1G)
Parameters: SGA_TARGET = 8GLARGE_POOL_SIZE = 1GSHARED_POOL_SIZE = 1G
Sga
size
= 8
G
Using Automatic SGA Management: Determining the current component sizes
Using Automatic SGA Management: Manually Tuned Parameters
Some components not yet auto-tuned– Other buffer caches (Keep/Recycle)– Multiple blocksize caches– Streams Pool
Their parameters are user-specifiedPrecisely control the sizes of their components
Using Automatic SGA Management:Manually Tuned Parameters
When SGA_TARGET is set:– Total size of manual parameters is subtracted– Balance is given to the auto-tuned components
Keep Cache(1G)
Parameters:SGA_TARGET = 8GDB_KEEP_CACHE_SIZE = 1G
Auto Tuned Components (7G)
SharedPool
Large Pool
Default Cache
Java Pool
Using Automatic SGA Management Using v$parameter
Initialization parameter values:SGA_TARGET = 8G DB_CACHE_SIZE = 0JAVA_POOL_SIZE = 0LARGE_POOL_SIZE = 0SHARED_POOL_SIZE = 0
Querying V$PARAMETER
SELECT name, value, isdefault FROM v$parameterWHERE name like '%size';
Enabling Automatic SGA Management
Using Automatic SGA Management : Resizing SGA_TARGET
SGA_TARGET is dynamicCan be increased till SGA_MAX_SIZECan be reduced till some component reaches minimum sizeChange in value of SGA_TARGET affects only automatically sized components
Using Automatic SGA Management : Resizing SGA_TARGET
SGA_MAX_SIZE=10G
SGA_TARGET=9G
DatabaseBuffer Cache
DatabaseBuffer Cache
Redo Log Buffer
Large Pool
SGA_TARGET = 8G
Fixed SGA
Shared Pool
Java Pool
Disabling Automatic SGA Management
SGA_TARGET = 0 disables auto-tuning– Auto parameters set to current component sizes– SGA size as a whole is unaffected
Parameters:sga_target = 8Gshared_pool_size=1G
sga size = 8G Parameters:sga_target = 0db_cache_size = 4Gshared_pool_size = 2Glarge_pool_size = 512Mjava_pool_size = 512M
sga size = 8G
SGA_TARGET=0
Using Automatic SGA Management Resizing Auto Tuned Parameters
• Results in component resize only if new value > current size• Otherwise silently changes the minimum size
SGA_TARGET = 8G
Java Pool
DatabaseBuffer Cache
Redo Log Buffer
Large Pool
SGA
Fixed SGA
Shared Pool
actual size = 2G
SHARED_POOL_SIZE=1G
Using Automatic SGA Management Resizing Manually Set Parameters
Manual parameter resize affects the tunable portion of the SGA
Parameters:SGA_TARGET = 8GDB_KEEP_CACHE_SIZE = 1G
KeepCache(1G)
Auto Tuned Components (7G)
SharedPool
Large Pool
Default Cache
Java Pool
KeepCache(2G)
Auto Tuned Components (6G)
Parameters:SGA_TARGET = 8GDB_KEEP_CACHE_SIZE = 2G
How Does It Work?SGA Background Process
Background SGA Memory
Broker
Tracks component size
and pending resize
Coordinates sizing of SGA components
How Does It Work?Basic SGA Tuning Principles
Based on workload informationCaptures statistics periodically in backgroundUses the different memory advisoriesMemory is moved to where most neededNo need to configure parameters for the worst-case
How Does It Work?Persistence of auto-tuned values
If server parameter file (spfile) is used:– Component sizes saved across shutdowns– Saved values used to bootstrap component sizes– Avoids having to relearn optimal values
For this reason use of spfile is recommended with Automatic SGA Management
Conclusions
Relieves the administrator from manually configuring the SGAInternal algorithm adjusts based on workloadNo need to configure for the worst-caseSimple usage model
Next Steps….Recommended sessions
– The Self-Managing Database : Proactive Space and Schema Object Management (Thurs, Sept 11, 8 AM)
– The Self-Managing Database : Automatic Health Monitoring (Thurs, Sept. 11, 11 AM)
– The Invisible Oracle : Deploying Oracle Database in Embedded Environment (Wed, Sept. 10, 4:30 PM)
Recommended demos and/or hands-on labs– Oracle Database 10g : Manage the Oracle Environment Hands-
On Lab– Campground Demo : “The Self-Managing Database: Memory
Management”
Relevant web sites to visit for more information– http://otn.oracle.com/products/manageability/database/content.ht
ml
Reminder –please complete the OracleWorld online session survey
Thank you.
Q U E S T I O N SQ U E S T I O N SA N S W E R SA N S W E R S