oracle ex版内存结构简述

oracle ex版虽然是正式版的简化版,但总体框架是相似的,在一些局部上有加加减减的不同而已。

一、内存结构

什么是Oracle instance?
每一个实例,是由一组后台进程和分配的内存所组成的。
为实例分配的内存又分为两部分,SGA和PGA。

System global area (SGA),系统全局区。是一个包含了数据缓冲和控制信息的共享内存区域。SGA被划分为若干个缓存区和数据池。
Program global area (PGA),程序全局区。是每个服务器进程(Server Process)使用的一块包含数据和控制信息的内存区域。PGA用来处理SQL语句和session information。


从图中可以看到SGA是所有进程共用的,PGA是每个响应客户端请求的进程都会分配一块自己的PGA内存区域。

SGA由若干个部分组成,主要包括以下几个部分。

1)Buffer cache:高速缓冲区。
用于对查询、修改数据的缓存,避免反复读物理磁盘这样一个费时的操作。简单来说,对SQL语句执行结果的数据的缓存。

2)Shared pool:共享池。
缓存SQL语句,以便重用。
缓存数据字段信息,比如用户账户数据,表和索引的描述,和权限。使其可以快速访问和重用。
缓存存储过程,使其可以快速访问到。
简单来说,对SQL语句、存储过程等代码,经过语法分析并且正确之后进行缓存。涉及到软解析和硬解析的区别。

3)Redo log buffer:重做日志缓冲区。
缓存重做信息,在适当的时机,系统会将重做信息一次性写入到物理磁盘的重做文件里。简单来说,缓存重做日志,减少频繁的磁盘写入。

4)Large pool:大型池。
是一个可选的内存区域。为各种服务器进程缓存大型的I/O请求操作。