资源预览内容
第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
第9页 / 共59页
第10页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Oracle体系结构 主要内容 Oracle体系结构及其组件例程数据库例程内存结构后台进程数据库物理结构逻辑结构 Oracle服务器的工作原理 处理过程可以简单的描述为 用户在其机器上运行基于Oracle的应用程序 如 SQL PLUS PL SQLDeveloper等 即启动用户进程 客户机 服务器之间建立连接 Connect 服务器为用户建立会话 Session 并为该会话建立一个PGA ProgramGlobalArea 程序全局区 以存储与该会话相关的信息 在同一个连接中 不同的用户有不同的会话 启动服务进程 由该服务进程负责执行该会话的各项任务 用户进程发送SQL语句 select update commit 服务器进程解析 编译 执行SQL语句 然后将结果写入数据库并返回结果给用户进程 用户进程接收返回的SQL执行结果 在应用程序中显示SQL执行结果 体系结构及其组件综述 例程 SGA 重做日志缓冲区 共享池 数据字典高速缓存 库高速缓存 DBWR SMON PMON CKPT LGWR Others 用户进程 服务器进程 PGA 控制文件 数据文件 数据库 数据高速缓存 重做日志 Java池 大缓冲池 参数文件 归档日志 图示内容如下 Oracle的体系结构可分客户端 服务器两大部分 客户端 在客户机上安装管理工具后 运行工具启动用户进程 服务器 包括例程和数据库两部分 例程 包括SGA及后台进程 数据库 包括控制文件 数据文件 日志文件等操作系统文件 涉及三种结构 Oracle的内存结构Oracle的进程结构Oracle数据库的存储结构物理结构逻辑结构 内存结构 SGA和PGA 使用内存最多的是SGA 同时也是影响数据库性能的最大参数 进程结构 包括前台进程 后台进程 前台进程是指服务进程和用户进程 前台进程是根据实际需要而运行的 并在需要结束后立刻结束 后台进程是指在Oracle数据库启动后 自动启动的几个操作系统进程 存储结构 分为逻辑存储结构 物理存储结构 逻辑存储结构是描述Oracle数据库中如何组织和管理数据 与操作系统平台无关 物理存储结构是Oracle数据库的外部存储结构 它对应操作系统相关文件 包括控制文件 数据文件 日志文件等操作系统文件 Oracle服务器 Oracle数据库服务器 主要由两部分组成 物理数据库和数据库管理系统 物理数据库是保存数据的物理存储设备 数据库管理系统是用户与物理数据库之间的一个中间是软件层 又称例程 有一定的结构 或称数据库服务器由例程和数据库组成 数据库服务器启动时 Oracle首先要在内存中获取 划分 保留各种用途的区域 运行各种用途的后台 即 创建一个例程 instance 然后由该例程装载 mount 打开 open 数据库 最后由这个例程来访问和控制数据库的各种物理结构 如果把Oracle数据库比作一部汽车 instance相当于汽车的发动机一样 启动oracle数据库前提应先启动instance 当用户连接到数据库并使用数据库时 实际上是连接到该数据库的例程 通过例程来连接 使用数据库 所以例程是用户和数据库之间的中间层 例程与数据库的区别 数据库指的是存储数据的物理结构 总是实际存在的 例程则是由内存结构和一系列进程组成 可以启动和关闭 SID 系统标识符 一台计算机上可以创建多个Oracle数据库 一个数据库上可以有多个例程 为了使例程间不混淆 每个例程都称为 SID SystemIDentify 加以区分 例程的组成 一个Oracle例程是存取和控制一个数据库的软件机制 是接触Oracle数据库的方式 存取数据库中数据的一种手段 或者称之Oracle数据库管理系统 它由系统全局区 SystemGlobalArea 简称SGA 和后台进程组成 连接到例程 建立连接和会话 建立用户连接建立会话 建立会话 数据库用户 用户进程 服务器进程 建立连接 建立连接 是一个安全审核的过程 包括 提交的网络服务名是否正确 输入的用户名及密码是否存在且正确 连接的数据库对象是否存在等等 对这些一系列的过程进行审核 通过用户进程来连接 一旦建立了连接 Oracle服务器会给该用户调度一个服务器进程来完成该用户的请求命令服务 建立会话 服务器进程解析用户进程提供来的SQL语句 完成该次会话执行的各种任务 数据库 Oracle保存数据的容器 分物理存储结构及逻辑存储结构 Oracle数据库物理存储结构 物理存储结构是现实的数据存储单元 对应于操作系统文件 Oracle数据库就是由驻留在服务器的磁盘上的这些操作系统文件所组成的 这些文件有数据文件 日志文件 控制文件 物理存储结构 物理结构主要包括以下三种文件 控制文件数据文件重做日志 控制文件 数据文件 重做日志 数据文件 DataFile 数据文件 DataFile 是物理存储Oracle数据库数据的文件 其特点如下 每一个数据文件只与一个数据库相联系 一个表空间可包含一个或多个数据文件 一个数据文件只能属于一个表空间 重做日志文件 RedoFile 重做日志文件 RedoLogFile 记录所有对数据库数据的修改 以备恢复数据时使用 其特点如下 每一个数据库至少包含两个日志文件组 日志文件组以循环方式进行写操作 每一个日志文件成员对应一个物理文件 控制文件 控制文件 ControlFile 是一个较小的二进制文件 用于描述数据库结构 描述信息如下 数据库建立的日期 数据库名 数据库中所有数据文件和日志文件的文件名及路径 恢复数据库时所需的同步信息 要点注意 在打开和存取数据库时都要访问该文件 记录控制文件名及路径的参数为 CONTROL FILES 参数文件 参数文件 ParameterFile 也被称为初始化参数文件 用于存储SGA 可选的Oracle特性和后台进程的配置参数 当数据库启动 并在创建例程或读取控制文件之前 会先按其中的参数进行例程的配置 位置 Oracle home dbs 口令文件 是个二进制文件 验证特权用户 位置 Oracle home database PWD ora归档日志文件 非活动的重做日志文件的备份 逻辑存储结构 主要描述Oracle数据库的内部存储结构 从技术概念上描述Oracle数据库中如何组织 管理数据 可以分为4部分 表空间 段 区 块 Oracle的逻辑结构是由一个或多个表空间组成 一个表空间 tablespace 由一组段组成一个段 segment 由一组区组成一个区 extent 由一批数据库块组成一个数据库块 block 对应一个或多个物理操作系统块 表空间 表空间是数据库的逻辑划分的最大单元 一个Oracle数据库至少有一个表空间 即system表空间 安装完Oracle10g后 自动创建的表空间为 Example示例表空间 存放例子数据库的方案对象 SYSTEM系统表空间 存放关于表空间名称 控制文件 数据文件等管理信息 它属于sys system方案 不能删除或重命名 SYSAUX辅助系统表空间 用于减少系统表空间的负荷 提高效率 是Oracle10g新增加的表空间 TEMP临时表空间 存放临时表和临时数据 用于排序 USERS用户表空间 存放永久性用户对象及私有信息 也称数据表空间 注意 每一个数据库都应该有一个用户表空间 以便在创建用户时分配给用户 否则用户的数据将会使用SYSTEM表空间 UNDOTBS1重做表 段 Segment 段 数据 表 段 索引段 临时段 回退段 段是表空间的下一个逻辑单位 是表空间中一个指定类型的逻辑存储结构 它由一个或多个区组成 段将占用并增长存储空间 分类如下 区 extent 区 Extent 是由物理上连续存放的块构成 区是Oracle存储分配的最小单位 由一个或多个块组成 当在数据库中创建带有实际存储结构的方案对象 如表 索引 时 Oracle将为该方案对象分配若干个区 以便组成一个对应的段来为该方案对象提供初始的存储空间 当段中已分配的区都写满后 Oracle就为该段分配一个新的区 以便容纳更多的数据 分配的第一个区称初始区 以后分配的区称增量区 数据库块 Block 数据库块 DatabaseBlock 是数据库使用的I O最小单元 又称逻辑块或ORACLE块 一个数据库块对应一个或多个物理操作系统块 块的大小由参数DB BLOCK SIZE确定 数据块的大小是操作系统块大小的整数倍 以Win2K为例 操作系统块 OSblock 的大小为4kb 所以OracleBlock的大小可以是4kb 8kb 16kb等等 存储结构总结 物理存储结构与逻辑存储结构之间的关系 从物理上看 数据库由控制文件 数据文件 重做日志文件等操作系统文件组成 从逻辑上来看 数据库是由系统表空间 用户表空间等组成 表空间是最大的逻辑单位 块是最小的逻辑单位 逻辑存储结构中的块最后对应到操作系统中的块 内存结构 Oracle内存结构由两个部分组成 系统全局区 SGA 在启动例程时分配 是Oracle例程的基础组件 程序全局区 PGA 当启动服务器进程时分配 系统全局区 SGA SGA是ORACLE系统为实例分配的一组共享缓冲存储区 用于存放数据库数据和控制信息 以实现对数据库数据的管理和操作 每个例程都只有一个SGA 它是不同用户进程与服务进程进行通信的中心 数据库的各种操作主要在SGA中进行 所以称其为系统全局区 创建例程时 Oracle为SGA分配内存 终止例程时 释放SGA所占用的内存 系统全局区 SGA由以下内存结构组成 共享池数据高速缓存重做日志缓冲区在SGA内可以配置以下内存结构 大缓冲池Java池 共享池 用于存储 最近执行的SQL语句最近使用的数据定义由两个关键的内存结构组成 库高速缓存数据字典高速缓存尺寸由参数SHARED POOL SIZE控制 共享池 数据字典高速缓存 库高速缓存 ALTERSYSTEMSETSHARED POOL SIZE 64M 库高速缓存 存储最近解析使用的SQL和PL SQL语句信息Oracle在执行用户进程提交的各种SQL语句 PL SQL前要对其进行解析 包括语法解析 对象确认 权限判断 操作优化等 并生成执行计划 占用一定的系统资源 由两个部分组成 共享SQL区共享PL SQL区 数据字典高速缓存 最近使用的对象定义集合包括数据库文件 表 索引 列 用户 权限和其它数据库对象的信息在解析阶段 服务器进程查看数据字典信息以解析对象名数据字典缓存信息到内存 以提高查询和DML响应时间尺寸由共享池尺寸确定 数据高速缓存 存储从数据文件检索的数据块副本通过LRU算法管理DB BLOCK SIZE确定了缓冲区数据块大小 数据高速缓存 初次访问数据时 Oracle将读取磁盘上的数据文件 将数据放入数据高速缓存 再处理数据 如果数据已经位于数据高速缓存中时 Oracle直接操作数据 数据高速缓存的缓存块分为三类 脏缓存块 存放已经被修改过的缓存块 当SQL修改某个缓存块中的数据 则这个缓存块被标记为脏缓存块空闲缓存块 等待写入数据的空闲缓存块 命中缓存块 最近正在被访问的缓存块 管理缓存块的列表 Oracle通过2个列表来管理上述缓存块 脏列表 DIRTY 包括被修改过但尚未写到数据文件的缓冲块 LRU LeastRecentlyUsed 列表包括空闲缓冲块 命中缓存块 以及还没有移到脏列表的缓冲块 数据高速缓存工作原理 读数据入数据高速缓存之前 先在LRU中搜索空闲缓存块 在搜索过程中如果发现脏缓存块 则将其移入DIRTY 找到足够的空闲块 将所有数据读入 3 如果空闲块不足 则暂停搜索 Oralce立刻启动DBWR进程 将DIRTY中的脏缓存块数据写入数据文件释放足够的空闲缓存块 数据库写进程 重做日志缓冲区 记录所有数据块变化 当执行DML 如 update delete insert或者create alter drop等语句时 Oracle都会为这些操作生成重做记录 主要目的是恢
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号