33
1 Oracle 系系系系系

Oracle 体系结构组件

  • Upload
    lola

  • View
    193

  • Download
    4

Embed Size (px)

DESCRIPTION

Oracle 体系结构组件. 目标. 完成这一课的学习后,您应该能达到下列目标: 概括 Oracle 体系结构及其主要组件 列出在用户连接到 Oracle 例程过程中涉及的结构. 基本组件概览. 例程. 用户进程. SGA. 共享池. 数据库缓冲区 高速缓存. 重做日志 缓冲区. 库 高速缓存. 服务器进程. 数据字典 高速缓存. 大型共享池. Java 池. PGA. PMON. SMON. DBWR. LGWR. CKPT. 其它. 重做日志文件. 数据文件. 控制文件. 参数文件. 归档 日志文件. 口令文件. - PowerPoint PPT Presentation

Citation preview

Page 1: Oracle  体系结构组件

1Oracle 体系结构组件

Page 2: Oracle  体系结构组件

目标

完成这一课的学习后,您应该能达到下列目标: • 概括 Oracle 体系结构及其主要组件 • 列出在用户连接到 Oracle 例程过程中涉及的结构

Page 3: Oracle  体系结构组件

口令文件

基本组件概览 例程 SGA

重做日志缓冲区

共享池

数据字典高速缓存

库高速缓存

DBWRSMONPMON CKPTLGWR 其它

用户进程

服务器进程 PGA

控制文件 数据文件

数据库

数据库缓冲区高速缓存

重做日志文件

Java 池 大型共享池

参数文件 归档日志文件

Page 4: Oracle  体系结构组件

Oracle 服务器

Oracle 服务器: • 是一个数据库管理系统,它为

信息管理提供了开放、综合和集成的方法

• 包括 Oracle 例程和 Oracle 数据库

Oracle 服务器

Page 5: Oracle  体系结构组件

Oracle 例程 Oracle 例程: • 是一种访问 Oracle 数据库的方式 • 始终打开一个,并且只打开一个数据库 • 由内存结构和后台进程结构组成

后台进程结构

内存结构 例程 SGA

重做日志缓冲区

共享池

数据字典高速缓存

库高速缓存

DBWRSMONPMON CKPTLGWR 其它

数据库缓冲区高速缓存 Java 池 大型共享池

Page 6: Oracle  体系结构组件

建立连接和创建会话

连接到 Oracle 例程包括: • 建立用户连接 • 创建会话

创建的会话

数据库用户

用户进程

服务器进程 建立的连接

Oracle 服务器

Page 7: Oracle  体系结构组件

Oracle 数据库 Oracle 数据库: • 是一个被统一处理的数据集合 • 包括三类文件

口令文件 参数文件 归档的日志文件

控制文件 数据文件 重做日志文件

Oracle 数据库

Page 8: Oracle  体系结构组件

物理结构

物理结构包括以下三种文件类型: • 控制文件 • 数据文件 • 重做日志文件 控制文件

数据文件(包括数据字典)

标头

联机重做日志文件

Page 9: Oracle  体系结构组件

内存结构

Oracle 的内存结构由两个内存区组成,分别是: • 系统全局区 (SGA) :在例程启动时分配,是 Oracle

例程的基本组件 • 程序全局区 (PGA) :在服务器进程启动时分配

Page 10: Oracle  体系结构组件

系统全局区 • SGA 包括以下几种内存结构: – 共享池 – 数据库缓冲区高速缓存 – 重做日志缓冲区 – 其它结构(例如锁定和栓锁管理以及统计数据)

• 在 SGA 中还可配置其它两种内存结构: – 大型共享池 – Java 池

Page 11: Oracle  体系结构组件

系统全局区 • SGA 是动态的 • 大小由 SGA_MAX_SIZE 参数指定 • 由 SGA 组件以粒组为单位进行分配和跟踪 – 连续的虚拟内存分配 – 粒组大小由估算的 SGA_MAX_SIZE 总计大小确定

Page 12: Oracle  体系结构组件

共享池 • 用于存储: – 最近执行的 SQL 语句 – 最近使用的数据定义

• 它包括以下两个与性能相关的关键内存结构: – 库高速缓存 – 数据字典高速缓存

• 其大小由 SHARED_POOL_SIZE 参数确定 共享池

数据字典高速缓存库高速缓存

ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;

Page 13: Oracle  体系结构组件

库高速缓存 • 存储有关最近使用的 SQL 和 PL/SQL 语句的信息 • 启用常用语句共享 • 由 “最近最少使用算法” (LRU) 管理 • 包括以下两个结构: – 共享的 SQL 区 – 共享的 PL/SQL 区

• 大小由共享池的大小确定

Page 14: Oracle  体系结构组件

数据字典高速缓存 • 数据库中最近使用的定义的集合 • 包括与数据库文件、表、索引、列、用户、权限和其它数

据库对象相关的信息 • 在语法分析阶段,服务器进程会在数据字典中查找用于解

析对象名和验证访问的信息 • 将数据字典信息高速缓存到内存中,可缩短查询和 DML

的响应时间 • 大小由共享池的大小决定

Page 15: Oracle  体系结构组件

数据库缓冲区高速缓存 • 存储已从数据文件中检索到的数据块的副本 • 能够大幅提高获取和更新数据时的性能 • 通过 LRU 算法管理 • 主块的大小由 DB_BLOCK_SIZE 确定

数据库缓冲区高速缓存

Page 16: Oracle  体系结构组件

数据库缓冲区高速缓存 • 由独立的子高速缓存组成: – DB_CACHE_SIZE– DB_KEEP_CACHE_SIZE– DB_RECYCLE_CACHE_SIZE

• 大小可以进行动态调整 ALTER SYSTEM SET DB_CACHE_SIZE = 96M;

Page 17: Oracle  体系结构组件

重做日志缓冲区 • 记录对数据库数据块所做的全部更改 • 主要用于恢复 • 其中记录的更改称作重做条目 • 重做条目包含用于重新构造或重做更改的信息 • 大小由 LOG_BUFFER 定义

重做日志缓冲区

Page 18: Oracle  体系结构组件

大型共享池 • SGA 中的可选内存区 • 分担了共享池的一部分工作 • 用于: – 共享服务器的会话内存 (UGA)– I/O 服务器进程 – 备份和恢复操作或 RMAN– 并行执行消息缓冲区

– 将 PARALLEL_AUTOMATIC_TUNING 设置为 TRUE• 不使用 LRU 列表 • 大小由 LARGE_POOL_SIZE 确定

Page 19: Oracle  体系结构组件

Java 池 • 存储 Java 命令的服务分析要求 • 在安装并使用 Java 时是必需的 • 大小由 JAVA_POOL_SIZE 参数确定

Page 20: Oracle  体系结构组件

程序全局区 • 为连接到 Oracle 数据库的每个用户进

程保留的内存 • 在创建进程时分配• 在终止进程时回收• 仅供一个进程使用 服务器进程

PGA用户进程

Page 21: Oracle  体系结构组件

进程结构

Oracle 利用了以下几种进程的优势: • 用户进程:在数据库用户请求连接到 Oracle 服务器时

启动• 服务器进程:与 Oracle 例程相连接,在用户建立会话

时启动• 后台进程:在 Oracle 例程启动时启动

Page 22: Oracle  体系结构组件

用户进程 • 请求与 Oracle 服务器交互的程序• 必须先建立连接• 不与 Oracle 服务器直接交互

数据库用户

服务器进程 用户进程 建立的连接

Page 23: Oracle  体系结构组件

服务器进程 • 直接与 Oracle 服务器交互的程序• 执行生成的调用并返回相关结果• 可以是专用服务器或共享服务器

建立的连接 创建的会话

数据库用户

用户进程

服务器进程Oracle 服务器

Page 24: Oracle  体系结构组件

后台进程

维护并加强物理结构与内存结构之间的关系 • 必备的后台进程: – DBWn PMON CKPT– LGWR SMON

• 可选的后台进程: – ARCn LMDn RECO– CJQ0 LMON Snnn– Dnnn Pnnn– LCKn QMNn

Page 25: Oracle  体系结构组件

数据库写入程序 (DBWn)

在以下情况下写入: • 出现检查点• 灰数据缓冲区达到阈值• 没有空闲缓冲区• 出现超时• 执行了 RAC ping 请求• 表空间处于 OFFLINE 状态• 表空间处于 READ ONLY 状态• 对表执行 DROP 或 TRUNCATE 操作• 对表空间执行 BEGIN BACKUP 操作

例程 SGA

控制文件 数据文件 重做日志文件数据库

DBWn

数据库缓冲区高速缓存

Page 26: Oracle  体系结构组件

日志写入器 (LGWR)

LGWR 在以下情况下写入: • 提交时• 三分之一填满时• 有 1 MB 的重做时• 每隔三秒• DBWn 写入前

例程 SGA

控制文件 数据文件 重做日志文件数据库

重做日志 缓冲区

DBWn LGWR

Page 27: Oracle  体系结构组件

系统监控程序 (SMON)

职责: • 例程恢复 –前滚重做日志中的更改– 打开数据库供用户访问–回退未提交的事务处理

• 合并空闲空间• 回收临时段 控制文件 数据文件 重做日志文件

数据库

例程 SGA

SMON

Page 28: Oracle  体系结构组件

过程监视器 (PMON)

例程失败后,通过以下方法进行清理: • 回退事务处理• 释放锁• 释放其它资源• 重新启动已失效的调度

程序 PGA 区

例程 SGA

PMON

Page 29: Oracle  体系结构组件

检查点 (CKPT)

职责包括: • 在检查点发信号给 DBWn

• 使用检查点信息更新数据文件的标头

• 使用检查点信息更新控制文件

控制文件 数据文件 重做日志文件 数据库

例程 SGA

DBWn LGWR CKPT

Page 30: Oracle  体系结构组件

归档程序 (ARCn)

• 可选的后台进程• 设置 ARCHIVELOG 模式时自动归档联机重做日志• 保留数据库的全部更改记录

ARCn 归档的重做日志文件控制文件 数据文件 重做日志文件

Page 31: Oracle  体系结构组件

逻辑结构 • 指示数据库物理空间的使用情况• 层次结构由表空间、段、区和块组成

表空间 数据文件 段

块 区

Page 32: Oracle  体系结构组件

处理 SQL 语句 • 通过以下进程连接到一个例程: – 用户进程– 服务器进程

• 所用的 Oracle 服务器组件取决于 SQL 语句的类型: – 查询语句返回行– DML 语句记录更改– 提交操作确保事务处理的恢复

• 有些 Oracle 服务器组件不参与 SQL 语句的处理

Page 33: Oracle  体系结构组件

小结 在这一课中,您应该能够掌握: • 解释数据库文件:数据文件、控制文件和联机重做日志• 解释 SGA 内存结构:数据库缓冲区高速缓存、共享池和重做日志缓冲区• 解释主要的后台进程: DBWn 、 LGWR 、 CKPT 、

PMON 、 SMON• 解释后台进程 ARCn 的用法• 列出可选后台进程和条件后台进程• 解释逻辑层次结构