数据库内存管理机制

从9i开始实现了PGA自动化管理,10g开始实现了SGA自动化管理, 11g 版本可以同时管理PGA和SGA。
1.自动内存管理(AMM)
管理方式
Oracle 实例从总体上管理服务器内存使用,动态调整PGA和SGA的内存。数据库在不同时间执行不同的任务时,会从不同的内存配置中获得收益。例如一个交易数据库,在月初需要大量的事务处理,在月末有大量的查询统计,这时事务处理需要使用较多的数据高速缓存,而查询事务通常需要较大的PGA配置,这个时候自动内存管理机制就是非常实用的。
但数据库内存大小并不是越大越好,如果内存过大,数据库在内存寻址时会花费较多的时间,也会导致使用交换区,这会严重影响性能。
在设置了AMM以后,数据库启动时,PGA和SGA的默认大小为memory_target的40%和60%。
设置方式
MEMORY_TARGET=非零值
当MEMORY_TARGET=非零值时,PGA_AGGREGATE_TARGET和SGA_TARGET的值表示PGA和SGA的最小大小。 
2.自动共享内存管理( ASM M)
管理方式
SGA包含多个内存结构(shared pool,data buffer cache,redo log buffer,large pool, java  pool,stream pool),自动内存管理可以根据内存使用情况分配各个SGA内存结构,确保不存在因SGA组件不够大而带来错误。考虑到数据的安全性,日志缓冲区在实例启动时固定下来,不能进行自动管理,日志缓冲区又LOG_BUFFER参数进行设置。也就是说日志缓冲区是唯一不能动态调整的SGA内存结构。SGA_TARGET为SGA的最小大小
设置方式
MEMORY_TARGET=0
SGA_TARGET=非零值

3.手动共享内存管理
管理方式
除了LOG_BUFFER外,其他的SGA组件参数都可以动态修改大小,手动设置共享内存必须要考虑数据库业务是否需要调整SGA组件来满足要求,调整到多少比较合适,否则可能会产生组件内存不够大的错误。
设置方式
MEMORY_TARGET=0
SGA_TARGET=0
可以动态设置组件大小
SHARED_POOL_SIZE
DB_CACHE_SEIZ
LARGE_POOL_SIZE
STREAMS_POOL_SIZE
JAVA_POOL_SIZE
日志缓冲区参数设置重启实例生效
LOG_BUFFER
4.自动PGA内存管理
管理方式
数据库会根据需求将PGA分配给会话,PGA总量不会超过pga_aggregate_target的值,默认值是大于10MB或是SGA的20%,应对其向上调整,但又不至于过高导致内存分配过量
设置方式
MEMORY_TARGET=0
PGA_AGGREGATE_TARGET=非零值
WORKAREA_SIZE_POLICY=AUTO
5.手动PGA内存管理
管理方式
手动管理PGA时,pga的各个组件大小都是一定的。
设置方式
MEMORY_TARGET=0
PGA_AGGREGATE_TARGET=0
WORKAREA_SIZE_POLICY=MANUAL        
SORT_AREA_SIZE=非零值
HASH_AREA_SIZE=非零值
BI TMAP_MERGE_AREA_SIZE=非零值

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31461640/viewspace-2140316/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31461640/viewspace-2140316/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值