Oracle第六节-Oracle后台进程介绍

Oracle后台进程介绍

Oracle启动之后,就能看到Oracle的进程情况,一般见到的有如下进程:
  1. DBWR 数据库写入进程
  2. LGWR 日志写入进程
  3. PMON 进程监视进程
  4. SMON 系统监视进程
  5. CKPT 检查点进程
  6. ARCHn 归档进程
  7. RECO 恢复进程
  8. Dnnn 调度进程
  9. Snnn 共享服务器进程
  10. LMS Oracle RAC 锁管理服务 
  11. QMNn 队列管理进程
现对上述进程的作用进行一一说明:
1、DBWR 数据库写入进程
DBWR The Database Writer Process 进程负责将脏数据块从数据缓存(database block buffer)写回磁盘.当一个事务修改数据块中的数据以后,不需要立即将数据块写回磁盘。由于Oracle所采用的先进机制,修改后的数据可以不用立即写回,并且即使出现故障也不会丢失。因此,DBWR可以采取更有效写回方式,而不用再事务提交完之后立即写回。DBWR通常定时写回数据,除非数据缓冲区需要清空或已满。
数据写回时,采用了最近最少使用原则(least-recently-used).对于支持异步I/O的系统,只需使用一个BWR进程即可,对不支持异步IO的可以通过增加DBWR的个数来提升效率。
2LGWR 日志写入进程
LGWR (the log writer process)负责将日志缓冲区中的数据写入重做日志。由于COMMIT操作依赖于LGWR写回日志(commit操作触发LGWR将日志缓冲区数据写入UNDO日志),因此系统性能容易受到LGWR的影响。
3、PMON 进程监视进程
PMON(the Process Monitor Process)进程负责监视数据库的处理情况,并负责清除死掉的进程。PMON还负责重启失败的调度进程(dispatcher process)。
专有服务器体系模式下,用户进程和服务器进程是一对一的关系,如果某个会话发生异常,PMON会销毁对应的服务器进程,回滚未提交的事务,并回收会话专有的PGA内存区域。
4、SMON 系统监视进程
SMON(the System Monitor Process)进程负责在实例启动时恢复实例,包括清除临时段以及恢复因系统崩溃而中断的事物。
SMON还可以通过合并空闲分区的方式清除数据库中的碎片。
也有解释说SMON( System Monitor安装和打开数据库,实例恢复也是由此进程完成的。
SMON进程负责在实例启动时恢复实例,包括清除临时段以及恢复因系统崩溃而中断的事物。 
SMON还可以通过合并空闲分区的方式清除数据库中的碎片 
    主要负责其它进程不想处理的工作的进程,是数据库的一种“垃圾回收站”,主要包括: 
2.1)临时空间的清除; 
    比如创建索引失败时,SMON将负责清除在创建索引过程当中分配出来的Temporary extent. 
2.2)崩溃恢复; 
2.3)Coalescing free space; 
    这个是在字典管理的表空间才会有的,SMON将表空间中连续的空闲的extent,合并成一个大的free extent.这只能发生在字典管理的表空间, 
    并且pctincrease 被设置成非零的时候。   
2.4)Recovering transactions active against unavailable files; 
2.5)OPS中失败节点的实例恢复;在OPS中,当一个节点Fail,其它节点将打开失败节点的重做日志,对失败节点执行恢复(注意:实例恢复和崩溃恢复的区别)。 
2.6)清除OBJ$; 
2.7)Shrinks 回滚段;如果设置了Optimal,那么SMON将执行自动 Shrink 回滚段到Optimal 大小。 
2.8)脱机 回滚段; 
    举个例子,比如在切换回滚表空间的时候,由于可能之前的回滚表空间中有活动的事务,所以回滚表空间中的一些回滚段可能并不是真正的脱机,而只是标志为" Pending offline", 
    要等到活动事务提交或回滚之后,相应的回滚段才算真正的脱机,而SMON则周期性的在后台去真正的脱机回滚段,直到回滚段真正的脱机为止。 
5、CKPT 检查点进程
CKPT(the Checkpoint Process)进程负责向DBWR进程发送信号,要求执行一次检查点,并更新数据库的所有数据和控制文件。
CheckPoint(检查点),是指有DBWR进程将所有修改过的数据缓冲区写回数据文件。CKPT是可选的,如果没有CKPT进程,则有LGWR代行这些任务。
CKPT负责发起检查点信号,手动设置检查点的语法:
SQL>alter system checkpoint;
检查点可强制DBWn写入脏缓冲区,当数据库崩溃后,由于大量脏缓冲区未写入数据文件,在重新启动时,需要由SMON进行实例恢复,实例恢复需要提取和应用重做日志记录,提取的位置就是从上次检查点发起的位置开始的(检查点之前的数据已经被强制写入到数据文件中去了),这个位置称为RBA(redo byte address),CKPT会不断将这个位置更新到控制文件中去(以确定实例恢复需要从哪儿开始提取日志记录)。
6、ARCHn 归档进程
ARCH(the Archiver Process )负责将再现重做日志复制到归档存储器。 归档进程,这个进程是可选的,如果数据库配置为归档模式,这个进程就是必须的。进档RDBMS运行在ARCHIVELOG模式时ARCH才有效,如果系统没有运行在ARCHIVELOG模式,则系统失效后可能无法恢复。最后让系统运行在ARCHIVELOG模式下,此时归档进程可能有多个。
所谓归档,就是将重做日志文件永久保存(生产库一般都会配置为归档模式)到归档日志文件中。归档日志文件和重做日志文件作用是一样的,只不过重做日志文件会不断被重写,而归档日志文件则保留了关于数据更改的完整的历史记录。
SQL>archive log list //查看是否为归档模式
可以再数据库Mount 模式下开启归档
SQL>alter database archivelog; //开启
SQL>alter database noarchivelog;//关闭
7、RECO 恢复进程
RECO (the Recovery Process)进程用于清除分布式数据库中的未决(pending)事务,它负责分布式事务中本地部分的提交与回滚
8、Dnnn 调度进程
如果选择了Multithreaded Server选项,则对使用的每个通信协议至少有一个调度进程。调度进程(the Dispatcher Process,Dnnn)负责将用户进程的请求转发到一个可用的共享服务器进程,并负责将用户进程的请求转发到一个可用的共享服务器进程,并负责回送响应消息。
9、Snnn 共享服务器进程
当使用共享服务器配置或MTS时,会用到共享服务器进程(the Shared Servers Process ,Snnn).这些进程如同专用服务器进程(Dedicated Server Process),但可以被多个用户共享。
10、LMS Oracle RAC 锁管理服务 
使用RAC时,该服务用语管理集群中不同节点间的锁.
11、QMNn 队列管理进程
使用高级队列选项时(advanced queueing option),队列管理进程 (Queue Manager Process )用于管理作业队列,队列数目可以
达到10个,QMN0——QMN9
12、MMON(Manageability Monitor)
  数据库的自我监视和自我调整的支持进程。实例在运行中,会收集大量有关实例活动和性能的统计数据,这些数据会收集到SGA中,MMON定期从SGA中捕获这些统计数据,并将其写入到数据字典中,便于后续对这些快照进行分析。(默认情况,MMON每隔一个小时收集一次快照)
进程之间的协助
Ckpt、lgwr、dbwn之间的协作。
Ckpt:每隔3秒或更频繁写一次,写入控制文件,记录DBWN从SGA写入磁盘的块的位置。
LGWR:每3秒,1/3满buffer,commit,DBWN写之前。将buffer中数据写入物理文件。
DBWN:将SGA中脏块写入datafile。

你可能感兴趣的:(oracle,数据库,服务器)