330 likes | 507 Views
Oracle 体系结构组件. 目标. 完成这一课的学习后,您应该能达到下列目标: 概括 Oracle 体系结构及其主要组件 列出在用户连接到 Oracle 例程过程中涉及的结构. 基本组件概览. 例程. 用户进程. SGA. 共享池. 数据库缓冲区 高速缓存. 重做日志 缓冲区. 库 高速缓存. 服务器进程. 数据字典 高速缓存. 大型共享池. Java 池. PGA. PMON. SMON. DBWR. LGWR. CKPT. 其它. 重做日志文件. 数据文件. 控制文件. 参数文件. 归档 日志文件. 口令文件.
E N D
目标 • 完成这一课的学习后,您应该能达到下列目标: • 概括Oracle 体系结构及其主要组件 • 列出在用户连接到Oracle 例程过程中涉及的结构
基本组件概览 例程 用户进程 SGA 共享池 数据库缓冲区高速缓存 重做日志缓冲区 库高速缓存 服务器进程 数据字典高速缓存 大型共享池 Java 池 PGA PMON SMON DBWR LGWR CKPT 其它 重做日志文件 数据文件 控制文件 参数文件 归档 日志文件 口令文件 数据库
Oracle 服务器 Oracle 服务器 • Oracle 服务器: • 是一个数据库管理系统,它为信息管理提供了开放、综合和集成的方法 • 包括Oracle 例程和Oracle 数据库
Oracle 例程 • Oracle 例程: • 是一种访问Oracle 数据库的方式 • 始终打开一个,并且只打开一个数据库 • 由内存结构和后台进程结构组成 例程 SGA 共享池 内存结构 数据库缓冲区 高速缓存 重做日志 缓冲区 库高速缓存 数据字典 高速缓存 大型共享池 Java池 后台进程结构 PMON SMON DBWR LGWR CKPT 其它
Oracle 服务器 建立连接和创建会话 • 连接到Oracle 例程包括: • 建立用户连接 • 创建会话 服务器进程 建立的连接 创建的会话 用户进程 数据库用户
Oracle 数据库 • Oracle 数据库: • 是一个被统一处理的数据集合 • 包括三类文件 Oracle 数据库 数据文件 控制文件 重做日志文件 归档的 日志文件 参数文件 口令文件
物理结构 • 物理结构包括以下三种文件类型: • 控制文件 • 数据文件 • 重做日志文件 标头 控制文件 数据文件 (包括数据 字典) 联机重做日志文件
内存结构 • Oracle 的内存结构由两个内存区组成,分别是: • 系统全局区 (SGA) :在例程启动时分配,是Oracle 例程的基本组件 • 程序全局区 (PGA) :在服务器进程启动时分配
系统全局区 • 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确定 数据库缓冲区高速缓存
数据库缓冲区高速缓存 • 由独立的子高速缓存组成: • DB_CACHE_SIZE • DB_KEEP_CACHE_SIZE • DB_RECYCLE_CACHE_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参数确定
程序全局区 • 为连接到Oracle 数据库的每个用户进程保留的内存 • 在创建进程时分配 • 在终止进程时回收 • 仅供一个进程使用 PGA 用户进程 服务器进程
进程结构 • Oracle 利用了以下几种进程的优势: • 用户进程:在数据库用户请求连接到Oracle 服务器时启动 • 服务器进程:与Oracle 例程相连接,在用户建立会话时启动 • 后台进程:在Oracle 例程启动时启动
用户进程 • 请求与Oracle 服务器交互的程序 • 必须先建立连接 • 不与Oracle 服务器直接交互 服务器进程 用户进程 建立的连接 数据库用户
Oracle 服务器 服务器进程 • 直接与Oracle 服务器交互的程序 • 执行生成的调用并返回相关结果 • 可以是专用服务器或共享服务器 服务器进程 建立的连接 创建的会话 用户进程 数据库用户
后台进程 • 维护并加强物理结构与内存结构之间的关系 • 必备的后台进程: • DBWn PMON CKPT • LGWR SMON • 可选的后台进程: • ARCn LMDn RECO • CJQ0 LMON Snnn • Dnnn Pnnn • LCKn QMNn
数据库写入程序(DBWn) 例程 SGA • 在以下情况下写入: • 出现检查点 • 灰数据缓冲区达到阈值 • 没有空闲缓冲区 • 出现超时 • 执行了RAC ping 请求 • 表空间处于OFFLINE状态 • 表空间处于READ ONLY状态 • 对表执行DROP或TRUNCATE操作 • 对表空间执行BEGIN BACKUP操作 数据库缓冲区高速缓存 DBWn 重做日志文件 数据文件 控制文件 数据库
日志写入器(LGWR) 例程 SGA • LGWR 在以下情况下写入: • 提交时 • 三分之一填满时 • 有 1 MB 的重做时 • 每隔三秒 • DBWn 写入前 重做日志 缓冲区 DBWn LGWR 数据文件 控制文件 重做日志文件 数据库
系统监控程序(SMON) 例程 SGA • 职责: • 例程恢复 • 前滚重做日志中的更改 • 打开数据库供用户访问 • 回退未提交的事务处理 • 合并空闲空间 • 回收临时段 SMON 数据文件 控制文件 重做日志文件 数据库
过程监视器(PMON) 例程 SGA • 例程失败后,通过以下方法进行清理: • 回退事务处理 • 释放锁 • 释放其它资源 • 重新启动已失效的调度程序 PMON PGA 区
检查点(CKPT) 例程 SGA • 职责包括: • 在检查点发信号给DBWn • 使用检查点信息更新数据文件的标头 • 使用检查点信息更新控制文件 DBWn LGWR CKPT 数据文件 控制文件 重做日志文件 数据库
归档程序(ARCn) • 可选的后台进程 • 设置ARCHIVELOG模式时自动归档联机重做日志 • 保留数据库的全部更改记录 ARCn 重做日志文件 控制文件 归档的重做日志文件 数据文件
逻辑结构 • 指示数据库物理空间的使用情况 • 层次结构由表空间、段、区和块组成 表空间 数据文件 段 段 区 块
处理SQL 语句 • 通过以下进程连接到一个例程: • 用户进程 • 服务器进程 • 所用的Oracle 服务器组件取决于SQL 语句的类型: • 查询语句返回行 • DML 语句记录更改 • 提交操作确保事务处理的恢复 • 有些Oracle 服务器组件不参与SQL 语句的处理
小结 • 在这一课中,您应该能够掌握: • 解释数据库文件:数据文件、控制文件和联机重做日志 • 解释SGA 内存结构:数据库缓冲区高速缓存、共享池和重做日志缓冲区 • 解释主要的后台进程:DBWn、LGWR、CKPT、PMON、SMON • 解释后台进程ARCn 的用法 • 列出可选后台进程和条件后台进程 • 解释逻辑层次结构