PGA:
1.PGA内存管理受初始化参数WORKAREA_SIZE_POLICY的控制(AUTO或MANUAL),可以在会话级修改。
2.PGA自动内存管理可以通过两种方式实现:
2.1 通过设置PGA_AGGREGATE_TARGET初始化参数,告诉oracle最多可以使用多少PGA内存。
2.2 通过设置MEMORY_TARGET初始化参数,告诉oracle实例总共可用的SGA+PGA总和,由数据库自己决定合适的PGA大小。
2.3 若通过手工PGA管理,需要设置SORT_AREA_SIZE HASH_AREA_SIZE等参数大小。
SGA:
3.SGA中的大池(large pool),主要用途有3个:作为共享服务器连接的会话内存(UGA);并行执行时,使用大池作为消息缓冲区(request queue/response queue);RMAN备份使用大池作为磁盘IO缓冲区。
4.SGA中的固定SGA区,相当于SGA中的”自启区“,oracle在内部需要利用该区来找到SGA的其他区。
REDO BUFFER:
5.redo buffer刷出的触发条件:
每3秒一次;
无论何时有人提交请求时;
要求LGWR切换日志文件时;
redo buffer缓冲区1/3满或者包含了1M数据时。
当脏块要写入数据文件,但是与脏块相关的redo日志还没写入online redo log中,DBWn会触发LGWR写出redo缓存内容。
LARGE POOL:
6.大池是一块回收型的内存空间,用于大块内存的空间分配。而共享池是保持型缓冲区,主要用于小块内存空间的管理。
自动内存管理:
7.如果启用自动内存管理,当数据库实例重新启动,实例是如何确定内存各个区域如何分配大小呢?原因就在于spfile中的_db_cache_size/_java_pool_size/_large_pool_size和_shared_pool_size等参数来”记忆“该数据库实例的历史大小。
8.在自动内存管理中,SGA_TARGET和PGA_AGGREGATE_TARGET代表SGA和PGA内存分配的下限值。而SGA_MAX_SIZE为SGA最大可用的内存大小,该值只是一个参考值,实际可能超过这个值。
9.不管是自动内存管理还是手工内存管理,各个池的内存都以颗粒(granule)单元来分配。颗粒大小可以为4/8/16M,颗粒的大小取决于SGA大小,SGA越大,颗粒越大,反之越小。颗粒大小可以通过v$sga_dynamic_components视图中的granule_size来查看。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30167136/viewspace-1577469/
,如需转载,请注明出处,否则将追究法律责任。