- 0
- 0
- 约2.27万字
- 约 14页
- 2026-02-11 发布于河北
- 举报
5.3Oracle数据库内存纭构
本节课我们学习Oracle数据库的内存结构。
Oracle的内存配置与oracle性能息息相关。关于内存的配置,是最影响Oracle性能的
配置。内存还接影响到其他两个重要资源的消耗:CPU和10.
先看一下Oracle内存存储的主要内容是什么:
程序代码(PLSQL、Java);
关于己经连接的会话的信息,包括当前所有活动和非活动会话:
程序运行时必须的相关信息,例如查询计划;
Oracle进程之间共享的信息和相互交流的信息,例如锁;
那些被永久存储在外围存储介质上,被cache在内存中的数据(如redolog条目,数据
块)。
每个Oracle数据库都是由OracleInstance(实例)与数据库(数据文件,控制文件、
重做日志文件)组成,其中所谓实例就是用户同数据库交G的媒介,用户通过于一个实例相
连来操作数据库。而实例又是由统一的内存结构(SGA,PGA,UGA)和一批内存驻留进
程组成。实例在操作系统中用ORACL_SID来标识,在Oracle中用参数INSTANC_NAM
来标识,它们两个的值是相同的。数据库启动时,系统首先在服务器内存中分配系统全局
区(SGA),构成了Oracle的内存结构,然后启动若干个常驻内存的操作系统进程,即组
成了Oracle的进程结构,内存区域和后台进程合称为一个Oracle实例。
1、SGA
SGA是一组为系统分配的共享的内存结构,可以包含一个数据库实例的数据或控制信息。
如果多个用户连接到同一个数据库实例,在实例的SGA中,数据可以被多个用户共享。当
数据库实例启动时,SGA的内存被自动分配;当数据库实例关闭时,SGA内存被回收。SGA
是占用内存最大的一个区域,同时也是影响数据库性能的重要因素。
SGA区是可读写的。所有登录到实例的用户都能读取SGA中的信息,而在oracle做
执行操作时,服务进程会将修改的信息写入SGA区。
SGA主要包括了以下的数据结构:
数据缓冲(BufferCache)
重做日志缓冲(RedoLogBuffer)
共享池(SharedPool)
Java池(JavaPool)
大池(LargePool)
流池(StreamsPool-10g以后才有)
数据字典缓存(DalaDictionaryCache)
其他信息(如数据库和实例的状态信息)
SGA中的数据字典缓存和其他信息会被实例的后台进程所访问,它们在实例启动后就
固定在SGA中了,而且不会改变,所以这部分又称为固定SGA(FixedSGA)0这部分区
域的大小一般小于100K。
SharedPool、JavaPool、LargePool和StreamsPool这几块内存区的大小是相应系统参数
设置而改变的,所以有通称为可变SGA(VariableSGA)o
图1是OracleWg的SGA架构。
SystemGlobalArea(SGA)
原创力文档

文档评论(0)