Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Monitoring and Managing Memory Copyright © 2006, Oracle. All rights reserved. Objectives After completing this lesson, you should be able to: • Describe the memory components in the SGA • Implement Automatic Shared Memory Management • Manually configure SGA parameters • Configure automatic PGA memory management 8-2 Copyright © 2006, Oracle. All rights reserved. Memory Management: Overview DBAs must consider memory management to be a crucial part of their job because: • There is a finite amount of memory available • Allocating more memory to serve certain types of functions can improve overall performance • Automatically tuned memory allocation is often the appropriate configuration, but specific environments or even short-term conditions may require further attention 8-3 Copyright © 2006, Oracle. All rights reserved. Oracle Memory Structures Server process 1 PGA Server process 2 PGA Background process PGA SGA Shared pool Streams pool Large pool Keep buffer cache Recycle buffer cache Java pool 8-4 Database buffer cache Redo log buffer Copyright © 2006, Oracle. All rights reserved. nK block size buffer caches Buffer Cache SGA Server LRU Checkpoint queue lists . . . . DB buffer cache . . . . DBWn DB_BLOCK_SIZE DB_CACHE_SIZE DB_RECYCLE_CACHE_SIZE DB_KEEP_CACHE_SIZE Data files 8-6 Copyright © 2006, Oracle. All rights reserved. Using Multiple Buffer Pools SGA DB buffer caches Recycle pool Keep pool Default pool 8-8 Copyright © 2006, Oracle. All rights reserved. Using Multiple Buffer Pools CREATE INDEX cust_idx … STORAGE (BUFFER_POOL KEEP …); ALTER TABLE oe.customers STORAGE (BUFFER_POOL RECYCLE); ALTER INDEX oe.cust_lname_ix STORAGE (BUFFER_POOL KEEP); 8-9 Copyright © 2006, Oracle. All rights reserved. Shared Pool • • • • Size is specified by using SHARED_POOL_SIZE. Library cache contains statement text, parsed code, and execution plan. Data dictionary cache contains definitions for tables, columns, and privileges from the data dictionary tables. The User Global Area (UGA) contains session information if using Oracle shared server. Shared pool Shared pool Library cache Shared Datapool dictionary cache UGA 8-10 Copyright © 2006, Oracle. All rights reserved. Large Pool • • • Can be configured as a separate memory area in the SGA Is sized by the LARGE_POOL_SIZE parameter Is used to store data in memory for: – – – – UGA Backup and restore operations Session data for the shared servers Parallel query messaging Redo log Database buffer buffer cache Shared pool Library cache Large pool UGA Backup Dictionary cache Session Parallel 8-11 Copyright © 2006, Oracle. All rights reserved. Java Pool • • • Can be configured as a separate memory area in the SGA Is sized by the JAVA_POOL_SIZE parameter Is used to store data in memory for all sessionspecific Java code and data within the JVM Redo log Database buffer buffer cache Shared pool Library cache Dictionary cache 8-12 Copyright © 2006, Oracle. All rights reserved. Large pool Java pool Redo Log Buffer Redo log Database buffer buffer cache Shared pool Library cache Dictionary cache Server process LGWR ARCn Control files SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id=736; Data files Redo log files 8-13 Copyright © 2006, Oracle. All rights reserved. Archived log files Automatic Shared Memory Management: Overview • • • Automatically adapts to workload changes Maximizes memory utilization Helps eliminate out-of-memory errors Buffer cache Example: Buffer cache Large pool Large pool 8-14 Shared pool Shared pool Java pool Streams pool Java pool Streams pool Online users Batch jobs Copyright © 2006, Oracle. All rights reserved. Benefits of Automatic Shared Memory Management DB_CACHE_SIZE SHARED_POOL_SIZE LARGE_POOL_SIZE JAVA_POOL_SIZE STREAMS_POOL_SIZE Total SGA size SGA_TARGET 8-15 Copyright © 2006, Oracle. All rights reserved. How ASMM Works • • ASSM is based on workload information that MMAN captures in the background. MMAN uses memory advisors. • • Memory is moved to where it is needed the most. If an SPFILE is used (which is recommended): – Component sizes are saved across shutdowns. – Saved values are used to bootstrap component sizes. – There is no need to relearn optimal values. 8-16 Copyright © 2006, Oracle. All rights reserved. Configuring ASMM by Using Database Control 8-17 Copyright © 2006, Oracle. All rights reserved. Manually Configuring ASMM To have minimum sizes for some of the memory components, you should manually configure those component sizes: • If the automatically computed sizes do not serve your purpose for some reason • If there are short peaks or valleys in required memory that are not detected by ASMM • If you simply want a guaranteed minimum amount of memory for a specific component 8-18 Copyright © 2006, Oracle. All rights reserved. Manually Configuring ASMM Autotuned Autotuned Autotuned Shared pool Database buffer cache Redo log buffer Streams pool Fixed SGA Large pool Keep buffer pool Java pool Autotuned Autotuned Total SGA size = 8 GB SGA_TARGET = 8G STATISTICS_LEVEL = TYPICAL 8-19 Copyright © 2006, Oracle. All rights reserved. Behavior of Autotuned SGA Parameters • When SGA_TARGET is not set or is set to zero: – Autotuned parameters behave as normal – SHARED_POOL_SIZE may need to be increased from settings used in earlier database versions SELECT SUM(bytes)/1024/1024 size_mb FROM v$sgastat WHERE pool = 'shared pool'; • When SGA_TARGET is set to a nonzero value: – Default value of autotuned parameters is zero – The specified value is used as a minimum size SELECT component, current_size/1024/1024 size_mb FROM v$sga_dynamic_components; 8-21 Copyright © 2006, Oracle. All rights reserved. Behavior of Manually Tuned SGA Parameters • Some components are not autotuned. – KEEP and RECYCLE buffer caches – Multiple block size caches – Log buffer • • 8-22 These components must be manually configured using database parameters. The memory used by these components reduces the amount of memory available for autotuning the SGA. Copyright © 2006, Oracle. All rights reserved. Using the V$PARAMETER View SGA_TARGET = 8G DB_CACHE_SIZE = 0 JAVA_POOL_SIZE = 0 LARGE_POOL_SIZE = 0 SHARED_POOL_SIZE = 0 STREAMS_POOL_SIZE = 0 SELECT name, value, isdefault FROM v$parameter WHERE name LIKE '%size'; 8-23 Copyright © 2006, Oracle. All rights reserved. Modifying the SGA_TARGET Parameter • The SGA_TARGET initialization parameter: – Is dynamic – Can be increased up to SGA_MAX_SIZE – Can be reduced until all components reach their minimum size • 8-24 A change in the value of SGA_TARGET affects only automatically sized components. Copyright © 2006, Oracle. All rights reserved. Disabling ASMM • Setting SGA_TARGET to zero disables autotuning. • Autotuned parameters are set to their current sizes. The SGA size as a whole is unaffected. • SGA size = 8 GB Parameters: sga_target = 8G shared_pool_size = 1G Original values 8-25 SGA size = 8 GB Parameters: sga_target = 0 db_cache_size = 5G shared_pool_size = 2G large_pool_size = 512M java_pool_size = 256M streams_pool_size = 256M Copyright © 2006, Oracle. All rights reserved. Manually Resizing Dynamic SGA Parameters • For autotuned parameters, manual resizing: – Results in immediate component resize if the new value is greater than the current size – Changes the minimum size if the new value is smaller than the current size • 8-26 Resizing manually tuned parameters affects only the tunable portion of the SGA. Copyright © 2006, Oracle. All rights reserved. Program Global Area (PGA) PGA Server process PGA Private Cursor Session SQL and SQL memory areas area Dedicated connections Shared server PGA Shared server connections 8-27 Shared pool or large pool Copyright © 2006, Oracle. All rights reserved. PGA Work area Automatic PGA Memory Management • Dynamically adjusts the amount of PGA memory dedicated to work areas, on the basis of the PGA_AGGREGATE_TARGET parameter • Helps maximize the performance of all the memory-intensive SQL operations Is enabled by default • 8-29 Copyright © 2006, Oracle. All rights reserved. PGA Management Resources • Statistics to manage the PGA_AGGREGATE_TARGET initialization parameter, such as PGA cache hit percentage • Views for monitoring the PGA work area include: – – – – – • v$sql_workarea_histogram v$pgastat v$sql_workarea_active v$sql_workarea v$tempseg_usage Views to assist in sizing the PGA work area are: – v$pga_target_advice – v$pga_target_advice_histogram 8-30 Copyright © 2006, Oracle. All rights reserved. Using the Memory Advisor to Size the SGA 8-31 Copyright © 2006, Oracle. All rights reserved. Using the Memory Advisor to Size the PGA 8-32 Copyright © 2006, Oracle. All rights reserved. Efficient Memory Usage: Guidelines • • Try to fit the SGA into physical memory. Tune for a high buffer cache hit ratio, with the following caveats: – Even valid and necessary full table scans lower it. – It is possible that unnecessary repeated reads of the same blocks are artificially raising it. • 8-33 Use the Memory Advisor. Copyright © 2006, Oracle. All rights reserved. Memory Tuning Guidelines for the Library Cache • 8-35 • • • Establish formatting conventions for developers so that SQL statements match in the cache. Use bind variables. Eliminate unnecessary duplicate SQL. Consider using CURSOR_SHARING. • • • Use PL/SQL when possible. Cache sequence numbers. Pin objects in the library cache. Copyright © 2006, Oracle. All rights reserved. Summary In this lesson, you should have learned how to: • Describe the memory components in the SGA • Implement Automatic Shared Memory Management • Manually configure SGA parameters • Use automatic PGA memory management 8-37 Copyright © 2006, Oracle. All rights reserved. Practice Overview: Using ASMM to Correct a Memory Allocation Problem This practice covers the following topics: • Diagnosing a memory allocation problem • Enabling Automatic Shared Memory Management 8-38 Copyright © 2006, Oracle. All rights reserved.