频道栏目
IT货架 > > 正文
SGA概览
网友分享于:Jun 12, 2018 11:58:27 PM    来源: IT货架   

     SGA是一组保存一个数据库实例的数据控制信息的共享内存结构。SGA和一系列的Oracle进程组成Oracle实例,每个实例都有单独的SGA。
     SGA包括:
    (1)数据库缓冲(Database buffer cache)
    (2)重做日志缓冲(redo log buffer)
    (3)共享池(shared pool)
    (4)Java池(Java pool)
    (5)大型池(large pool)
    (6)流池(streams pool)
     (7)数据字典缓冲(data dictionary cache)
    (8)其他各种信息
============================================================= 
     SGA初始化参数:
    (1)SGA_MAX_SIZE
     对于大多数系统来说,整个SGA最好放在内存中。Oracle可以用最小的内存启动实例,并允许实例通过扩展分配内存给SGA组件直到SGA_MAX_SIZE。如果SGA_MAX_SIZE的值小于显式分配给所有组件的内存总和,数据库将忽略SGA_MAX_SIZE的设置。修改SGA_MAX_SIZE的值之后,必须重新启动数据库实例。   
   (2)SGA_TARGET
     10g之前,SGA的各个内存区的大小通过各自的参数指定,并且需要手工调整。此外,一旦分配,各个区的内存只能给本区使用,相互之间是不能共享的。自动共享内存管理(Automatic Shared Memory Management ASMM)通过SGA_TARGET指定SGA可以使用的最大内存大小,而SGA中各个内存的大小由Oracle自行控制。    启用ASMM之后,并不是所有的SGA区的大小都开始动态起来,只有以下的这些区的内存大小动态共享起来:
    * Buffer cache (DB_CACHE_SIZE)
    * Shared pool (SHARED_POOL_SIZE)
    * Large pool (LARGE_POOL_SIZE)
    * Java pool (JAVA_POOL_SIZE)
    * Streams pool (STREAMS_POOL_SIZE)
而SGA中的其他区域的内存大小仍然是固定不共享的。
    此外,SGA_TARGET的大小不能大于SGA_MAX_SIZE。当SGA_TARGET < SGA_MAX_SIZE时,Oracle将忽略SGA_MAX_SIZE的值。================================================================ 
    1 数据库缓冲(Database buffer cache)
    缓冲中的缓存由两个列表组织:写列表和 LRU 列表。写列表保存脏缓存(已经修改但还没有写到磁盘上的数据) 。LRU 列表保存空闲缓存、pinned 缓存和还没有移动到写列表上的脏缓存。空闲缓存不保留可用的数据,pinned 缓存是当前正在访问的缓存。
    2 重做日志缓冲(redo log buffer)
    重做日志缓存是 SGA 中保存数据库变化的循环缓存。信息保存在重做entries 中,重做 entries 保存对数据库进行重建、重做等操作的必须信息,用于数据库恢复
    3 共享池(shared pool)
    保存库缓冲、数据字典缓冲以及并行执行信息缓存和控制结构。
    4 Java池(Java pool)
    在服务器内存中用于所有会话相关的 JVM 内的 Java 代码和数据。
    5 大型池(large pool)
    为下列用途提供大型的内存分配:
     MTS 和 XA接口的会话内存 ;
     I/O 服务进程;
      备份和恢复操作   

广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1