1、Oracle 体系结构组件,目标,完成这一课的学习后,您应该能达到下列目标: 概括 Oracle 体系结构及其主要组件 列出在用户连接到 Oracle 例程过程中涉及的结构,口令文件,基本组件概览,例程,SGA,重做日志 缓冲区,共享池,数据字典 高速缓存,库高速缓存,DBWn,SMON,PMON,CKPT,LGWR,其它,用户进程,服务器进程,PGA,控制文件,数据文件,数据库,数据库高速缓冲区,重做日志文件,Java 池,大型共享池,参数文件,归档 日志文件,Oracle 服务器,Oracle 服务器: 是一个数据库管理系统,它为 信息管理提供了开放、综合和 集成的方法 包括 Oracle
2、 例程和 Oracle 数据库,Oracle 例程,Oracle 例程: 是一种访问 Oracle 数据库的方式 始终打开一个,并且只打开一个数据库 由内存结构和后台进程结构组成,后台进程结构,内存结构,例程,SGA,重做日志 缓冲区,共享池,数据字典 高速缓存,库高速缓存,DBWR,SMON,PMON,CKPT,LGWR,其它,数据库缓冲区 高速缓存,Java 池,大型共享池,建立连接和创建会话,连接到 Oracle 例程包括: 建立用户连接 创建会话,创建的会话,数据库用户,用户进程,服务器进程,建立的连接,Oracle 数据库,Oracle 数据库: 是一个被统一处理的数据集合 包括三类
3、文件,口令文件,参数文件,归档的 日志文件,控制 文件,数据 文件,重做 日志 文件,Oracle 数据库,物理结构,物理结构包括以下三种文件类型: 控制文件 数据文件 重做日志文件,控制文件,数据文件 (包括数据 字典),标头,联机重做 日志文件,内存结构,Oracle 的内存结构由两个内存区组成,分别是: 系统全局区 (SGA) :在例程启动时分配,是 Oracle 例程的基本组件 程序全局区 (PGA) :在服务器进程启动时分配,系统全局区,SGA 包括以下几种内存结构: 共享池 数据库缓冲区高速缓存 重做日志缓冲区 其它结构(例如锁定和栓锁管理以及统计数据) 在 SGA 中还可配置其它
4、两种内存结构: 大型共享池 Java 池,系统全局区,SGA 是动态的 大小由 SGA_MAX_SIZE 参数指定 由 SGA 组件以粒组为单位进行分配和跟踪 连续的虚拟内存分配 粒组大小由估算的 SGA_MAX_SIZE 总计大小确定,共享池,用于存储: 最近执行的 SQL 语句 最近使用的数据定义 它包括以下两个与性能相关的关键内存结构: 库高速缓存 数据字典高速缓存 其大小由 SHARED_POOL_SIZE 参数确定,共享池,数据字典 高速缓存,库高速缓存,ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;,库高速缓存,存储有关最近使用的 SQL 和 PL
5、/SQL 语句的信息 启用常用语句共享 由 “最近最少使用算法” (LRU) 管理 包括以下两个结构: 共享的 SQL 区 :共享执行计划 共享的 PL/SQL 区 大小由共享池的大小确定,数据字典高速缓存,数据库中最近使用的定义的集合 包括与数据库文件、表、索引、列、用户、权限和其它数据库对象相关的信息 在语法分析阶段,服务器进程会在数据字典中查找用于解析对象名和验证访问的信息 将数据字典信息高速缓存到内存中,可缩短查询和 DML 的响应时间 大小由共享池的大小决定,数据库缓冲区高速缓存,存储已从数据文件中检索到的数据块的副本 能够大幅提高获取和更新数据时的性能 通过 LRU 算法管理 主块
6、的大小由 DB_BLOCK_SIZE 确定,数据库缓冲区 高速缓存,数据库缓冲区高速缓存,由独立的子高速缓存组成: DB_CACHE_SIZE DB_KEEP_CACHE_SIZE DB_RECYCLE_CACHE_SIZE 大小可以进行动态调整 设置 DB_CACHE_ADVICE 可收集用于预测不同 高速缓存大小行为的统计信息 统计信息由 V$DB_CACHE_ADVICE 显示,ALTER SYSTEM SET DB_CACHE_SIZE = 96M;,重做日志缓冲区,记录对数据库数据块所做的全部更改 主要用于恢复 其中记录的更改称作重做条目 重做条目包含用于重新构造或重做更改的信息 大
7、小由 LOG_BUFFER 定义,重做日志 缓冲区,大型共享池,SGA 中的可选内存区 分担了共享池的一部分工作 用于: 共享服务器的会话内存 (UGA) I/O 服务器进程 备份和恢复操作或 RMAN 并行执行消息缓冲区 将 PARALLEL_AUTOMATIC_TUNING 设置为 TRUE 不使用 LRU 列表 大小由 LARGE_POOL_SIZE 确定,Java 池,存储 Java 命令的服务分析要求 在安装并使用 Java 时是必需的 大小由 JAVA_POOL_SIZE 参数确定,程序全局区,为连接到 Oracle 数据库的每个用户进程保留的内存 在创建进程时分配 在终止进程时回
8、收 仅供一个进程使用,服务器进程,PGA,用户进程,进程结构,Oracle 利用了以下几种进程的优势: 用户进程:在数据库用户请求连接到 Oracle 服务器时 启动 服务器进程:与 Oracle 例程相连接,在用户建立会话 时启动 后台进程:在 Oracle 例程启动时启动,用户进程,请求与 Oracle 服务器交互的程序 必须先建立连接 不与 Oracle 服务器直接交互,数据库用户,服务器进程,用户进程,建立的连接,服务器进程,直接与 Oracle 服务器交互的程序 执行生成的调用并返回相关结果 可以是专用服务器或共享服务器,建立的连接,创建的会话,数据库用户,用户进程,服务器进程,后台
9、进程,维护并加强物理结构与内存结构之间的关系 必备的后台进程: DBWn PMON CKPT LGWR SMON 可选的后台进程: ARCn LMDn RECOCJQ0 LMON SnnnDnnn PnnnLCKn QMNn,数据库写入程序 (DBWn),在以下情况下写入: 出现检查点 灰数据缓冲区达到阈值 没有空闲缓冲区 出现超时 执行了 RAC ping 请求 表空间处于 OFFLINE 状态 表空间处于 READ ONLY 状态 对表执行 DROP 或 TRUNCATE 操作 对表空间执行 BEGIN BACKUP 操作,例程,SGA,控制 文件,数据 文件,重做 日志 文件,数据库,D
10、BWn,数据库 缓冲区 高速缓存,日志写入器 (LGWR),LGWR 在以下情况下写入: 提交时 三分之一填满时 有 1 MB 的重做时 每隔三秒 DBWn 写入前,例程,SGA,控制 文件,数据 文件,重做 日志 文件,数据库,重做日志缓冲区,DBWn,LGWR,系统监控程序 (SMON),职责: 例程恢复 前滚重做日志中的更改 打开数据库供用户访问 回退未提交的事务处理 合并空闲空间 回收临时段,控制 文件,数据 文件,重做 日志 文件,数据库,例程,SGA,SMON,过程监视器 (PMON),例程失败后,通过以下方法进行清理: 回退事务处理 释放锁 释放其它资源 重新启动已失效的调度 程
11、序,PGA 区,例程,SGA,PMON,检查点 (CKPT),职责包括: 在检查点发信号给 DBWn 使用检查点信息更新数据文件的标头 使用检查点信息更新控制文件,控制 文件,数据 文件,重做 日志 文件,数据库,例程,SGA,DBWn,LGWR,CKPT,归档程序 (ARCn),可选的后台进程 设置 ARCHIVELOG 模式时自动归档联机重做日志 保留数据库的全部更改记录,ARCn,归档的 重做日 志文件,控制 文件,数据 文件,重做 日志 文件,逻辑结构,指示数据库物理空间的使用情况 层次结构由表空间、段、区和块组成,表空间,数据文件,段,块,区,段,处理 SQL 语句,通过以下进程连接
12、到一个例程: 用户进程 服务器进程 所用的 Oracle 服务器组件取决于 SQL 语句的类型: 查询语句返回行 DML 语句记录更改 提交操作确保事务处理的恢复 有些 Oracle 服务器组件不参与 SQL 语句的处理,小结,在这一课中,您应该能够掌握: 解释数据库文件:数据文件、控制文件和联机重做日志 解释 SGA 内存结构:数据库缓冲区高速缓存、共享池 和重做日志缓冲区 解释主要的后台进程:DBWn、LGWR、CKPT、 PMON、SMON 解释后台进程 ARCn 的用法 列出可选后台进程和条件后台进程 解释逻辑层次结构,练习 1 概览,此练习涉及以下主题: 复习体系结构组件 用户连接到 Oracle 例程的过程中所涉及的结构,