oracle服务
包括:oracle实例(instance)和数据库(database)
instance
oracle实例包含服务端进程和服务端内存
内存结构
SGA系统全局区

- 被所有server process和background process共享的内存区域,随着实例的启动而分配,一个实例只有一个SGA,共享给所有的会话使用
- 共有6个基本组件
shared pool
作用:对sql,pl/sql程序进行语法分析、编译、执行的内存区域,存放最近执行的SQL和数据定义
- library cache
- 存放shared SQL area
- 存放shared PL/SQL area
- 大小取决于shared pool size
- data dictionary cache
- server result cache
- 存放服务器端的SQL结果集及PL/SQL函数返回值
database buffer cache
用来缓存从数据文件中读取的数据;延迟写数据文件,减少与磁盘的交互次数
redo log buffer
执行 DML、 DDL 操作时,产生对数据修改的变更向量(db buffer cache 中数据块变化),目的是为了数据库恢复 recover。
服务器进程 server process 将对应的变更向量(change vector,CV)记录到 redo log buffer 中.
日志条目( redo entries) 记的不是 sql 本身,而是 sql 执行后对数据库中某个文件某个块做了什么修改(变更向量)。
没 commit 的 sql 也记 redo 日志。
执行 commit 命令后看到”commit complete”,说明日子已经从日志缓冲区(redo log buffer) 写入到联机日志文件(online redo log file),由后台进程 LGWR 负责写。
large pool(可选)
为了进行大的后台进程操作而分配的内存空间,与 shared pool 管理不同,主要用于共享服务
器模式的 session memory(UGA)、 RMAN 备份恢复以及并行查询等操作。
java pool(可选)
为 java 命令以及应用而分配的内存空间,包含所有 session 指定的 JAVA 代码和数据
streams pool(可选)
为了 stream process 而分配的内存空间。
stream 技术是为了在不同数据库之间共享数据,因此, streams pool 对使用了 stream 数据库特性的系统是重要的。
PGA程序全局区

程序全局区(Program Global Area)简称 PGA,主要用来缓存 oracle 服务器进程和后台进程的数
据和控制信息,提供排序、 hash 连接。 PGA 在进程创建时被分配,进程终止时被释放。
PGA 是私有的,每一个 server process 和 background process 有自己的 PGA。
分三部分:
SQL 工作区(SQL Work Area) :
有几个子区 Sort Area、 Hash Area、 Bitmap Merge Area,
作用: 排序操作(order by/group by/distinct/union 等),多表 hash 连接,位图连接,创建位图等
会话空间(Session Memory)
作用:存放 logon 信息等会话相关的控制信息
私有 SQL 区域(Private SQL Area)
作用:存储 server process 执行 SQL 所需要的私有数据和控制结构,如绑定变量等。 它包括固
定区域和运行时区域
UGA用户全局区
进程结构
存储
综述
