www.linux123.net

Linux123

当前位置: 首页 > 数据库 > oracle >

Oracle数据库后台进程详解

来源:www.linux123.net 作者:余安 时间:2018-09-25 11:56

SMON 是系统监视器(System Monitor)的缩写。如果Oracle实例失败,则在SGA中的任何没有写到磁盘中的数据都会丢失。有许多情况可能引起Oracle实例失败,例如,操作系统的崩溃就会引起Oracle实例的失败。当实例失败之后,如果重新打开该数据库,则背景进程SMON自动执行实例的复原操作。
 

DBWR 是数据库书写器(Database Write)的缩写.该服务器进程在缓冲存储区中记录所有的变化和数据,DBWR把来自数据库的缓冲存储区中的脏数据写到数据文件中,以便确保数据库缓冲存储区中有足够的空闲的缓冲存储区。脏数据就是正在使用但是没有写到数据文件中的数据。
 

LGWR 是日志书写器(Log Write)的缩写。LGWR负责把重做日志缓冲存储区中的数据写入到重做日志文件中。
 

CKPT 进程是检查点(Checkpoint)的缩写。该进程可以用来同步化数据库的文件,它可以把日志中的文件写入到数据库中。
 

PMON 是进程监视器(Process Monitor)的缩写。当取消当前的事务,或释放进程占用的锁以及释放其它资源之后,PMON进程清空那些失败的进程。

Oracle体系结构图
 

一、database write--数据写入  DBWR

作用:把SGA中被修改的数据同步到磁盘文件中。保证Buffer Cache中有足够的空闲数据块数量。

   PS:如果LGWR出现故障,DBWR不会听从CKPT命令罢工,因为Oracle在将数据缓存区数据写到磁盘前,会先进行日志缓冲区写进日志文件的操作,并耐心的等待其先完成,才会去完成这个内存刷到磁盘的动作,这就是所谓的凡事有记录。

触发条件:
1、检查点CKPT 

2、一个服务进程在设定的时间内没有找到空闲块

3、每三秒自动唤醒一次。

设置:DB_WRITER_PROCESS用来定义DBWn进程数量。(commit命令只是把记录修改写入日志文件,不是把修改后的数据写入数据文件)

 

二、log write:LGWR--日志文件写入  (劳模,很重要很忙碌的一个进程)

作用:把log buffer中的日志内容写入联机的日志文件中,释放log用户buffer空间。

触发条件:1、用户发出commit命令。(在oracle中称为快速提交机制(fast commit)):把redo log buffer中的记录写入日志文件,写入一条提交的记录

2、三秒定时唤醒。

3、日志缓冲区log buffer超过1/3,或日志数量超过1M。

4、DBWR进程触发:DBWn视图将脏数据块写入磁盘先检测他的相关redo记录是否写入联机日志文件,如果没有就通知LGWR进程。在oracle中成为提前写机制(write ahead):redo记录先于数据记录被写入磁盘

5、联机日志文件切换也将触发LGWR。

三、checkpoint:CKPT-检查点事件

作用:维护数据库一致性状态。检测点时刻数据文件与SGA中的内容一致,这不是一个单独的进程,要和前两个进程一起工作呦。DBWR写入脏数据,同时触发LGWR进程。

  CKPT更新控制文件中的检查点记录。通过设置某参数调整来控制CKPT的触发时间。参数是FAST START MTTR TARGET。

触发条件:日志切换(log switch)会触发检查点。

 

四、process monitor:PMON--维护用户进程  进程监控器

作用:1、发现用户进程异常终止,并进行清理。释放占用资源。(清理异常终止用户使用的锁)

2、向监听程序动态的注册实例。

触发条件:定时被唤醒,其他进程也会主动唤醒它。

 

五、system monitor:SMON--实例维护进程  系统监控器

作用:1、负责实例恢复,前滚(Roll Forward)恢复到实例关闭的状态,使用最后一次检查点后的日志进程重做。这时包括提交和未提交的事务。打开数据库,进行回滚(Roll Back):回滚未提交的事务。(oracle承诺commit之后数据不会丢失,现在我们可以大致的了解是如何实现这个承诺,以及在数据的安全性和数据库性能之间的平衡选择。)

2、负责清理临时段,以释放空间

触发条件:定期被唤醒或者被其他事务主动唤醒。

六、LCKn 仅适用于RAC数据库

  最多可有10个进程(LCK0,LCK1,...,LCK9),用于实例间的封锁。

七、archive:ARCH--归档操作

作用:发生日志切换时把写满的联机日志文件拷贝到归档目录中。(LGWR写日志写到需要覆盖重写的时候,触发ARCH进程去转移日志文件,复制出去形成归档日志文件,以免日志丢失)

触发条件:日志切换时被LGWR唤醒。

设置:LOG_ARCHIVE_MAX_PROCESSES可以设置oracle启动的时候ARCH的个数。

八、Distributed Database Recovery  --RECO  用于分布式数据库的恢复

   某个应用跨越多个数据库,需要都提交成功,事务才会成功,否则全部回滚。

 

# 以上是八个最核心、最重要、最有用进程,以下还列出了一些进程。

九:manageability monitor:MMON--AWR主要的进程

作用:1、收集AWR必须的统计数据,把统计数据写入磁盘。10g中保存在SYSAUX表空间中。

2、生成server--generated报警

每小时把shared pool中的统计信息写入磁盘,或者shared pool占用超过15%。 

十:manageability monitor light:MMNL:轻量级的MMON 

十一:memory manager:MMAN:自动内容管理

作用:每分钟都检查AWR性能信息,并根据这些信息来决定SGA组件最佳分布。

设置:STATISTICS_LEVEL:统计级别

SGA_TARGET:SGA总大小 

十二:job queue coordinator:CJQ0--数据库定时任务 

十三:recover writer:RVWR

作用:为flashback database提供日志记录。把数据块的前镜像写入日志。 

十四:change tarcking writer:CTWR

作用:跟踪数据块的变化,把数据块地址记录到 change_tracking file文件中。RMAN的增量备份将使用这个文件来确定那些数据块发生了变化,并进行备份。

------分隔线----------------------------
  • 收藏
  • 挑错
  • 推荐
  • 打印
栏目列表
推荐内容