第六讲Oracle数据库服务器例程.ppt

上传人:本田雅阁 文档编号:2584034 上传时间:2019-04-12 格式:PPT 页数:49 大小:318.51KB
返回 下载 相关 举报
第六讲Oracle数据库服务器例程.ppt_第1页
第1页 / 共49页
第六讲Oracle数据库服务器例程.ppt_第2页
第2页 / 共49页
第六讲Oracle数据库服务器例程.ppt_第3页
第3页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第六讲Oracle数据库服务器例程.ppt》由会员分享,可在线阅读,更多相关《第六讲Oracle数据库服务器例程.ppt(49页珍藏版)》请在三一文库上搜索。

1、第六讲 Oracle数据库服务器例程,本章学习目标 Oracle数据库服务器是一个对象关系型数据库管理系统,由数据库文件和实例组成。本章将介绍Oracle服务器的例程结构,包括内存管理和后台进程。,6.1 Oracle9i内存管理 6.2 Oracle9i进程管理,6.1 Oracle9i内存管理,6.1.1 系统全局区(SGA) 6.1.2 程序全局区(PGA),6.1.1 系统全局区(SGA),系统全局区是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。,Redo log buffer,Data buffer cache,SGA

2、,Large pool,Java pool,共享池(share pool),大小由 SHARED_POOL_SIZE 定义 库缓冲包含语句文本, 编译后的代码以及执行计划等 字典缓冲包括表和列的定义和权限等,库缓冲(Library cache),库缓冲 保存最近用过的SQL语句和PL/SQL使用过程中的下列信息: 语句文本 分析树,即编译后的语句 执行计划,即优化器定义的语句执行步骤 库缓冲 又称为共享SQL区。由于 库缓冲 保存了这些信息,所以当一查询在执行计划被换出之前重新执行时,服务进程不必重新分析语句,因此 库缓冲 能改善应用的性能。.,数据字典缓冲(Data Dictionary C

3、ache),数据字典缓冲 保存最近使用过的数据字典信息如表和列的定义,用户名口令和权限。 在分析阶段,服务进程 查找缓冲中的信息以解释语句中指定的对象名并验证访问权限。如有必要服务进程可请求从数据文件中装入这些信息,共享池大小查询,在参数文件中查询初始化参数 shared_pool_size 查询数据字典v$parameter sqlselect name,value from v$parameter where name like %size; 使用show命令查询 sqlshow parameter shared_pool_size,数据库数据缓冲区 (Database Buffer Ca

4、che),在oracle 9i 中, 使用DB_BLOCK_SIZE 来决定,并且可以通过下面的命令动态的改变其大小: ALTER SYSTEM SET DB_CACHE_SIZE = 120M; 处理查询时,服务进程在数据库缓冲区 中寻找所需的数据块。如果在缓冲区中找不到所需数据块,服务进程从数据文件中将数据块读入缓冲区。以后对同样数据块的请求在内存中进行,不需物理读写。 缓冲区用LRU(Least Recently Used)置换算法,在检查点发生时由DBWR写入数据文件,数据缓冲区的查询,如果要查询数据缓冲区的大小,可以按如下方法查找: sqlshow parameter db 也可以通

5、过动态性能视图v$buffer_cache来监视缓存的使用情况。 Sqlselect * from v$buffer_cache;,写 数 据 文 件,Oracle服务器使用延迟、多个块写以减缓磁盘I / O的冲突: 灰数据缓冲区的数量达到阈值; 当进行扫描而无法找到任何空闲缓冲区时进程扫描了指定数量的块; 出现超时每三秒; 出现检查点(检查点是使数据库缓冲区高速缓存与数据文件同步的一种方法),日志缓冲区(Log Buffer),重做日志缓冲区用于在内存中存储未被刷新写入联机重做日志文件的重做信息。它是循环使用的缓冲区,当重做日志缓冲区填满时,将它的内容写入联机重做日志文件。 重做日志缓冲区的

6、大小是由L O G _ B U F F E R初始化参数决定,以字节为单位。 所有服务进程(SERVER PROCESS)将重作记录写入重作日志 缓冲 在事务提交时由 LGWR写入日志文件,写 日 志 文 件,L G W R执行写入操作的条件是: 发生提交(commit) 重做日志缓冲区满度达到三分之一或3秒 在DBW0 将数据库缓冲区高速缓存中修改的块写入数据文件以前 写满1M 因此,太大的redo log buffer是没有意义的,因为真正用于生产的时候,很少有3秒内没有提交事务的应用,而且,每到1M就会写redo log file,所以,大多数情况下,超过3M的redo log buff

7、er几乎就浪费了。,重做日志缓冲区的查询,在初始化参数文件中查找log_buffer参数 查询数据字典v$parameter sqlselect name,value from v$parameter where name like %buffer; 使用show命令查询 sqlshow parameter log_buffer,Java池,Oracle8i引入的一项新特性(从8.1.5版本后开始出现的),用于支持数据库中java的运行,负责容纳与会话有关的Java代码,以及要由Java虚拟机(JVM)用到的一些数据。 大小由初始化参数文件中的java_pool_size指定,大缓冲池(Lar

8、ge pool),这个内存结构最早是在Oracle 8.0引入的,其大小由LARGE_POOL_SIZE决定,在以下情况使用: 使用MTS配置时,因为要在SGA中分配UGA来保持用户的会话,就是用Large_pool来保持这个会话内存 在执行并行处理语句(如并行查询)的时候,要分配进程间消息缓冲区的内存,就是用这个内存结构来协调并行处理。 使用RMAN做备份的时候,要使用Large_pool这个内存结构来做磁盘I/O缓存器。,程序全局区 ( PGA ),PGA,服务进程,程序全局区(PGA) 是一块内存区域,它包含一个服务进程或后台进程的数据和控制信息。PGA 又称为进程全局区( proces

9、s global area),即一个进程独占的区域,在进程创建时分配,进程终止时释放,其他进程不能访问。,6.2 Oracle9i进程管理,6.2.1 Oracle服务器 6.2.2 服务进程 6.2.3 后台进程,6.2.1 Oracle 服务器,Oracle服务器是一种对象关系数据库管理系统,由Oracle实例和Oracle数据库两部分组成。SGA和后台进程合称为一个Oracle实例,服务器,应用/网络服务器,用户,6.2.2 服务进程,服务器进程处理与应用程序相连的用户进程的请求,它与用户进程相通讯,为相连的用户进程的Oracle请求服务。,连接数据库,Server process,Us

10、er process,服务器,客户,用户,服务进程的特点,在ORACLE SERVER所在的机器上运行 在专用服务配置中只对一个用户进程服务 使用不同的 PGA 处理由客户产生 的请求 ,并将结果返回客户,专用服务器方式 为每个用户单独开设一个服务器进程。 不设置参数: MTS_SERVICE MTS_DISPATCHERS MTS_SERVERS MTS_LISTERNET_ADDRESS,专用服务器进程响应用户进程过程,客户端应用程序向Oracle例程发出一个连接请求 服务器上的监听程序探测到用户请求,并生成一个专用服务进程来对用户登陆信息加以确认 用户执行查询操作 专用进程执行用户查询操

11、作中的所有源代码程序,多线程服务器方式 通过调度器为每个用户进程分配服务器进程。,MTS相关的参数涵义,MTS_SERVICE: 服务器名,缺省值为DB_NAME MTS_DISPATCHERS: 调度器个数 MTS_SERVERS: 可以启动的服务器进程的个数 MTS_LISTERNET_ADDRESS: SQL*NET监听器地址 MTS_MAX_SERVERS: 服务器进程的最大数,6.2.3 后台进程,为了优化性能并协调多个用户,服务器进程在执行用户请求的过程中,将调用后台进程实现对数据库的操作。大部分后台进程在实例启动时自动建立。,必须的后台进程 DBWn PMON CKPT LGWR

12、 SMON 可选的后台进程 ARCn LMDn QMNn CJQ0 LMON RECO Dnnn LMS Snnn LCKn Pnnn,后台进程,数据库写入进程DBWR,服务器进程在数据缓冲区中记录回退和数据块的更改。数据库写入程序(DBWn) 将数据缓冲区中所有修改过的缓冲块数据写到数据文件中,它确保有足够数量的空闲缓冲区在数据缓冲区中可用。该进程在启动实例时自动启动。,DBWn延迟写入事件,灰数据缓冲区的数量达到阈值。 当进行扫描而无法找到任何空闲缓冲区时 DBWR 后台进程发生超时(大约每3秒) 发生检查点,日志写入进程LGWR,当运行DML或DDL语句时,服务器进程首先要将事务变化记载

13、到重做日志缓冲区,然后才会将数据写入到数据缓冲区,并且重做日志缓冲区的内容将来会被写入到联机重做日志文件中,以避免系统出现意外时所带来的数据损失。将重做日志缓冲区的重做日志条目写入到联机重做日志文件的过程由后台进程LGWR来完成的。,注意: 直到Oracle在LGWR完成将重做信息从重做缓冲区刷新到联机重做日志文件之后, Oracle才认为一个事务已完成。在LGWR成功地将重做日志项写入联机重做文件时(并不是改变数据文件中的数据时),将一个成功码返回给服务器进程。,写日志文件,当提交事务处理时( Commit ) 当重做日志缓冲区的三分之一已满时 当重做日志缓冲区中记录了超过1 MB 的更改时

14、 在DBWR将数据库缓冲区高速缓存中修改的块写入数据文件以前 发生LGWR超时(3秒),检查点进程CKPT,检查点操作是一个事件,当发生该事件时,CKPT进程会将脏缓存块写入数据文件的任务交给DBWR进程完成,并且会修改控制文件和数据文件头部(如将检查点时刻的scn值写入到控制文件和数据文件头部),这样达到了同步数据库的所有数据文件、控制文件和联机重做日志文件的目的,同时表示该进程已成功完成。,检查点发生的条件,当数据库管理员手动请求时。 即使用SQL 命令: ALTER SYSTEM CHECKPOINT 当达到初始化参数LOG_CHECKPOINT_INTERVAL、LOG_CHECKPO

15、INT_TIMEOUT 和FAST_START_IO_TARGET 设置时 每次日志切换时(Log Switch) 当LGWR停止向一个联机重做日志文件组写入并开始向另一个联机重做日志组写入时,就发生了日志切换。 当已通过正常事务处理或者立即选项关闭例程时(normal, transactional, immediate ),进程监视进程PMON,进程监视器进程PMON进程一方面监视着用户进程的执行情况,另一方面在用户进程断开或出现失败时还负责清除服务器进程所占用的资源。,当进程失败后,PMON通过下面的方法进行清理: 回退用户的当前事务处理 释放当前保留的所有表锁或行锁 释放用户当前保留的其

16、它资源,系统监视器进程SMON,如果Oracle实例失败,则SGA中尚未写入磁盘的所有信息都会丢失。 所有已经执行commit的事务但还未写入数据文件的事务中的数据是否会丢失呢? 那些因为某些原因(例如出现检查点时)使得事务还未commit就被写入数据文件的数据是否会回滚呢? 这一切问题都由SMON进程为我们解决。,实例恢复,在实例重新启动打开数据库之前,Oracle的SMON进程会自动执行实例恢复,即执行这两个时间点之间的事务操作(重做上一个时间点之后的所有已commit的事务、回滚没有commit的事务),并同步所有数据文件、控制文件和联机重做日志文件,然后才会打开数据库。该过程被称为实例

17、恢复。,当启动Oracle Server时,后台进程SMON总是会检查控制文件、数据文件以及联机重做日志文件的一致性: 如果数据文件、控制文件、联机重做日志文件的当前scn值完全一致,则系统会直接打开所有数据文件和联机重做日志文件。 如果控制文件和数据文件的当前scn值完全一致匹配,并小于联机重做日志文件的当前scn值,则需要进行实例恢复(例如shutdown abort)。 如果控制文件和数据文件的当前scn值不匹配,则表示数据文件或控制文件存在损坏,此时就需要进行介质恢复,以恢复损坏的物理文件。,此外,Smon也执行一些空间维护功能: 它回收临时段,将它们作为数据文件中的空闲空间返回。 它

18、联合或合并数据文件中空闲空间的邻近区域,归档进程ARCH,ARCH进程在每次日志切换时启动已满日志组的备份或归档。在日志能够重新使用之前,它将自动将联机重做日志归档,以便对数据库做的所有更改得以保留。因为对数据库所做的更改记录在联机重做日志文件中,所以DBA能够使用数据文件的物理备份和归档的联机重做日志文件来恢复数据库到故障发生点,而不会由于任何单个出错点(包括磁盘的丢失)而丢失任何已提交数据。,Oracle 9i可以有10个ARCH进程,分别为ARC0、ARC1ARC9,通称为ARCn。只要当前的ARCH进程数不足以处理工作负载,LGWR进程就启动新的ARCH进程。ARCn进程生效的条件是数

19、据库在archivelog模式并且启动自动存档 (参数log_archive_start=true)。,RECO,分布式数据库恢复 恢复两阶段提交时由于链路问题处于准 备提交阶段的事务,LCKn, LMON, LMD0, GMS,LMON, LMD0 在MPP 或 CLUSTER环境下管理分布式锁(DLM) LCKn 在CLUSTER环境下保证实例之间的数据缓冲、库缓冲区,字典缓冲的一致性 GMS ( Group Membership Service) 检测接点的活动性,NT上如何找到运行的后台进程? SQL select * from v$bgprocess where paddr 00;

20、PADDR NAME DESCRIPTION ERROR - - - - 7A1D06BC PMON process cleanup 0 7A1D0A7C DBW0 db writer process 0 0 7A1D24BC ARC0 Archival Process 0 0 7A1D287C ARC1 Archival Process 1 0 7A1D0E3C LGWR Redo etc. 0 7A1D11FC CKPT checkpoint 0 7A1D15BC SMON System Monitor Process 0 7A1D197C RECO distributed recovery 0 8 rows selected SQL,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1