《oracle 体系结构详解》由会员分享,可在线阅读,更多相关《oracle 体系结构详解(6页珍藏版)》请在金锄头文库上搜索。
1、oracle oracle 体系结构体系结构详解详解 一 体系结构体系结构图图 oracle 实例 SGA 区 后台进程 oracle 服务器 oracle 实例 oracle 数据库 数据库实例启动实质上即为 分配 SGA 区 启动后台进程 Oracle 实例实例 1 是访问 Oracle 数据库的一种方式 2 通常只开一个且仅开一个数据库 3 由内存结构和进程结构组成 即 SGA 区 后台进程 连接 Oracle 实例 包括建立用户连接和创建会话 Oracle 数据库数据库 是作为整体的数据集 由三类文件组成 Data files Control files Redo log files
2、二二 物理结构 物理结构 主要由三类文件组成 data files control files redo log files 1 data files1 data files 数据文件 存放基本表信息 即表中数据等 索引信息 系统内建有索引 表 回退信息 主要为数据的 rollback 临时信息 如有 orderby 等操作时系统有临时信 息 系统引导信息 如数据字典等 2 2 control filescontrol files 控制文件 二进制的 存放库物理结构 库名 库创建日期 序列号 存有同步信息 控制文件至少有两个一摸一样的 用做备份用参数 Control files 文件名 1 文
3、件名 2 指定 3 3 redo log filesredo log files 回退日志文件 存放修改前后的信息 主要用于数据的恢复 一个数据 库至少有两个 redo log files 文件 以便可以循环记录信息 注 注 三类文件都有序列号 必须同步才能使用 且已 Control files 中的序列号为准 其他的 必须与其保持一致 除了上面三类文件还有 Parameter file 参数文件 Password file 口令文件 Archived log files 归档文件 等 参数文件 参数文件 有二进制 文本两种 用于设定参数的值 二进制参数文件可以及时更改 即时生 效 文本参数文
4、件需重启 口令文件 口令文件 可用 orapwd exe 建口令文件 拥有 sysdba 权限的用户存在口令文件中 数据库未 打开时即可使用 而普通用户需要数据库启动后方可登陆 可以 connect 用户名 口令 as sysdba 归档文件 归档文件 存 放归档的日志文件等 即有日志文件循环满时拷贝出去归档 在一个日志文件写 满切换到另一个日志文件的同时联机的日志文件将拷贝出归档 并更新序列号 每换 一次 序 列号加 1 若数据库允许归档方式的恢复时系统会自动生成归档文件 可用于恢复数据库 恢复到错误之前的点上 三三 内存结构 内存结构 主要分为 PGA 区 SGA 区 PGA 区 程序的全
5、局区 不可共享 存放用户信息 在服务进程启动时启动 SGA 区 系统全局区 为所有用户共享 在实例启动时分配 是实例的基本组成部分 Shared pool 大小由 Shared pool size 决定 Data Dictionary cache 数据字典缓冲区 在数据库启动时将最常用的数据字典存入 缓存区 在系统启动时即放入 Library cache 库缓冲区 缓存 SQL 脚本 分析表 方案等 PL SQL 的过程 分为 SQL 区 PL SQL 区 使用最近最少使用淘汰算法 LRU Database buffer Dirty buffer 存放已经修改并且 commit 但仍未写入磁盘
6、的信息 Free buffer 内存与磁盘上对应信息一致的 如已经写入磁盘后的 Pinned buffer 正在更新 尚未提交 所有的数据更新都首先与 data buffer 交互 然后才能与磁盘交互 Oracle 的 I O 最 小单位为 block 块 而不是以数据为单位 因此都要经过 data buffer 的缓冲 当读入时存入 free buffer 当 free buffer 不足时系统将 dirty buffer 中存入磁盘而变为 free buffer Data buffer 由 db cache size 决定大小 主要是为了提高操作数据的效率 缓冲区 采用最近最少使用淘汰算法
7、 LRU Redo log buffer 记录了对数据库数据的所有更改 主要是为了恢复 Java pool 可选 当前端为 java 开发时 需手动设置 用于记录 java 代码 Large pool 可选 当为共享服务器时 需手动设置 使用的不是 LRU 管理 控制参数 SGA MAX SIZE 设置 SGA 区的大小 可以动态调整 Db cache size 设置 database buffer 的大小 Shared pool size 设置 shared pool 大小 Log buffer 设置 redo log buffer 的大小 Large pool size 设置 large
8、pool 的大小 Java pool size 设置 java pool 的大小 四四 进程结构 进程结构 用户进程用户进程 连接服务器时在客户端产生 必须先建立连接 不直接与 Oralce 服务器交互 而是与服务器进程交互 服务器进程服务器进程 客户端连入时服务器完成客户端的请求操作 直接与 Oracle 服务器交互 接收用户进程的请求 完成操作并返回结果 服务器有专用 服务器 共享服务器两种方式 专用服务器 服务器进程与用户进程一一对应 但由于资源总量有限 服务器进程 的总量是有限的 因此连入的数量也是有限的 当达到上限时用户无法连入 共享服务器 系统启动时即创建一定数量的服务器进程 当用
9、户连入时 选择空闲 的服务器进程为之服务 而且共享服务器中服务器进程也是可以动态生成的 可以 设置服务器进程生成的最大数量 后台进程后台进程 主要有 DBWR LGWR SMON PMON CKPT 此为必须的 其他的如 ARCn RECO LCK 等 是可选的 在实例启动时启动 1 DBWn 表示最多可以产生 10 个 DBWR 进程 命名为 DBW0 DBW9 作用 将 database buffer 的 buffer cache 中的内容写入磁盘 当单 CPU 时只能有一个 DBW0 当有多个 CPU 时才能有多个 DBWR 进程 启动条件 一般情况下 DBWR 进程都处于休眠状态 当满
10、足条件时才启动 1 没有 free buffer 时 即没有空闲 buffer 则需要写回磁盘 2 dirty buffers 中数据达到一定阀值时 3 超时发生时 默认 3 秒 4 检查点发生 5 RAC ping 连接请求 6 表空间 offline 7 表空间 read only 8 表 drop 或 TRUNCATE 9 表空间开始备份 在以下情况下检查点会发生 1 日志切换 2 用户发命令强制产生检查点 3 数据 库关闭时 以 normal transactional immediate 方式 4 某表空间转为 offline 2 Log writer LGWR 作用 将 log b
11、uffer 里的内容写入 log 文件 启动条件 1 buffer 中的数据量达到 1 3 2 数据量达到 1m 3 时间间隔到时 规定的时间间隔是 3s 4 检查点发生 5 在 DBWn 写之前 6 commit 命令 其实 检查点发生则 DBWn 将启动 当 U2 发出 commit 命令时则启动 log writer 的 LGWR 进程 将 U1 U2 的修改前后 信息写入 log 文件 当发生错误而恢复时 有专门的进程 SMON 使用 log 文件进 行恢复 根据错误发生的记录进行 redo 操作 利用回退段 undo 使错误发生前没 有提交的操作全部撤销 从而得到一个完整的正常系统状
12、态 级若 U2 提交了 commit 而 U1 没有提交 那么此时发生故障 要进行恢复 则 U2 可以恢复到当前 commit 后的状态 所有 U2 以前的操作将保留有效 而 U1 则回退到上一个 commit 的状态 这段时间内的修改将失效 由 undo 回退 整个系统回退到一个完整的正 常状态 只有 LGWR 写完成时 commit 操作才算完成 因此不会出现提示 commit 完成而没 有将相应的日志写入 可以对应这种情况 当提交 commit 命令后 系统提示操作 生效 而此时由于内容不多 操作的结果都由系统暂时存在内存中而没有即时写入 磁盘 而此时系统崩溃 则内存中的数据丢失 而磁盘
13、上也没有保留 则在下次启 动时 系统会自动调用 SMON 进程进行恢复 从而不会使真正更新过的数据得不 到保留 3 SMON 系统监控进程 作用 1 实例恢复 由系统自动调用 a 将 redo log 文件中提交的信息重做一 遍 b 将没有提交的信息进行回退 即 undo c 将数据库打开 用户可以登录 2 回收临时段 3 每 3 秒回收一次自由空间 合并自由空间 4 PMON 进程监控进程 作用 检查到别的进程失败后清理垃圾用的 回退事务 释放锁 回收释放资源 报告失败信息 5 CKPT 检查点进程 在检查点发生时启动 作用 1 当检查点发生时通知 DBWn 2 使用检查点的信息来更新数据文
14、件头 3 用检验点的信息来更新控制文件 可选的 ARCn 归档进程 在归档方式下才有该进程 将写满的 log file 写出来 写到 ARC01 file 等文件中 REC0 恢复进程 运行在分布式环境下 LCKn 锁进程 在并行服务 器方式下 执行一条执行一条 SQL 语句语句 1 连接实例 使用到用户进程 服务器进程 2 执行语句 后台进程使用哪个将由 SQL 语句决定 查询语句 DML 语句 commit 将 会使用不同的后台进程 也可能部分后台进程不参与该语句的执行 五五 逻辑结构 逻辑结构 数据库由一个或多个表空间 tablespace 组成 表空间 System 系统引导段 数据字
15、典 Undo tbs 撤销段 回退段 修改前的信息 Temp 临时段 临时使用的 如 order by 操作 Users 数据段 每建一个表则对应一个数据段 Index 索引段 索引信息 关键字 RowId 表示一个或多个组成 撤销段 作 commit 操作后其中的信息就没用了 自动被重用 作 rollback 时就要用到其中 的信息 回退后该段空间又可被重用 I O 的最小单位是块 而分配的最小单位是区 一个区由一个或多个块组成 建表时系统先分配 initial extent 空间 当不断插入数据使空间满时 将再次自动分配空间 next extent 当再次不足时将再次自动分配 next 1
16、 PCTINCREASE 再次将为 next 1 PCTINCREASE 2 下次将为 next 1 PCTINCREASE 3 如此下去 其中 next 是设定 额下一个分配的空间大小 PCTINCREASE 则为递增的比例 另有 maxextent 100 设置最多 只能分配 100 个区 minextents 表示建好表后最少要分配几个区 Initial extent next extent PCTINCREASE maxextent minextents 一个区的五个参数 与 datafile 里的五类信息相对应 当插入数据受限时有可能是下列原因 1 table space 占用完 即没有了表空间 2 分区数达到上限 此时可以调高上限 即调高 maxextents 的值 3 当 maxextents 值达到系统设定的上限时 可以重新建表空间 调高 initial extent 逻辑结构与物理结构的对应 物理上数据库由 data files redo log files control files 组成 任何一个表空间至少对应一个或 多个 data files 多个 data f