数据库实例与操作模式

上传人:san****019 文档编号:25734616 上传时间:2021-07-31 格式:PPT 页数:52 大小:568.81KB
返回 下载 相关 举报
数据库实例与操作模式_第1页
第1页 / 共52页
数据库实例与操作模式_第2页
第2页 / 共52页
数据库实例与操作模式_第3页
第3页 / 共52页
点击查看更多>>
资源描述
Oracle 数据库基础教程第 8章 数 据 库 实 例 与 操 作 模 式 Oracle 数据库基础教程本 章 内 容p Oracle实例p Oracle内存结构p Oracle后台进程p数据库操作模式 Oracle 数据库基础教程本 章 要 求p掌握Oracle实例基本概念p掌握Oracle实例的内存结构、功能及管理p了解Oracle进程分类及其作用p掌握Oracle后台进程、功能及管理p了解Oracle数据库操作模式 Oracle 数据库基础教程8.1实 例 概 述 Oracle实 例 的 概 念 是 Oracle数 据 库 的 软 件 结 构 , 处 于 用 户 和 物 理 数 据 库 之间 , 由 一 系 列 后 台 进 程 与 内 存 结 构 组 成 。 启 动 数 据 库 时 , oracle首 先 在 内 存 中 获 取 一 定 的 空 间 , 启动 各 种 用 途 的 后 台 进 程 , 即 创 建 一 个 数 据 库 实 例 。 数 据 库实 例 装 载 数 据 文 件 和 重 做 日 志 文 件 , 最 后 打 开 数 据 库 。 用 户 操 作 数 据 库 的 过 程 , 实 质 上 是 与 数 据 库 实 例 建 立 连接 , 然 后 通 过 实 例 来 连 接 、 操 作 数 据 库 。 Oracle 数据库基础教程 处 理 数 据 的 内 存 结 构实 例 后 台 进 程 客 户 应 用 程 序 服 务 器 进 程 数 据 库 Oracle 数据库基础教程p Oracle数据库服务器由数据库和实例组成p数据库与实例的关系n数据库是Oracle用于保存数据的一系列物理结构和逻辑结构n用户直接与实例交互,由实例访问数据库。n每个数据库至少有一个与之对应的实例p启动数据库时先创建实例 p Oracle 实例组成 Oracle 数据库基础教程实 例SGA 日 志 缓 存共 享 池数 据 字 典缓 冲 区库 缓 冲 区 DBWRSMONPMON CKPTLGWR Others用 户 进 程服 务 器 进 程PGA 控 制 文 件数 据 文件 归 档 日 志文 件参 数 文 件口 令 文 件 重 做 日 志文 件数 据 库数 据 库 缓 存 Oracle 数据库基础教程8.2Oracle内 存 结 构p系统全局区 SGAn SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。 p程序全局区PGA n PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息。 Oracle 数据库基础教程8.2.1系 统 全 局 区 SGAp SGA 包含的内存结构有:n数据高速缓冲区(Database Buffer Cache)n共享池(Shared Pool)n重做日志缓冲区(Redo Log Buffer) n其他结构 (例如锁管理、统计数据)p在SGA,有两个可配置的可选内存结构: n大池(Large Pool)n Java池(Java Pool) Oracle 数据库基础教程数 据 高 速 缓 冲 区p功能n数据缓冲区存储的是从数据文件中检索出来的数据拷贝。应用程序要访问的数据必须从磁盘的数据文件读到数据缓冲区中处理。n在数据缓冲区中被修改后的数据由数据写入进程写到硬盘的数据文件中永久保存。 n提高获取和更新数据的性能 SGA 用 户 进 程 服 务 器 进 程 DBWR 数 据 文 件 数 据 高 速 缓 冲 区 脏 缓 存 块 空 闲 缓 存 块 命 中 缓 存 块 Oracle 数据库基础教程p缓冲块的类型:n“脏”缓存块(Dirty Buffers)p保存的是已经被修改过的数据 n空闲缓存块(Free Buffers) p不包含任何数据,它们等待后台进程或服务器进程向其中写入数据。 n命中缓存块(Pinned Buffers)p正被使用,或者被显式声明为保留的缓存块 Oracle 数据库基础教程p缓冲块的管理n该列表中包含那些已经被修改但还没有写入数据文件的脏缓存块。n LRU列表(Least Recently Used):该列表中包含所有的空闲缓存块、命中缓存块以及那些还没有来得及移入到脏缓存块列表的脏缓存块。在该列表中,最近被访问的缓存块被移动到该列表的头部,而其他缓存块向列表尾部移动,最近最少被访问的缓存块最先被移出LRU列表,从而保证最频繁使用的数据块始终保存在内存中 Oracle 数据库基础教程p数据高速缓冲区大小n DB_CACHE_SIZE(DB_BLOCK_SIZE、DB_BLOCK_BUFFERS)n可以在参数文件中设置数据高速缓冲区的大小。数据高速缓冲区越大,用户需要的数据在内存中的可能性越大,即缓存命中率高,从而减少了Oracle访问硬盘数据的次数,提高数据库系统执行的效率。然而,数据高速缓冲区的值太大,Oracle不得不在内存中寻找更多的块来定位所需要数据,反而降低了系统性能。因此需要确定一个合理的数据高速缓冲区的大小。 Oracle 数据库基础教程重 做 日 志 缓 冲 区p功能n用于缓存在用户对数据进行修改的操作过程中生成的重做记录。当重做日志缓冲区被添满时,由日志写入进程把重做日志缓冲区的内容写到磁盘的重做日志文件中做永久的保存。 SGA 区 数 据 高 速 缓 冲 区 重 做 日 志 高 速 缓 冲 区 LGWR ARCH 归 档 文 件 重 做 日 志 文 件 Oracle 数据库基础教程p重做日志缓冲区的大小n LOG_BUFFERn在参数文件中设置,LOG_BUFFER的值越大,重做日志缓冲区就可以存放更多的事务提交的记录,减少了数据被频繁填充到重做日志文件中的次数。 Oracle 数据库基础教程共 享 池p功能n用于缓存与SQL或PL/SQL语句、数据字典、资源锁以及其他控制结构相关的数据p组成n库缓存 p库缓存用于缓存已经解释并执行过的SQL语句和PL/SQL程序代码,以提高SQL或PL/SQL程序的执行效率。p包括SQL工作区和PL/SQL工作区 n数据字典缓存区p数据字典缓存区保存最常用的数据字典信息 Oracle 数据库基础教程p共享池大小 n SHARED_POOL_SIZE n合适的共享池大小,可使编译过的程序代码长驻内存,大大降低重复执行相同的SQL语句、PL/SQL程序的系统开销,从而提高数据库的性能。 Oracle 数据库基础教程大 型 池 p功能n大型池是一个可选的内存配置项,主要为Oracle多线程服务器、服务器I/O进程、数据库备份与恢复操作、执行具有大量排序操作的SQL语句、执行并行化的数据库操作等需要大量缓存的操作提供内存空间。如果没有在SGA区中创建大型池,上述操作所需要的缓存空间将在共享池或PGA中分配,因而影响共享池或PGA的使用效率。p大型池大小 n大型池的大小由参数LARGE_POOL_SIZE参数指定,在数据库运行期间,可以使用ALTER SYSTEM语句修改大型池的大小, Oracle 数据库基础教程Java池 p功能n Java提供对Java程序设计的支持,用于存储Java代码、Java语句的语法分析表、Java语句的执行方案和进行Java程序开发。p Java池大小n Java池大小由参数JAVA_POOL_SIZE指定,通常不小于20M,以便安装Java虚拟机 Oracle 数据库基础教程影 响 SGA大 小 的 参 数p DB_CACHE_SIZEp LOB_BUFFERp SHARED_POOL_SIZEp JAVA_POOL_SIZEp LARGE_POOL_SIZE Oracle 数据库基础教程8.2.3PGA区p功能n PGA 是为每一个与Oracle数据库连接的用户保留的内存区,主要存储该连接使用的变量信息和与用户进程交换的信息。是非共享的,只有服务进程本身才能访问它自己的PGA区p组成 n由排序区、会话区、游标区以及堆栈区组成 n排序区主要用于存放排序操作所产生的临时数据,其大小由初始化参数SORT_AREA_SIZE定义;会话区用于保存用户会话所具有的权限、角色、性能统计信息;游标区用于存放执行游标操作时所产生的数据;堆栈区用于保存会话过程中的绑定变量、会话变量等信息。 Oracle 数据库基础教程Userprocess Stackspace Session informationsort area, cursor informationSGA Shared SQL areas SGASessioninformation PGA Dedicated server Shared server Serverprocess Shared SQL areasStackspace sort area, cursor information Oracle 数据库基础教程8.2.4在 OEM中 管 理 数 据 库 实 例 的 内 存 结 构 Oracle 数据库基础教程8.3Oracle后 台 进 程p进程的概念n进程是操作系统中一个独立的可以调度的活动,用于完成指定的任务。进程与程序的区别在于:n进程是动态的概念,即动态创建,完成任务后立即消亡;而程序是一个静态实体。n进程强调执行过程,而程序仅仅是指令的有序集合。p进程的类型 n用户进程n服务器进程n后台进程 Oracle 数据库基础教程p用户进程 n当用户连接数据库执行一个应用程序时,会创建一个用户进程,来完成用户所指定的任务。 p服务器进程 n服务器进程由Oracle自身创建,用于处理连接到数据库实例的用户进程所提出的请求。用户进程只有通过服务器进程才能实现对数据库的访问和操作。 n服务器进程分为专用服务器进程和共享服务器进程两种。一个专用服务器进程只能为一个用户进程提供服务;一个共享服务器进程可以为多个用户进程提供服务。n服务器进程主要完成以下任务:p解析并执行用户提交的SQL语句和PL/SQL程序;p在SGA的数据高速缓冲区中搜索用户进程所要访问的数据,如果数据不在缓冲区中,则需要从硬盘数据文件中读取所需的数据,再将它们复制到缓冲区中;p将查询或执行后的结果数据返回给用户进程。 Oracle 数据库基础教程p后台进程 n后台进程作用p为了保证Oracle数据库在任意一个时刻可以处理多用户的并发请求,进行复杂的数据操作,而且还要优化系统性能,Oracle数据库起用了一些相互独立的附加进程,称为后台进程。服务器进程在执行用户进程请求时,调用后台进程来实现对数据库的操作。 n后台进程主要完成以下任务:p在内存与磁盘之间进行I/O操作;p监视各个服务器进程状态;p协调各个服务器进程的任务;p维护系统性能和可靠性等。 Oracle 数据库基础教程 Oracle 数据库基础教程8.3.2Oracle后 台 进 程p DBWR 数据库写入进程p LGWR 日志写入进程p CKPT 检查点进程p SMON 系统监控进程p PMON 进程监控进程p ARCH 归档进程 p RECO 恢复进程p LCKn 封锁进程p Dnnn 调度进程p Snnn 共享服务器进程 Oracle 数据库基础教程DBWR( 数 据 库 写 入 进 程 )n功能: 数据库写入进程负责把数据高速缓冲区中已经被修改过的数据(“脏”缓存块)成批写入数据文件中永久保存,同时使数据高速缓冲区有更多的空闲缓存块,保证服务器进程将所需要的数据从数据文件读取到数据高速缓冲区中,提高缓存 命中率。InstanceSGADatabaseBufferCacheDBWn Control filesData files Redo log filesDatabase Oracle 数据库基础教程p启动DBWR进程n执行INSERT、UPDATE等操作时 ,没有足够的空闲块n当检查点发生时,将启动DBWR进程 n当数据缓存的LRU列表的长度达到初始化 DB_BLOCK_WRITE_BATCH指定值的一半时 n若发生超时(大约3秒未被启动) Oracle 数据库基础教程LGWR( 日 志 写 入 进 程 )p功能n日志写入进程负责把重做日志缓冲区的数据写入重做日志文件中永久保存。 n数据写入进程在工作之前,需要了解日志写入进程是否已经把相关的日志缓冲区中记载的数据写入硬盘中,如果相关的日志缓冲区中的记录还没有被写入,DBWR会通知LGWR完成相应的工作,然后DBWR才开始写入。InstanceSGADBWn Redo LogBufferControl filesData files Redo log filesLGWRDatabase Oracle 数据库基础教程p启动LGWR进程n用户通过COMMIT语句提交当前事务n重做日志缓存被写满三分之一n DBWR进程开始将脏缓存块写入数据文件n每隔3秒,即发生一次超时,将启动LGWR p事务提交机制 n快速提交n组提交 Oracle 数据库基础教程CKPT( 检 查 点 进 程 )p检查点概念 检查点是一个事件,当该事件发生时(每隔一段时间发生),DBWR进程把数据高速缓冲区中脏缓存块写入数据文件中,同时Oracle将对数据库控制文件和数据文件的头部的同步序号进行更新,以记录下当 前的数据库结构和状态,保证数据的同步。InstanceSGADWW0 Redo LogBufferLGWRB n CKPTControl filesData files Redo log files Oracle 数据库基础教程p CKPT进程的作用n更新控制文件与数据文件的头部,使其同步n触发DBWR进程,将脏缓存块写入数据文件p检查点的级别 n数据库检查点:每一次日志切换时,执行一个数据库检查点,DBWR进程将数据高速缓冲区中的脏缓存块写入数据文件中; n表空间检查点:当一个表空间设置为脱机状态时,执行一个表空间检查点,DBWR进程把数据高速缓存中与该表空间相关的脏缓存块写入数据文件中。n时间检查点:可以设置以时间为基础的检查点,每隔一段时间执行一次检查点。需要为检查点设置一个合适的执行间隔,间隔太短,将会产生过多的硬盘I/O操作;间隔太长,数据库的恢复将耗费太多时间。 Oracle 数据库基础教程p检查点事件的触发n每一个日志切换时n当实例以如下方式关闭时 p NORMAL,TRANSACTION,IMMEDIATE n当使用 ALTER TABLESPACE OFFLINE NORMAL|READ ONLY|BEGIN BACKUP ,作用于某个数据文件上的检查点发生时.n设置以时间为基础的检查点事件n当数据库管理员需要手工操作时p ALTER SYSTEM CHECKPOINT Oracle 数据库基础教程p与检查点的相关初始化参数 n LOG_CHECKPOINT_INTERVALp用来指定重做日志文件每写多少操作系统块发生一次检查点事件 p例如重做日志文件1M,系统操作块为1K:设置此参数为500,则重做日志文件写入500K时,检查点事件发生n LOG_CHECKPOINT_TIMEOUTp用来指定每隔多长时间发生一次检查点p如1800,表示每隔1800秒,如果为0,表示此参数无效En LOG_CHECKPOINT_TO_ALERTp用于设置是否将检查点信息记录到警告日志中数 Oracle 数据库基础教程SMON( 系 统 监 控 进 程 )p功能n在实例启动时负责对数据库进行恢复;n回收不再使用的临时空间。n将各个表空间的空闲碎片合并(表空间的存储参数PCTINCREASE不为0时)。InstanceSGA SMONControl filesData files Redo log filesDatabase Oracle 数据库基础教程PMON( 进 程 监 控 进 程 )p功能n负责恢复失败的用户进程或服务器进程,并且释放进程所占用的资源;n清除非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA、PGA等资源; n监控调度进程和服务器进程的状态,如果它们失败,则尝试重新启动它们,并释放它们所占用的各种资源。InstanceSGAPMON PGA area Oracle 数据库基础教程ARCH( 归 档 进 程 )p功能n归档进程负责在日志切换后将已经写满的重做日志文件复制到归档目标中,防止写满的重做日志文件被覆盖p最多可启动10个归档进程( ARC0 ARC9) Oracle 数据库基础教程RECO( 恢 复 进 程 )p功能n RECO进程负责在分布式数据库环境中自动解决分布式事务的故障。一个节点的RECO自动解决所有的悬而未决的事务。当一个数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果该远程服务器不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。当且仅当数据库配置为分布式事务处理,且初始化参数DISTRIBUTED_TRANSACTIONS的值大于0时,RECO进程才会自动启动。 Oracle 数据库基础教程LCKn( 锁 进 程 )p功能n LCKn进程用于Oracle并行服务器环境中。在数据库中最多可以启动10个LCKn进程,主要用于实例间的封锁。 Oracle 数据库基础教程Dnnn( 调 度 进 程 )p功能n Dnnn进程是多线程服务器(Multithreaded Server,MTS)的组成部分,以后台进程的形式运行。调度进程接受用户进程请求,将它们放入请求队列中,然后为请求队列中的用户进程分配一个服务器进程。最后,从响应队列返回数据给用户进程 Oracle 数据库基础教程SGA( System Global Area)共 享 SQL区共 享 池 数 据 库 缓 冲 存 储 区 日 志 缓 冲 区数 据 字 典Server ProcessUser Process DBWR PMONCKPT LGWR SMONARCH Datafiles Control Files Redo Log Files 归档 Oracle 数据库基础教程8.4数 据 库 操 作 模 式p专用服务器操作模式p共享服务器模式 Oracle 数据库基础教程 Oracle 数据库基础教程8.4.1专 用 服 务 器 模 式p概念n所谓的专用服务器模式是指Oracle为每个用户进程启动一个专门的服务器进程,该服务器进程仅为该用户进程提供服务,直到用户进程断开连接时,对应的服务器进程才终止。n服务器进程与客户进程是一对一的关系。 n各个专用服务器进程之间是完全独立的,它们之间没有数据共享。 Oracle 数据库基础教程p专用服务器模式体系结构 用 户 进 程 用 户 进 程 服 务 器 进 程 服 务 器 进 程 客 户 端 服 务 器 端 SGA 区 后 台 进 程 数 据 库 实 例 Oracle 数据库基础教程p专用服务器模式工作过程n用户进程向一个数据库实例发出连接请求。n位于数据库服务器中的Oracle监听程序探测到用户进程请求后,首先验证用户进程提供的用户名和口令,验证通过后建议一个专用的服务器进程为该用户进程提供服务。n用户提交一条SQL语句。n专用服务器进程首先判断在共享SQL工作区中是否存在类似的SQL语句。如果不存在,将为这条SQL语句分配新的共享SQL工作区,然后解析该语句。在解析过程中,服务器进程将检查该语句的语法正确性。同时,该语句的私有数据和信息保存到服务器进程的PGA中。 n解析完成后,服务器进程开始在数据高速缓冲区中寻找SQL语句所要求的数据。如果数据不在数据高速缓冲区中,还需要从数据文件中将所需要的数据读取到数据高速缓冲区中。n服务器进程执行SQL语句。如果SQL语句要对数据进行更改,仅在数据高速缓冲区中对缓存块进行更改,并将更改所生成的重做记录保存在重做日志缓存中。将来,由LGWR进程将重做记录写入重做日志文件,由DBWR进程将脏缓存块写入数据文件。n执行完毕后,服务器进程将结果返回给用户进程。 Oracle 数据库基础教程8.4.2多 线 程 服 务 器 模 式p概念n所谓多线程服务器模式是指在数据库中创建并启动一定数目的服务器进程,在调度进程的帮助下,这些服务器进程可以为任意数量的用户进程提供服务,即一个服务器进程可以被多个用户进程共享,所以多线程服务器模式又称为共享服务器模式 n在创建数据库实例时,每个调度进程将自己的监听地址告诉Oracle监听程序,监听程序根据监听地址把用户进程的请求传递给相应的调度进程。每个调度进程只能为使用特定网络协议连接实例的用户进程服务。当监听器监听到一个用户进程后,检查是否可以使用多线程服务器进程,如果可以,则将该用户进程传递 给某个调度进程,然后用户进程直接与该调度进程通信。如果没有找到合适的调度程序,则将启用一个专用服务器进程为用户进程服务 Oracle 数据库基础教程p多线程服务器模式的体系结构 客 户 进 程 客 户 端 监 听 程 序 服 务 器 端 调 度 程 序 后 台 进 程 SGA 请 求 队 列 响 应 队 列 服 务 器 进 程 数 据 库 实 例 Oracle 数据库基础教程p多线程服务器模式工作过程n在客户端创建一个用户进程,连接数据库。n位于服务器中的Oracle监听程序探测到用户进程请求后,首先验证用户进程提供的用户名和口令,验证通过后将该用户进程分配给一个调度进程。用户进程直接与调度进程进行交互。n用户提交一条SQL语句,调度进程对SQL语句进行处理,然后将处理结果放入位于SGA区中的一个“请求队列”中,同时将调度程序ID也存入请求队列。n当某个共享服务器进程空闲时,从“请求队列”中取出一条处理后的SQL语句,并对该语句进行解析和执行,得到它所请求的数据。 n共享服务器进程将处理结果放入SGA区中的一个“响应队列”中。n调度程序定期检查“响应队列”,如果发现有自己送出请求的处理结果,则将结果取出。调度程序根据处理结果中保存的调度程序ID来标识该结果是否是自己的。n调度程序将处理结果返回给用户进程。 Oracle 数据库基础教程小 结p数据库实例的概念 p实例内存区的组成与功能 p实例后台进程的分类与功能 p数据库服务器操作模式
展开阅读全文
相关资源
相关搜索

最新文档


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


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

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


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