oracle数据库物理结构.ppt

上传人:sh****n 文档编号:7553341 上传时间:2020-03-22 格式:PPT 页数:40 大小:445KB
返回 下载 相关 举报
oracle数据库物理结构.ppt_第1页
第1页 / 共40页
oracle数据库物理结构.ppt_第2页
第2页 / 共40页
oracle数据库物理结构.ppt_第3页
第3页 / 共40页
点击查看更多>>
资源描述
第二章Oracle数据库体系结构续 杨进goodskyfly 2 4数据库物理结构 数据库是数据存储的容器 作用是用来收集 存储数据和返回信息 数据库的存储结构就是数据库存储数据的方式 前面已经谈到数据库的存储结构可以分为逻辑结构和物理结构两个方面 两者相互独立又密切相关 从逻辑结构方面讲 Oracle数据库以逻辑结构进行内部的管理和维护的 这些结构包括表空间 段 区和块 从物理结构方面讲 Oracle数据库有外部的存储方法 Oracle数据库由一系列的物理文件组成 主要有数据文件 控制文件和重做日志文件 物理结构以及和表空间的关系如图 数据文件 用于存放所有的系统和用户数据 默认以DBF为扩展名 日志文件 记录了对数据库进行的所有操作 默认以LOG为扩展名 控制文件 记录了数据库所有文件的控制信息 默认以CTL为扩展名 Oracle将这些文件默认安装在Oracle安装目录下的oradata子目录下 以实例命名的子目录下 在创建新的数据库时 可以选择数据库的安装目录 2 4 1数据文件 DataFiles 数据文件是用于存储数据库数据的物理文件 它由若干个操作系统文件组成 在数据文件中存储着用户数据 表 索引等 数据字典以及回滚段数据等 数据文件和表空间有着密切的关系 Oracle数据库至少要包含一个数据文件 并且数据文件是表空间的物理组成元素 一个表空间可以包含多个数据文件 并且每个数据文件只能惟一地属于某个表空间 关于 表空间 在后面会给大家详细介绍 实例2 3 查看数据文件的位置和名称 1 以管理员身份登录SQL CONNECT ASSYSDBA已连接 2 4 2日志文件 RedoLogFiles 重做日志文件是用于记录数据库变化的物理文件 其作用是在发生意外时恢复Oracle数据库 默认为每个数据库创建3个重做日志文件 每个日志文件作为一个组 数据库至少要包含两个重做日志组 日志组的文件是循环使用的 当一个日志写满后 自动切换到另一个日志文件 重做日志有两种工作模式 归档模式和非归档模式 在归档模式下 将对重做日志文件进行归档 保留所有的重做日志记录 这样数据库可以从所有类型的失败中恢复 非归档模式不保留以前的重做日志记录 这样数据库只能从掉电等事件中恢复 实例2 4 查看日志文件的位置和名称 2 4 3控制文件 ControlFiles 控制文件是一个很小的二进制文件 用于记录和维护数据库结构 Oracle数据库至少要包含一个控制文件 一般情况下 实例和数据库是一一对应的关系 Oracle数据库通过控制文件在实例和数据库之间建立关联 在启动数据库时 系统会根据初始化参数control files来定位控制文件 Oracle从控制文件中读取组成数据库所有物理文件的信息 这样就可以打开必要的文件 如果控制文件丢失或出现错误 数据库的启动就会失败 为了保护数据库的安全 Oracle采用复合控制文件 即控制文件同时可以有多个镜像 查看控制文件内容 Alterdatabasebackupcontrolfriletotraceas home oracle ctl trc 实例2 5 查看日志文件的位置和名称 2 4 4归档日志文件 ArchiveLog 重做日志可用于进行 实例恢复 例如电源断电时的恢复 但如果执行介质恢复 例如数据文件意外丢失 则必须要用到归档日志 归档日志是非活动重做日志的备份 数据库只有处于ARCHIVELOG模式时才会生成归档日志 并且每次日志切换都会生成归档日志 如图所示 假定数据库只包含两个日志组 并且处于ARCHIVELOG模式 初始阶段LGWR会将事务变化写入到日志组一 当日志组一写满之后 LGWR会将事务变化写入到日志组二中 并且会促使ARCn进程将日志组一的内容保存到归档日志中 依此类推 实例2 6 查看归档模式 2 4 5初始化参数文件 除了以上文件 Oracle数据库中还用到初始化参数文件 ParameterFile 口令文件 PasswordFile 跟踪文件 TraceFile 和警告文件 AlertFile 实例是由一组内存结构和后台进程组成的 那么这些内存结构到底要占用多大内存 且当启动实例时会运行哪些后台进程呢 这是通过定义参数文件中的初始化参数来完成的 初始化参数文件有两种 静态初始化参数文件 该文件是一个可以编辑的文本文件 服务器端初始化参数文件 一个二进制格式的文件 驻留在服务器端 初始化参数会在以后的章节介绍 2 4 6其他文件 其他文件主要包括口令文件 PasswordFile 跟踪文件 TraceFile 和警告文件 AlertFile 它们属于操作系统文件 不是数据库文件的一部分 口令文件用于存放特权用户及其口令的文件 特权用户 是指具有启动 关闭Oracle服务器并建立数据库等特殊权利的用户 SYS账户是一个具有系统管理员特权的账户 跟踪文件用于存放后台进程和服务器进程的跟踪信息 后台进程跟踪文件存放着后台进 2 4 6其他文件 跟踪文件用于存放后台进程和服务器进程的跟踪信息 后台进程跟踪文件存放着后台进程的警告和错误信息 并且每个后台进程都有相应的跟踪文件 服务器进程跟踪文件用于存放SQL语句的跟踪信息 并且只有在激活SQL跟踪后才会生成服务器进程跟踪文件 该类文件会记载SQL语句的执行时间 执行计划等信息 并且主要用于SQL语句调整 警告文件由连续的消息和错误组成 通过查看警告文件 可以查看到Oracle内部错误 块损坏错误以及非默认的初始化参数值 并且可以监视特权用户的所有操作 例如启动 关闭数据库等 2 5数据库逻辑结构 在Oracle数据库中 数据被组织成逻辑对象 如我们常用的表 视图 索引等数据对象 为了很好的组织和管理这些对象 需要合理的分配空间 逻辑对象存储是通过表空间 TableSpace 段 Segment 数据区间 Extent 简称区 和数据块 Block 来完成的 它们并不是相互独立的 表空间包含一些段 段由数据区间组成 数据区间由连续的数据块组成 它们的作用和相互的关系如图 2 5数据库逻辑结构 2 5 1表空间 表空间用于组织数据库的数据 数据库逻辑上由一个或多个表空间组成 而表空间物理上是由一个或多个数据文件组成的 通过使用多个表空间 数据库的数据对象被分门别类存放在不同的表空间中 这样数据库的管理员可以有效的控制数据库的磁盘空间 并控制用户的空间使用配额 通过使用不同类型的表空间 还可以提高数据访问的性能 SYSTEM表空间是系统表空间 用来存放表空间 数据文件等管理信息 USERS表空间 用来存放用户的私有信息 管理员可以为其他数据库应用创建新的表空间 实例2 7 查看表空间 2 2Oracle内存结构 Oracle的内存由系统全局区 SystemGlobalArea 简称SGA 和程序全局区 ProgramGlobalArea 简称PGA 组成 SGA是一组由Oracle分配的共享内存区域 用户和进程可以共享其中的信息 在实例启动时分配 当实例启动时 SGA存储区被自动分配 当实例关闭时 存储区被回收 在启动数据库实例时 可以看到SGA分配的信息在实例启动后也可用SHOWSGA 或SELECT FROMv sga 显示SGA信息 PGA是数据库服务器内存中为进程分配的专用的内存区域 是进程私有的内存区 在进程启动时分配 1 5 2段 段是一个动态存储分配概念 它用来存储能够自动增长的数据库对象 如表会随着数据的插入不断扩大所占有的存储空间 一般情况下一个数据库对象拥有一个段 段由多个区组成 这些区可以连续 也可以不连续 表空间可以包含一个或多个段 但一个段只能属于一个表空间 段有多种类型 不同的数据库对象需要分配不同类型的段 存放表的段称为数据段 存放索引的段称为索引段 用来存放排序操作所产生的临时数据的段称为临时段 临时段在必要时创建 使用完毕后即撤销 存放事务对数据的修改的旧值的段称为回滚段 回滚段的作用是用来撤销对数据的修改 2 5 3区 Extents 数据区间简称为区 区是为段分配空间的逻辑单位 Oracle在分配空间时 并不是以块为单位进行的 而是将多个连续的块一次性的分配给数据库对象 这些连续的块在回收存储空间时 也一起回收 这些连续的数据块就是数据区间 当创建一个数据库对象时 Oracle为这些对象创建一个段 并分配初始区 当段中的初始区的存储空间使用完毕后 Oracle会为段自动分配新的区 每个区的大小不要求相同 2 5 4数据块 数据块是Oracle数据库I O最基本的单位 也是最小的逻辑存储单位 Oracle数据库以块为单位进行逻辑读 写操作 常见块的大小为2KB或4KB 通常为操作系统数据块大小的整数倍 在Oracle9i之前 数据块的尺寸是由初始化参数DB BLOCK SIZE确定的 在建立了数据库之后数据块的尺寸是不能改变的 并且所有表空间的数据块尺寸都是完全相同的 从Oracle9i开始 允许不同类型的表空间采用不同的数据块尺寸 Oracle9i仍然保留了初始化参数DB BLOCK SIZE 此时该参数用于定义默认 也称标准 数据块的尺寸 并且SYSTEM表空间的数据块会使用该尺寸 而其他表空间则可以根据情况来确定数据块尺寸 实例2 8 查看标准块的大小 2 6SQL语句的处理 在本章的最后 我们通过SQL语句的提交和处理过程来进一步了解Oracle服务器的工作原理 用户的SQL语句根据其特点可划分为 返回查询结果的查询语句 生成日志记录DML操作 确保数据写入数据库 并在实例故障时可以恢复的Commit操作 2 6 1连接和建立会话 当客户应用需要执行SQL语句时 首先要建立用户进程 同时在服务器端会自动为该用户进程派生一个新的服务进程 默认情况下 用户进程与服务器进程是一一对应的关系 当客户端运行SQL语句时 用户进程会通过网络将该SQL语句发送到对应的服务进程 并且由服务进程执行该SQL语句 服务器进程在执行了SQL语句之后 会将SQL语句的结果通过网络返回到用户进程 2 6SQL语句的处理 连接 Connection 是用户进程到服务器进程的网络通信通道 连接和用户进程是一一对应的 而 会话 Session 则是特定用户的连接 连接和会话是一对多的关系 但同一时刻一个连接对应于一个会话 例如 当以SQL Plus连接到Oracle服务器时 需要建立了一个物理 连接 而以SCOTT用户登录后 会建立SCOTT会话 2 6 2处理查询语句 查询操作分为4个步骤 语句解析 Parse 绑定变量 Bind 执行 Execute 提取数据 Fetch 1 语句解析 当一个查询语句 SELECT 发送到服务器端后 服务进程首先使用Oracle内部的 散列 HASH 函数取得该语句的解析代码值 如果在共享池中存在相同的解析代码值 表明该语句已经存在 那么服务器进程会跳过 解析 阶段 直接转入下一阶段 如果该解析代码值在共享池中不存在 服务器进程会检查该语句是否符合SQL语法规则 并检查表名 列名是否正确 以及是否有相应的查询权限 然后生成该语句的 执行计划 最终将SELECT语句和执行计划装载到库高速缓存 执行计划实际是Oracle内部执行SQL语句的具体步骤 执行计划的优劣会对应用系统性能产生很大的影响 所以在开发应用系统时一定要采用 执行计划最佳 的SQL语句 例如 一个表上建立有索引和没有索引 生成的执行计划可能是不同的 2 绑定变量 在此阶段 如果查询语句中有绑定变量 语句就要获得绑定的变量值 3 执行经过语句解析 Oracle最终生成了执行计划 并将该执行计划装载到了库高速缓存 在执行阶段 服务器进程将按照执行计划中所安排的步骤来执行SELECT语句 首先 服务器进程要确定被选择行所在数据块是否已经被读取到数据高速缓存 如果该数据块内容已经被读取到数据高速缓存 则转入 提取数据 阶段 如果该数据块没有被读取到数据高速缓存 那么服务进程会将数据块内容复制到数据高速缓存的缓冲区中 4 提取数据 fetch 经过语句执行之后 被选择行所在数据块内容已经被复制到了数据高速缓存的缓冲区中 在提取数据阶段 服务器进程从数据高速缓存中选择相应数据行 并将结果返回到用户进程 1 6 3处理DML语句 处理DML语句分为3个步骤 语句解析 Parse 绑定变量 Bind 执行 Execute 1 语句解析类似于处理SELECT语句的过程 服务器进程根据HASH函数生成该语句的解析代码值 然后检查DML语句语法 DML语句所对应的表名 列名等 最终生成该语句的执行计划 然后将DML语句及执行计划存储到库高速缓存 2 绑定变量在此阶段 如果DML语句中有绑定变量 语句就要获得绑定的变量值 3 执行DML在经过语句解析之后 DML语句的执行计划被存储到了库高速缓存 在执行阶段 服务器进程将按照解析阶段所生成的执行计划来执行该DML语句 对于UPDATE语句 服务进程首先要检查对应的数据块和回滚块在数据高速缓存中是否已经存在 如果不存在 则会从数据文件中将对应的数据块和回滚块内容复制到数据高速缓存 回滚块用来存储旧值 这样在必要时就可以回滚DML语句 然后 服务器进程在要修改的数据行上加锁 防止其他用户修改该数据 最后 服务器进程将旧数据写入到回滚块所对应的缓冲区 将新数据写入到数据块所对应的缓冲区 同时将数据块和回滚块的变化记载到重做日志缓冲区 服务器进程写入数据块和回滚块都是在数据高速缓存中完成的 被修改的数据块和回滚块被标识为 脏缓冲区 DELETE和INSERT语句的处理过程类似UPDATE DELETE语句的旧值包含被删除行的所有列值 而INSERT语句旧值包含的是行位置信息 对于DDL语句 与DML语句有所不同 因为执行DDL语句需要写数据字典 DDL语句的执行包含语句解析 数据字典查找和执行过程 2 6 4处理Commit语句 当用户发出COMMIT命令时 服务器进程首先将 COMMIT 和SCN写入到重做日志缓冲区 然后LGWR进程将重做日志缓冲区的所有重做记录写入到重做日志文件中 在将事务修改写入到重做日志之后 服务器进程将提交成功信息返回到用户进程 最后 服务器进程释放事务所占有的锁 COMMIT语句会导致将修改记录到重做日志文件 而不会写入数据文件 2 7小结 本章介绍了Oracle服务器的总体结构以及工作原理 Oracle服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统 Oracle服务器由实例和数据库两部分构成 实例由内存结构和后台进程组成 Oracle内存结构被总称为SGA 包括数据高速缓冲区 重做日志缓冲区 共享池 Java池和大池 后台进程主要包括以下几个进程SMON PMON DBWn CKPT LGWR和ARCn Oracle数据库由数据文件 控制文件和重做日志文件组成 在逻辑结构上 Oracle数据库由表空间 段 数据区间和数据块构成 2 8练习 见word文档
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!