为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Oracle后台进程

2011-09-05 20页 pdf 215KB 31阅读

用户头像

is_082674

暂无简介

举报
Oracle后台进程 基础知识学习文档 OOrraaccllee 后后台台进进程程 深圳九鼎新创科技有限公司 2009年 12月 深圳九鼎新创科技有限公司 深圳九鼎新创科技有限公司 文档信息 文挡名称 作者 电话 邮件 Oracle后台进程 廖代毅 文档修订记录 编号 修订内容简述 修订日期 修订前版本号 1 常见后台进程的基本概念 2009-12-09 ...
Oracle后台进程
基础知识学习文档 OOrraaccllee 后后台台进进程程 深圳九鼎新创科技有限公司 2009年 12月 深圳九鼎新创科技有限公司 深圳九鼎新创科技有限公司 文档信息 文挡名称 作者 电话 邮件 Oracle后台进程 廖代毅 文档修订 编号 修订内容简述 修订日期 修订前版本号 1 常见后台进程的基本概念 2009-12-09 目录 前言...................................................................................................................................4 后台进程...........................................................................................................................5 图示...................................................................................................................................6 数据库写入进程(DBWn) ...........................................................................................7 日志写入进程(LGWR) ...............................................................................................8 检查点进程(CKPT).....................................................................................................9 系统监控进程(SMON) .............................................................................................10 进程监控进程(PMON) .............................................................................................11 恢复进程(RECO) ......................................................................................................12 作业队列进程(Job Queue Processes) .......................................................................13 归档进程(ARCn) ......................................................................................................14 队列监控进程(QMNn) .............................................................................................15 调度进程(Dnnn)........................................................................................................16 内存管理进程(MMAN) ............................................................................................17 恢复写入进程 (RVWR) ...........................................................................................18 内存管理进程 (MMON) ..........................................................................................19 其他后台进程.................................................................................................................20 深圳九鼎新创科技有限公司 前言 本文简单介绍了常见后台进程的概念及作用,有助于理解 Oracle 的体系结构。 深圳九鼎新创科技有限公司 后台进程 为了实现为多用户提供服务且保证系统性能,在一个多进程 Oracle 系统(multiprocess Oracle system)中,存在多个被称为后台进程(background process)的 Oracle 进程。 一个 Oracle 实例中可以包含多种后台进程,这些进程不一定全部出现在实例中。系统 中运行的后台进程数量众多,用户可以通过 V$BGPROCESS 视图查询关于后台进程的信 息。Oracle 实例中可能运行的后台进程有: • 数据写入进程(DBWn) • 日志写入进程(LGWR) • 检查点进程(CKPT) • 系统监控进程(SMON) • 进程监控进程(PMON) • 恢复进程(RECO) • 作业队列进程 • 归档进程(ARCn) • 队列监控进程(QMNn) • 其他后台进程 在许多操作系统中,后台进程在实例启动时能够被自动地创建。 深圳九鼎新创科技有限公司 图示 下图显示了后台进程如何与 Oracle 数据库的各部分交互,后续将讲述这些后台进程。 多进程 Oracle 实例中的后台进程 本图中间为 SGA。上部为 RECO,PMON,及 SMON 进程,其间的双向箭头表示各 进程与实例间的通信。下部左侧为 DBW0 和 LGWR 进程,这两个进程分别和数据缓存区 与重做日志缓冲区进行通信,同时还分别访问数据文件和重做日志文件。 本图中还展示了一些其他进程,例如 ARC0,需要访问脱机存储设备和控制文件;以 及 CKPT,需要访问数据文件和控制文件。 深圳九鼎新创科技有限公司 数据库写入进程(DBWn) 数据库写入进程 database writer process (DBWn),将 buffer 中的内容写入数据文件中。 DBWn 进程负责将在 buffer cache 中的那些修改的 buffer,也就是脏数据写入磁盘中。 对于大多数系统来说,1 个进程(DBW0)就足够了,但也可以通过设置初始化参数 DB_WRITER_PROCESSES,增加数据库写入进程,编号从 DBW0-DBW9 以及 DBWa-DBWj, 最多可以 20 个进程。但是前提是必须有足够多的 CPU 供这些进程使用,在一个单 CPU 的 系统中,额外地配置该进程并不能提高性能,所以需要根据 CPU 及处理器的个数决定如何 设置该参数。 当一个 buffer 在数据库的 buffer cache 中被修改了,就会被标记为脏数据(dirty)。Buffer cache 的冷端(cold buffer)是指根据 LRU(least recently used)算法选择出的,最近最少使用的 buffer。DBWn 进程将冷端的、脏的 buffer 写入磁盘,这样用户进程就可以查找冷端、干净 的 buffer 用于将新的数据块读入 cache 中。当一个 buffer 被用户进程修改(弄脏),此 buffer 就不再是 free buffer,不能用于新数据的写入。如果 free buffer 数量过少,用户进程就会找 不到足够的空间用于数据写入。而 DBWn 进程有效地管理了 buffer cache,让用户进程总是 能够获得 free buffer。 DBWn 进程总是将冷端、脏 buffer 写入磁盘,DBWn 在改善查找 free buffer 性能的同时, 也另最近频繁使用的 buffer 保留在内存中。例如,储存那些频繁访问且较小的表或索引的数 据块,可以 keep 在 cache 中,没必要反复地从磁盘中读取。由于 LRU 算法将访问频率高的 数据块保留在 buffer cache 中,所以一个 buffer 被写入磁盘中,该 buffer 所包含的数据被马 上访问的概率较小。 满足以下条件时,DBWn 进程会将脏数据缓冲区(dirty buffers)写入磁盘: • 当服务器进程扫描了一定数量的 buffer 之后,没有找到干净的可用的 buffer,它通 知 DBWn 写入。DBWn 将 buffer 写入磁盘的操作是异步的,因为在 DBWn 工作的 同时还有其他进程在执行。 • DBWn 周期性地写 buffer,从而使得 checkpoint 前移,checkpoint 是当一个实例需 要实例恢复时,应用重做日志的起始位置。这个位置是由 buffer 中最早的脏数据缓 冲区(dirty buffers)决定的。 无论那种情况,DBWn 进程都是批量(一次多数据块)地写入以提高性能。一次批量写入 的数据块的数量随操作系统的不同而改变,没有固定值。 深圳九鼎新创科技有限公司 日志写入进程(LGWR) 日志写入进程 log writer process (LGWR)负责管理日志缓冲区,将日志缓冲区写入磁盘 上的日志文件。LGWR 将从上次之后才复制到 buffer 中的重做条目写入磁盘。 日志缓冲区(redo log buffer)是一个环形的缓冲区(circular buffer)。当 LGWR 进程将日志 缓冲区的重做条目写入日志文件,服务器进程同时也将新的条目复制到日志缓冲区覆盖那些 已经写入磁盘的条目。LGWR 通常需要保证足够快地写入,即使在频繁访问 redo log 时也要 确保缓冲区有足够的空间用于写入新的条目。 LGWR 将一部分连续的 buffer 写入磁盘。LGWR 写入的内容有: • 一个用户进程提交事务的提交记录。 • Redo log buffer,以下 3 个条件,满足其中一个就写入。 • 每三秒写入一次。 • 当日志缓冲区使用了三分之一。 • 当 DBWn 进程向磁盘写入脏缓冲区,但需要写入的日志还没有写入。 注意: 在 DBWn 进程向磁盘写入脏数据之前,所有与修改数据相关的重做记录都必须被 写入磁盘,这就是先写日志原则(write-ahead protocol)。如果 DBWn 发现有一些重 做记录没有写入磁盘,会通知 LGWR 将它们写入,并等待将 LGWR 进程将重做日 志缓冲区内的相关数据写入磁盘后,才能将数据缓冲区写入磁盘。 LGWR 同步地向一个日志组的多个镜像成员写入。如果其中的一个成员文件损坏了, LGWR 继续向其他成员写入,并将错误记录到 LGWR 进程的 trace 文件和 alert log 中。如果 一个日志组的所有成员文件都损坏了,或者日志组由于未归档而暂时不可用,那么 LGWR 就无法继续工作了。 当用户执行了一句 commit 时,LGWR 将提交记录放进日志缓冲区,并且将它与事务的 重做条目一起立即写入磁盘。而相关的被修改的数据块要等待更高效的时机时才写入磁盘。 这被成为快速提交(fast commit)机制。一个事务的提交记录及相关的重做条目将通过一个原 子性(atomic)的写操作记录到磁盘上,这个单一事件决定了事务是否被成功地提交。尽管此 时被修改的数据缓冲区还没有写入磁盘,Oracle 已经能够向用户返回事务提交成功的信息。 注意: 有时,如果重做日志缓冲区内空间不足,LGWR 进程会在事务提交前就将重做日 志条目写入磁盘。这样的重做日志条目只有在相关事务提交后才能永久地存储。 当一个用户提交一个事务时,这个事务就被赋予了一个系统改变号 system change number (SCN),Oracle 将在事务的重做条目中记录此编号。SCN 是被记录在 redo log 中的, 所以恢复(recovery)操作可以在 RAC、分布式数据上同步地进行。 在数据修改操作较频繁时,LGWR 进程能够采取批量提交(group commits)技术向重做 日志文件写入数据。例如,当一个用户提交了一个事务后,LGWR 进程会将此事务的重做 条目(redo entry)写入磁盘,与此同时系统中的其他用户也可能在执行 COMMIT 语句。 但是 LGWR 进程需要在之前的写入操作完成后,才能为后续的提交事务写入重做信息。当 第一个事务的重做条目被写入磁盘后,在此期间等待提交的事物的重做条目可以被一起写入 磁盘,这比分别写入每个事务的重做条目所需的 I/O 操作要少。Oracle 通过这种办法减少 了磁盘 I/O 并提升了 LGWR 进程的性能。如果系统中的提交频率一直很高,那么 LGWR 进程每次从重做日志缓冲区向磁盘的写入数据中都包含多个提交事务的信息。 深圳九鼎新创科技有限公司 检查点进程(CKPT) 当一个 checkpoint 发生时,Oracle 必须更新所有数据文件的文件头,记录这个 checkpoint 的详细信息。这个动作是由 CKPT 进程完成的,但是 CKPT 进程并不将数据块写入磁盘, 写入的动作总是由 DBWn 进程完成的。 由企业管理器 (Enterprise Manager) 的 System_Statistics 监视器显示的 DBWR checkpoints 统计信息显示了系统中需要完成的检查点操作。 深圳九鼎新创科技有限公司 系统监控进程(SMON) 实例启动时如有需要,系统监控进程(system monitor process,SMON)将负责进行恢 复(recovery)工作。此外,SMON 还负责清除系统中不再使用的临时段(temporary segment), 以及为数据字典管理的表空间(dictionary managed tablespace)合并相邻的可用数据扩展 (extent)。在实例恢复过程中,如果由于文件读取错误或所需文件处于脱机状态而导致某些 异常终止的事务未被恢复,SMON 将在表空间或文件恢复联机状态后再次恢复这些事务。 SMON 进程定期检查自己是否被需要,系统内的其他进程发觉需要时也能够调用 SMON 进 程。 在 RAC 环境中,一个实例的 SMON 进程能够为出错的 CPU 或 实例进行实例恢复 (instance recovery)。 深圳九鼎新创科技有限公司 进程监控进程(PMON) 当一个用户进程(user process)失败后,进程监控进程(process monitor,PMON)将 对其进行恢复。PMON 进程负责清理数据缓冲区(database buffer cache)并释放用户进程使 用的资源。例如,它可以重置活动事务表(active transaction table)的状态,释放锁,将某个进 程 ID 从活动进程列表中移除。 PMON 进程会周期性地对调度器(dispatcher)和服务进程(server process)进行检查, 重新启动停止运行的进程(不包括 Oracle 有意停止的进程)。PMON 进程还负责将实例和 调度器进程的信息注册到网络监听器(network listener)。 同 SMON 一样,PMON 进程定期检查自己是否被需要,系统内的其他进程发觉需要时 也能够调用 PMON 进程。 深圳九鼎新创科技有限公司 恢复进程(RECO) 恢复进程 recoverer process (RECO)用于分布式数据库结构,自动解决分布式事务的错 误。一个节点的 RECO 进程会自动地连接到一个有疑问的分布式事务的相关其他数据库。 当 RECO 重新连接到相关的数据库服务时,它会自动地解决有疑问的事务。并从相关数据 库的活动事务表(pending transaction table)中移除和此事务有关的数据。 如果 RECO 进程无法连接到远程服务,RECO 会在一定时间间隔后尝试再次连接。但 是每次尝试连接的时间间隔会以指数级的方式增长。只有实例允许分布式事务时才会启动 RECO 进程。实例中不会限制并发的分布式事务的数量。 深圳九鼎新创科技有限公司 作业队列进程(Job Queue Processes) 一般由两类进程组成: 作业队列协调进程 coordinator job queue process (CJQn),起到对作业队列的监控作用。 执行作业的队列进程 job queue processes (Jnnn),由 CJQn 完成调度产生。 作业队列进程用于批处理,执行用户 job,可以将它们看做一个调度服务,用于调度 Oracle 实例上如 PL/SQL 语句或存储过程的 job。提供开始的时间和调度的时间间隔,作业 队列进程可以根据这个配置,自动地周期性地执行。 作业队列进程可以被动态地管理。可以允许作业队列客户端根据需要使用多个作业队列 进程,当一个作业队列进程进入空闲状态(idle)后,其使用的资源将被释放。 动态的作业队列进程可以按指定的时间间隔运行大量的作业。用户的作业是由 CJQ 进 程交给作业队列进程执行的。具体步骤如下: 1. 名为 CJQ0 的协调进程(coordinator process)定期地从系统 JOB$表中选择需要运 行的 job。被选出的作业将按照时间排序。 2. CJQ0 进程动态地产生 job 队列的 slave 进程来运行这些 job,编号从 J000-J999。 3. 作业队列进程执行一个由 CJQ 进程选出的作业。每个进程每次只能执行一个 job。 4. 当一个工作队列进程执行完一个作业后,就能够接受下一个作业。如果此时系统中 已经没有需要被调度的作业了,此进程将进入休眠状态(sleep state);此进程还会 定期地苏醒(wake up)等待分配其他作业。如果在预设的时间内没有新的作业, 此进程将终止。 初始化参数 JOB_QUEUE_PROCESSES 表示实例中可以并行执行的最大作业队列进程 数。但是,客户端不应该假设所有的作业队列进程都用于执行 job。 注意: 如果初始化参数 JOB_QUEUE_PROCESSES 被设置为 0,协调进程(CJQ )将不会被 启动。 深圳九鼎新创科技有限公司 归档进程(ARCn) 归档进程(archiver process,ARCn)在发生日志切换(log switch)时将重做日志文件 复制到指定的存储设备中。只有当数据库运行在 ARCHIVELOG 模式下,且自动归档功能被 开启时,系统才会启动 ARCn 进程。 一个 Oracle 实例中最多可以运行 10 个 ARCn 进程(ARC0 到 ARC9)。如果当前的 ARCn 进程还不能满足工作负载的需要,LGWR 进程将启动新的 ARCn 进程。Alert log 会 记录 LGWR 启动 ARCn 进程。 如果预计系统存在繁重的归档任务,例如将进行大批量数据装载,可以通过设置初始化 参数 LOG_ARCHIVE_MAX_PROCESSES 来指定多个归档进程,通过 ALTER SYSTEM 语 句可以动态地修改该参数,增加或减少归档进程的数量。然而,通常不需要去改变该参数, 该参数默认值为 1,因为当系统负载增大时,LGWR 进程会自动地启动新的 ARCn 进程。 深圳九鼎新创科技有限公司 队列监控进程(QMNn) 队列监控进程是一个可选择的进程,它提供 Oracle 工作流高级队列,用于监控信息队 列。可以配置最多 10 个监控进程。这些进程类似作业队列进程与其他 Oracle 后台进程的 区别在于,这两类进程出错不会导致整个实例出错。 深圳九鼎新创科技有限公司 调度进程(Dnnn) 调度进程 Dispatcher(Dnnn)是一个可选的 Oracle 后台进程,只存在于共享服务器环境 中。 深圳九鼎新创科技有限公司 内存管理进程(MMAN) 内存管理进程 Memory Manager(MMAN)是一个 SGA 后台进程。10g 新特性,自动共享 内存管理 Automatic Shared Memory Management(ASMM)启用时,会有这个新的后台进程。 MMAN 服务像是 SGA 内存的经纪人(SGA Memory Broker)一样,协调内存各组成部分的大 小。SGA Memory Broker 很清楚内存各组成部分的大小,和有待调整的操作。 深圳九鼎新创科技有限公司 恢复写入进程 (RVWR) Flashback Database 是 Oracle10g 的新增功能,在启动 Flashback Database 之后,它定期 将已发生变化的块写入闪回日志的日志文件中。这些日志不是由传统的 Log Writer (LGWR) 过程写入,而是由一种称作 Recovery Writer (RVWR)的新过程写入。 这是 Oracle10g 的新增进程。闪回数据库是指将数据库返回到一个早前的数据库状态, 闪回数据库特性提供了一种快速的方法,将数据库迅速地返回到早前的某个时间点,它不同 于传统的基于时间的恢复。 数据库闪回只能从以下错误中恢复: • 由于逻辑错误导致的。 • 由于用户错误导致的。 不能从介质错误中通过闪回特性恢复数据库。 闪回数据库所需的时间是与被改变的数据成正比的,而不是数据库的大小。 注意,一旦 resetlogs 之后,将不能再 flashback 至 resetlogs 之前的时间点。 深圳九鼎新创科技有限公司 内存管理进程 (MMON) 内存管理进程 memory monitor (MMON)是 10g 的新进程,它联合 AWR 新特性负责执行 多种和可管理性相关(manageability-related)的后台任务,例如: • 当某个测量值(metrics)超过了预设的限定值(threshold value)后提交警告 • 创建新的 MMON 隶属进程(MMON slave process)来进行快照(snapshot) • 捕获最近修改过的 SQL 对象的统计信息 它的 slave 进程是 M000。 深圳九鼎新创科技有限公司 深圳九鼎新创科技有限公司 其他后台进程 Oracle 数据库中还可能运行其他后台进程。包括: Memory Monitor Light (MMNL)进程负责执行轻量级的且频率较高的和可管理性相关的 后台任务,例如捕获会话历史信息,测量值计算等。它与 AWR 一起起作用,将需要的 buffer 统计信息写入磁盘。 MMAN 进程负责执行数据库系统的内部任务。 在使用了自动存储管理(Automatic Storage Management)的实例中,RBAL 进程负责协 调磁盘组间的负载平衡工作。她可以使多个实例同时访问一个 ASM 磁盘(global open)。 最终由 ORBn 进程实际执行数据扩展的负载均衡。实例中可以运行多个 ORBn 进程,分 别为 ORB0,ORB1,以此类推。 当数据库实例使用 ASM 磁盘组时,还要启动 OSMB 进程。此进程负责和 ASM 实例 (Automatic Storage Management instance)通信。 LMS(Global Cache Service)进程,在 RAC 环境中存在,该进程管理资源,并提供实例 资源交互控制。 Change Tracking Writer (CTWR)进程,是 10g 中的新进程,用于对最近的改变的块进行 跟踪,让 RMAN 可以更快地进行增量备份。 前言 后台进程 图示 数据库写入进程(DBWn) 日志写入进程(LGWR) 检查点进程(CKPT) 系统监控进程(SMON) 进程监控进程(PMON) 恢复进程(RECO) 作业队列进程(Job Queue Processes) 归档进程(ARCn) 队列监控进程(QMNn) 调度进程(Dnnn) 内存管理进程(MMAN) 恢复写入进程 (RVWR) 内存管理进程 (MMON) 其他后台进程
/
本文档为【Oracle后台进程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索