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 服务进程;
备份和恢复操作
版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1