oracle内存管理

Oracle内存管理--从8i,9i,10g到11g
Oracle把其所管理的内存分为SGA和PGA

SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB。PGA主要包括Sort_area_size, hash_area_size等

Buffer cache ( DB_CACHE_SIZE)--缓冲数据L准确的定义是用来缓存“数据块”。简单的说就是用来缓存从磁盘上读来的数据

Shared pool ( SHARED _POOL_SIZE)--缓冲SQL:用来保留解析的SQL、或者PL/SQL。比方说,当SQL第一次执行时,Oracle把解析的执行计划保存在 Shared pool中,以后再执行相同的SQL,就无须重新解析了。(也就是SQL必须使用绑定变量的道理)

Large pool (LARGE_POOL_SIZE) --缓冲备份还原时候的I/O:用于“shared server system”的“session memory”, “parallel execution”以及备份还原时候作为磁盘的I/O缓冲。

从Oracle 8i到9i--9i解决了PGA的自动管理。
从9i到10g--10g解决了SGA的自动管理。
从10g到11g--11g解决了整个内存(SGA+PGA)的自动管理。

通过Oracle11g的五种内存管理方式来理解Oracle内存管理的进化

1、自动内存管理(默认Oracle11g实例采取的方式):只需要显式的设置MEMORY_TARGET,无须其他内存参数设置。
2、自动共享内存管理(Oracle10g采取的内存管理方式):显式的指定SGA_TARGET的值,无须设定SGA内部的值。
3、手工共享内存管理(Oracle9i采取的内存管理方式):SGA_TARGET 与 MEMORY_TARGET 都要设置为 0. 然后手工设定 share_pool_size 、db_cache_size 等 sga 参数。
4、自动PGA内存管理(Oracle9i引入的方式):这里只需要设置PGA_AGGREGATE_TARGET 的值。当然,如果要做到精细控制而切换到手动PGA内存管理模式,需要设定WORKAREA_SIZE_POLICY = manual (默认为 AUTO),再另行设置SORT_AREA_SIZE等值。
5、手动 PGA 管理(Oracle8i所能够采取的方式):在高版本中需要设置WORKAREA_SIZE_POLICY = manual ,然后分别指定 SORT_AREA_SIZE 等 PGA 相关的参数。

你可能感兴趣的:(oracle,sql,cache,SQL Server)