Oracle 服务器:
• 包括Oracle 例程和Oracle数据库
Oracle 例程:
• 是一种访问Oracle 数据库的方式
• 始终打开一个,并且只打开一个数据库
• 由内存结构和后台进程结构组成
Oracle 数据库:
• 是一个被统一处理的数据集合
• 包括三类文件:数据文件 控制文件 重做日志文件
系统全局区:
• SGA 包括以下几种内存结构:共享池 数据库缓冲区高速缓存 重做日志缓冲区
• 在SGA 中还可配置其它两种内存结构:大型共享池 Java 池
• SGA 是动态的
• 大小由SGA_MAX_SIZE 参数指定
• 由SGA 组件以粒组为单位进行分配和跟踪
– 连续的虚拟内存分配
– 粒组大小由估算的SGA_MAX_SIZE 总计大小确定
共享池:
• 用于存储:最近执行的SQL 语句 最近使用的数据定义
• 它包括以下两个与性能相关的关键内存结构:库高速缓存 数据字典高速缓存
• 其大小由SHARED_POOL_SIZE参数确定
ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
库高速缓存:
• 存储有关最近使用的SQL 和PL/SQL 语句的信息
• 启用常用语句共享
• 由“最近最少使用算法” (LRU) 管理
• 包括以下两个结构:共享的SQL 区 共享的PL/SQL 区
• 大小由共享池的大小确定
数据字典高速缓存:
• 数据库中最近使用的定义的集合
• 包括与数据库文件、表、索引、列、用户、权限和其它数据库对象相关的信息
• 在语法分析阶段,服务器进程会在数据字典中查找用于解析对象名和验证访问的信息
• 将数据字典信息高速缓存到内存中,可缩短查询和DML的响应时间
• 大小由共享池的大小决定
数据库缓冲区高速缓存:
• 存储已从数据文件中检索到的数据块的副本
• 能够大幅提高获取和更新数据时的性能
• 通过LRU 算法管理
• 主块的大小由DB_BLOCK_SIZE 确定
ALTER SYSTEM SET DB_CACHE_SIZE = 96M;
重做日志缓冲区:
• 记录对数据库数据块所做的全部更改
• 主要用于恢复
• 其中记录的更改称作重做条目
• 重做条目包含用于重新构造或重做更改的信息
• 大小由LOG_BUFFER 定义
大型共享池:
• SGA 中的可选内存区
• 分担了共享池的一部分工作
• 用于:
– 共享服务器的会话内存(UGA)
– I/O 服务器进程
– 备份和恢复操作或RMAN
– 并行执行消息缓冲区
– 将PARALLEL_AUTOMATIC_TUNING 设置为TRUE
• 不使用LRU 列表
• 大小由LARGE_POOL_SIZE 确定
Java 池:
• 存储Java 命令的服务分析要求
• 在安装并使用Java 时是必需的
• 大小由JAVA_POOL_SIZE 参数确定
程序全局区(PGA):
• 为连接到Oracle 数据库的每个用户进程保留的内存
• 在创建进程时分配
• 在终止进程时回收
• 仅供一个进程使用
数据库写入程序(DBWn):
将数据库缓冲区高速缓存中的灰数据缓冲区写入数据文件。
• 出现检查点
• 灰数据缓冲区达到阈值
• 没有空闲缓冲区
• 出现超时
• 执行了RAC ping 请求
• 表空间处于OFFLINE 状态
• 表空间处于READ ONLY 状态
• 对表执行DROP 或TRUNCATE操作
• 对表空间执行BEGIN BACKUP操作
日志写入器(LGWR):
LGWR 在下列情况下执行从重做日志缓冲区到重做日志文件的连续写入:
• 当提交事务时
• 当重做日志缓冲区的三分之一填满时
• 当重做日志缓冲区中记录了超过1 MB 的更改时
• 在DBWn 将数据库缓冲区高速缓存中修改的块写入数据文件以前
• 每隔三秒
系统监控程序(SMON):
如果Oracle 例程失败,那么SGA 中尚未写入磁盘的所有信息都会丢失。例如,操作系统
的失败导致例程失败。例程丢失后,后台进程SMON 在数据库重新打开时自动执行例程
恢复。
• 例程恢复
– 前滚重做日志中的更改
– 打开数据库供用户访问
– 回退未提交的事务处理
• 合并空闲空间
• 回收临时段
过程监视器(PMON):
进程失败后,后台进程PMON 通过下面的方法进行清理:
• 回退用户的当前事务处理
• 释放当前保留的所有表锁或行锁
• 释放用户当前保留的其它资源
• 重新启动已失效的调度程序
检查点(CKPT):
• 在检查点发信号给DBWn
• 使用检查点信息更新数据文件的标头
• 使用检查点信息更新控制文件
归档程序(ARCn):
• 可选的后台进程
• 设置ARCHIVELOG 模式时自动归档联机重做日志
• 保留数据库的全部更改记录