已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章数据库实例 本章内容 Oracle实例概述Oracle内存结构Oracle后台进程 本章要求 掌握Oracle实例基本概念掌握Oracle实例的内存结构 功能及管理了解Oracle进程分类及其作用掌握Oracle后台进程 功能及管理 8 1实例概述 Oracle实例的概念Oracle数据库主要由放在磁盘中的物理数据库和对物理数据库进行管理的数据库管理系统 其中数据库管理系统是处于用户与物理数据库之间的一个中间层软件 又称为实例 由一系列内存结构和后台进程组成 在启动数据库时 Oracle首先在内存中获取一定的空间 启动各种用途的后台进程 即创建一个数据库实例 然后由实例装载数据文件和重做日志文件 最后打开数据库 用户操作数据库的过程实质上是与数据库实例建立连接 然后通过实例来连接 操作数据库的过程 数据库与实例的关系单实例数据库系统多实例数据库系统 实例组成内存结构 系统全局区 SGA 和程序全局区 PGA 后台进程组成 处理数据的内存结构 实例 后台进程 服务器进程 数据库 实例 SGA 日志缓存 共享池 数据字典缓冲区 库缓冲区 DBWR SMON PMON CKPT LGWR Others 用户进程 服务器进程 PGA 控制文件 数据文件 归档日志文件 参数文件 口令文件 重做日志文件 数据库 数据库缓存 8 2Oracle内存结构 系统全局区 SystemGlobalArea SGA 程序全局区 ProgramGlobalArea PGA SGASGA是由Oracle分配的共享内存结构 包含一个数据库实例共享的数据和控制信息 当多个用户同时连接同一个实例时 SGA数据可供多个用户共享 SGA又称为共享全局区 SharedGlobalArea 用户对数据库的各种操作主要在SGA中进行 该内存区随数据库实例的创建而分配 随实例的终止而释放 PGAPGA是在用户进程连接数据库 创建一个会话时 由Oracle为用户分配的内存区域 保存当前用户私有的数据和控制信息 因此该区又称为私有全局区 PrivateGlobalArea 每个服务器进程只能访问自己的PGA 所有服务器进程的PGA总和即为实例的PGA的大小 8 2 1SGA SGA包含的内存结构有 数据高速缓冲区 DatabaseBufferCache 共享池 SharedPool 重做日志缓冲区 RedoLogCache 大型池 LargePool Java池 JavaPool 流池 StreamsPool 其他结构 如固定SGA 锁管理等 1 数据高速缓冲区 功能存储从数据文件中检索出来的数据拷贝 应用程序要访问的数据必须从磁盘的数据文件读到数据缓冲区中处理 在数据缓冲区中被修改后的数据由数据写入进程写到硬盘的数据文件中永久保存 提高获取和更新数据的性能 数据高速缓冲区的工作过程 缓冲块的类型脏缓存块 DirtyBuffers 脏缓存块中保存的是已经被修改过的数据 当一条SQL语句对某个缓存块中的数据进行修改后 这个缓存块就被标记为脏缓存块 它们最终将由DBWR进程写入数据文件 以永久性地保存修改结空闲缓存块 FreeBuffers 空闲缓存块中不包含任何数据 它们等待后台进程或服务器进程向其中写入数据 当Oracle从数据文件中读取数据时 将会寻找空闲缓存块 以便将数据写入其中命中缓存块 PinnedBuffers 正被使用 或者被显式地声明为保留的缓存块 这些缓存块始终保留在数据高速缓冲区中 不会被换出内存 缓存块的管理脏缓存块列表 包含那些已经被修改但还没有写入数据文件的脏缓存块 LRU列表 LeastRecentlyUsed 包含所有的空闲缓存块 命中缓存块和那些还没有来得及移入到脏缓存块列表中的脏缓存块 在该列表中 最近被访问的缓存块被移动到列表的头部 而其他缓存块向列表尾部移动 最近最少被访问的缓存块最先被移出LRU列表 从而保证最频繁使用的缓存块始终保存在内存中 数据高速缓冲区大小数据高速缓冲区越大 用户需要的数据在内存中的可能性就越大 即缓存命中率越高 从而减少了Oracle访问硬盘数据的次数 提高了数据库系统执行的效率 然而 如果数据高速缓冲区的值太大 Oracle就不得不在内存中寻找更多的块来定位所需要的数据 反而降低了系统性能 显然需要确定一个合理的数据高速缓冲区大小 DB CACHE SIZE 标准块 2 重做日志缓冲区 功能重做日志缓冲区用于缓存用户对数据库进行修改操作时生成的重做记录 为了提高工作效率 重做记录并不是直接写入重做日志文件中 而是首先被服务器进程写入重做日志缓冲区中 在一定条件下 再由日志写入进程 LGWR 把重做日志缓冲区的内容写入重做日志文件中做永久性保存 在归档模式下 当重做日志切换时 由归档进程 ARCH 将重做日志文件的内容写入归档文件中 重做日志缓冲区的工作过程 重做日志缓冲区的大小LOG BUFFER较大的重做日志缓冲区 可以减少对重做日志文件写的次数 适合长时间运行的 产生大量重做记录的事务 共享池 功能共享池用于缓存最近执行过的SQL语句 PL SQL程序和数据字典信息 是对SQL语句 PL SQL程序进行语法分析 编译 执行的区域 组成库缓存库缓存用于缓存已经解释并执行过的SQL语句和PL SQL程序代码 以提高SQL或PL SQL程序的执行效率 包括SQL工作区和PL SQL工作区数据字典缓存区数据字典缓存区保存最常用的数据字典信息 共享池大小SHARED POOL SIZE合适的共享池大小 可使编译过的程序代码长驻内存 大大降低重复执行相同的SQL语句 PL SQL程序的系统开销 从而提高数据库的性能 大型池 功能大型池是一个可选的内存配置项 主要为Oracle多线程服务器 服务器I O进程 数据库备份与恢复操作 执行具有大量排序操作的SQL语句 执行并行化的数据库操作等需要大量缓存的操作提供内存空间 如果没有在SGA区中创建大型池 上述操作所需要的缓存空间将在共享池或PGA中分配 因而影响共享池或PGA的使用效率 大型池大小LARGE POOL SIZE Java池 功能Java提供对Java程序设计的支持 用于存储Java代码 Java语句的语法分析表 Java语句的执行方案和进行Java程序开发 Java池大小JAVA POOL SIZE通常不小于20M 以便安装Java虚拟机 6 流池 功能流池是一个可选的内存配置项 用于对流的支持 流池大小STREAMS POOL SIZE 8 2 2SGA的管理 SGA组件大小调整DB CACHE SIZELOG BUFFERSHARED POOL SIZELARGE POOL SIZEJava POOL SIZESTRAMS POOL SIZESGA MAX SIZE注意除了SGA MAX SIZE不能修改外 其他几个参数可以使用ALTERSYSTEM语句进行动态调整 SGA自动管理在Oracle10g中 通过设置初始化参数SGA TARGET 可以实现对SGA中的数据高速缓冲区 共享池 大型池 Java池和流池的自动管理 即这几个组件的内存调整不需要DBA来干预 系统自动进行调整 但是对于日志缓冲区 非标准块的数据高速缓冲区 保留池 回收池等其他区域的调整还需要DBA使用ALTERSYSTEM语句手动进行调整 设置SGA自动管理的方法计算参数SGA TARGET的大小SELECT SELECTSUM value FROMV SGA SELECTCURRENT SIZEFROMV SGA DYNAMIC FREE MEMORY 1024 1024 MB SGA TARGET FROMDUAL 设置参数SGA TARGET通过ALTERSYSTEM语句设置参数SGA TARGET的值 该值可以是 1 中计算出来的结果 也可以是当前SGA大小与SGA MAX SIZE之间的某个值 例如将SGA中与自动管理相关的组件大小设置为0 ALTERSYSTEMSETSHARED POOL SIZE 0 SQL ALTERSYSTEMSETLARGE POOL SIZE 0 SQL ALTERSYSTEMSETJava POOL SIZE 0 SQL ALTERSYSTEMSETLARGE POOL SIZE 0 SQL ALTERSYSTEMSETSTREAMS POOL SIZE 0 如果要取消自动管理 只需将参数SGA TARGET设置为0即可 8 2 3PGA 功能PGA是为每一个与Oracle数据库连接的用户保留的内存区 主要存储该连接使用的变量信息和与用户进程交换的信息 是非共享的 只有服务进程本身才能访问它自己的PGA区组成由排序区 会话区 游标区以及堆栈区组成排序区主要用于存放排序操作所产生的临时数据 其大小由初始化参数SORT AREA SIZE定义 会话区用于保存用户会话所具有的权限 角色 性能统计信息 游标区用于存放执行游标操作时所产生的数据 堆栈区用于保存会话过程中的绑定变量 会话变量等信息 Userprocess Stackspace Sessioninformationsortarea cursorinformation SGA SharedSQLareas SGA PGADedicatedserverSharedserver Serverprocess SharedSQLareas Stackspace sortarea cursorinformation 8 2 4在OEM中管理数据库实例的内存结构 8 3Oracle后台进程 Oracle进程概述Oracle后台进程 8 3 1Oracle进程概述 进程的概念进程是操作系统中一个独立的可以调度的活动 用于完成指定的任务 进程与程序的区别在于 进程是动态的概念 即动态创建 完成任务后立即消亡 而程序是一个静态实体 进程强调执行过程 而程序仅仅是指令的有序集合 进程的类型用户进程服务器进程后台进程 用户进程当用户连接数据库执行一个应用程序时 会创建一个用户进程 来完成用户所指定的任务 服务器进程服务器进程由Oracle自身创建 用于处理连接到数据库实例的用户进程所提出的请求 用户进程只有通过服务器进程才能实现对数据库的访问和操作 服务器进程分为专用服务器进程和共享服务器进程两种 服务器进程主要完成以下任务 解析并执行用户提交的SQL语句和PL SQL程序 在SGA的数据高速缓冲区中搜索用户进程所要访问的数据 如果数据不在缓冲区中 则需要从硬盘数据文件中读取所需的数据 再将它们复制到缓冲区中 将用户改变数据库的操作信息写入日志缓冲区中 将查询或执行后的结果数据返回给用户进程 后台进程后台进程作用为了保证Oracle数据库在任意一个时刻可以处理多用户的并发请求 进行复杂的数据操作 而且还要优化系统性能 Oracle数据库起用了一些相互独立的附加进程 称为后台进程 服务器进程在执行用户进程请求时 调用后台进程来实现对数据库的操作 后台进程主要完成以下任务 在内存与磁盘之间进行I O操作 监视各个服务器进程状态 协调各个服务器进程的任务 维护系统性能和可靠性等 8 3 2Oracle后台进程 DBWR数据库写入进程LGWR日志写入进程CKPT检查点进程SMON系统监控进程PMON进程监控进程ARCH归档进程RECO恢复进程LCKn封锁进程Dnnn调度进程Snnn共享服务器进程 1 DBWR 数据库写入进程 功能 数据库写入进程负责把数据高速缓冲区中已经被修改过的数据 脏 缓存块 成批写入数据文件中永久保存 同时使数据高速缓冲区有更多的空闲缓存块 保证服务器进程将所需要的数据从数据文件读取到数据高速缓冲区中 提高缓存命中率 Database 启动DBWR进程执行INSERT UPDATE等操作时 没有足够的空闲块当检查点发生时 将启动DBWR进程当数据缓存的LRU列表的长度达到初始化DB BLOCK WRITE BATCH指定值的一半时若发生超时 大约3秒未被启动 LGWR 日志写入进程 功能日志写入进程负责把重做日志缓冲区的数据写入重做日志文件中永久保存 数据写入进程在工作之前 需要了解日志写入进程是否已经把相关的日志缓冲区中记载的数据写入硬盘中 如果相关的日志缓冲区中的记录还没有被写入 DBWR会通知LGWR完成相应的工作 然后DBWR才开始写入 Instance SGA DBWn RedoLogBuffer Controlfiles Datafiles Redologfiles LGWR Database 启动LGWR进程用户通过COMMIT语句提交当前事务重做日志缓存被写满三分之一DBWR进程开始将脏缓存块写入数据文件每隔3秒 即发生一次超时 将启动LGWR事务提交机制快速提交组提交 CKPT 检查点进程 检查点概念检查点是一个事件 当该事件发生时 每隔一段时间发生 DBWR进程把数据高速缓冲区中脏缓存块写入数据文件中 同时Oracle将对数据库控制文件和数据文件的头部的同步序号进行更新 以记录下当前的数据库结构和状态 保证数据的同步 Instance SGA DBWn LGWR CKPT Controlfiles Datafiles Redologfiles CKPT进程的作用更新控制文件与数据文件的头部 使其同步触发DBWR进程 将脏缓存块写入数据文件检查点的级别数据库检查点 每一次日志切换时 执行一个数据库检查点 DBWR进程将数据高速缓冲区中的脏缓存块写入数据文件中 表空间检查点 当一个表空间设置为脱机状态时 执行一个表空间检查点 DBWR进程把数据高速缓存中与该表空间相关的脏缓存块写入数据文件中 时间检查点 可以设置以时间为基础的检查点 每隔一段时间执行一次检查点 需要为检查点设置一个合适的执行间隔 间隔太短 将会产生过多的硬盘I O操作 间隔太长 数据库的恢复将耗费太多时间 检查点事件的触发每一个日志切换时当实例以如下方式关闭时NORMAL TRANSACTION IMMEDIATE当使用ALTERTABLESPACE OFFLINENORMAL READONLY BEGINBACKUP 作用于某个数据文件上的检查点发生时 设置以时间为基础的检查点事件当数据库管理员需要手工操作时ALTERSYSTEMCHECKPOINT 与检查点的相关初始化参数LOG CHECKPOINT INTERVAL用来指定重做日志文件每写多少操作系统块发生一次检查点事件例如重做日志文件1M 系统操作块为1K 设置此参数为500 则重做日志文件写入500K时 检查点事件发生LOG CHECKPOINT TIMEOUT用来指定每隔多长时间发生一次检查点如1800 表示每隔1800秒 如果为0 表示此参数无效ELOG CHECKPOINT TO ALERT用于设置是否将检查点信息记录到警告日志中数 SMON 系统监控进程 功能在实例启动时负责对数据库进行恢复 回收不再使用的临时空间 将各个表空间的空闲碎片合并 表空间的存储参数PCTINCREASE不为0时 Instance SGA SMON Controlfiles Datafiles Redologfiles Instance SGA SMON Database PMON 进程监控进程 功能负责恢复失败的用户进程或服务器进程 并且释放进程所占用的资源 清除非正常中断的用户进程留下的孤儿会话 回退未提交的事务 释放会话所占用的锁 SGA PGA等资源 监控调度进程和服务器进程的状态 如果它们失败 则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2015年7月国开电大专科《公共行政学》期末纸质考试试题及答案
- 康复医学疾病症状解析及护理培训
- 门诊输液健康宣教
- 小班《有营养的食物》
- 2025-2026学年青岛版(新教材)一年级上册第二单元达标试卷(附参考答案)
- 夏季肠胃营养健康教案
- 教师面部表情训练
- 青光眼症状诊断与护理措施分享
- 规培生入院宣教
- 肌肉功能训练讲解
- 电解池+++第一课时+高二上学期化学人教版(2019)选择性必修1
- 隧道工程技术标完成版
- 车辆缴税委托书
- 豹猫调查方案图
- 智能钻完井技术研究综述
- 三基三严练习题库及参考答案
- 脑震荡患者的护理查房
- 《第一课 算法与生活》参考课件
- 资产管理岗试题及答案
- GA/T 2013-2023窃听专用器材鉴定技术规范
- 中行流水模板
评论
0/150
提交评论