ITPub博客

首页 > 数据库 > Oracle > oracle 内存结构(二)

oracle 内存结构(二)

Oracle 作者:bitifi 时间:2015-09-22 12:52:04 0 删除 编辑

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博客 ” ,链接:http://blog.itpub.net/30496894/viewspace-1806093/,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle分区表详解
请登录后发表评论 登录
全部评论

注册时间:2015-09-21

  • 博文量
    211
  • 访问量
    276652