您当前位置: 圣才学习网首页 >> IT类 >> Oracle专题

详解Oracle的后台进程管理技术

扫码手机阅读
用圣才电子书APP或微信扫一扫,在手机上阅读本文,也可分享给你的朋友。
评论(0
   
来源:网络 作者:未知
 
  1PMON The Process Monitor进程监控器
 
  主要负责连接非正常中断后的清除工作,PMON负责释放相应的资源。
 
  PMON将回滚没有提交的工作,释放锁,释放分配给这个失败进程的Free SGA资源。除了清理失败的连接之外,PMON还负责监控所有其它的Oracle后台进程,假如有需要的话,将重起这些后台进程,比如一个 shared server或者一个dispatcher fail的话, PMON将跟进,重起另一个相应的进程。
 
  2SMON The System Moniter系统监控器
 
  主要负责其它进程不想处理的工作的进程,是数据库的一种“垃圾回收站”,主要包括:
 
  2.1、临时空间的清除;
 
  比如创建索引失败时,SMON将负责清除在创建索引过程当中分配出来的Temporary extent.
 
  2.2、崩溃恢复;
 
  2.3Coalescing free space
 
  这个是在字典管理的表空间才会有的,SMON将表空间中连续的空闲的extent,合并成一个大的free extent.这只能发生在字典管理的表空间,并且pctincrease 被设置成非零的时候。
 
  2.4Recovering transactions active against unavailable files
 
  2.5OPS中失败节点的实例恢复;
 
  在OPS中,当一个节点Fail,其它节点将打开失败节点的重做日志,对失败节点执行恢复(注意:实例恢复和崩溃恢复的区别)。
 
  2.6、清除OBJ$
 
  2.7Shrinks 回滚段;
 
  如果设置了Optimal,那么SMON将执行自动 Shrink 回滚段到Optimal 大小。
 
  2.8、脱机回滚段;
 
  举个例子,比如在切换回滚表空间的时候,由于可能之前的回滚表空间中有活动的事务,所以回滚表空间中的一些回滚段可能并不是真正的脱机,而只是标志为" Pending offline",要等到活动事务提交或回滚之后,相应的回滚段才算真正的脱机,而SMON则周期性的在后台去真正的脱机回滚段,直到回滚段真正的脱机为止。
 
  3CKPT Checkpoint Process
 
  CKPT进程并不像它的名字暗示的那样会进行一个checkpoint事件,它只是更新数据文件头。Oracle 8.0之前,CKPT是一个可选进程,之后就总是开启的了,更新数据文件头在CKPT出现之前这是LGWR的任务,但是后来随着文件数量增大,这个LGWR的附加任务变得太大而成为负担。于是就出现了CKPT,由CKPT分担着这部分任务。
 
  4DBWn Database Block Writer
 
  DBWn是一个负责将dirty blocks写到磁盘的后台进程,通常将dirty blocks写到磁盘是为了腾空更多的空闲空间(为了其它数据的读而释放缓冲区),或者advance 一个检查点事件(也就是在发生故障实例恢复时,将联机重做日志中Oracle开始读取的位置前移以节省实例恢复的时间)Log Switch 会触发一个CheckpointOracle 需要advance这个Checkpoint以至于在实例恢复时不需要这个刚被填满的online redo log,假如在重用这个日志之前,不能完成这个advance Checkpoint的操作,则我们在alert将发现"Checkpoint not Compelete"信息,并且必须等待这个事件的完成。
 
  5LGWR Log Writer
 
  LGWR负责将Redo log buffer (位于SGA中)中的内容写入到联机日志文件。
 
  下面几种情况将会触发LGWRlog buffer:
 
  5.1、每三秒;
 
  5.2、当用户commit时;
 
  5.3、当重做日志缓冲区 1/3或者包含1M的缓冲数据时。
 
  由于上面的原因,使用一个大于3M的重做日志缓冲区是不实际的——Oralce永远无法完全使用它。与DBWn必须执行分散的I/O 不同,重做日志是以顺序写入的方式写入的,这样执行大量的批写入更加有效率。
 
  6ARCn Archive Process
 
  ARCn是负责copy 已经写满的online redo log到另外一个地方。注意这里的redo logcopy不是文件级别的Copy,而是copy redo log里面的entries.这些归档日志可以用来处理Media Recovery.比如你的system01.dbf文件丢失,那么你可以利用你一周前的备份,Restore 该数据文件。
 
  然后请求数据库应用从备份开始后的所有的归档日志和在线日志文件,这样的话,该数据文件就可以“追”上数据库中的其它的数据文件,然后我们可以继续processing,而不会丢失数据。中文翻译 "catch up" that file with the reset of the datafiles in our database.中的"cacth up"翻译为"弥补",我觉得翻译成""更合适,因为这样才能更好的理解日志其实是一种数据流。
 
  实际上,备份是baseline,而日志是一种数据流,指向到系统crash的点,两者共同使用才能回到当前点,其实中文就这个很模糊,所谓恢复是两件事情,restorerecover .
 

小编工资已与此挂钩!一一分钱!求打赏↓ ↓ ↓

如果你喜欢本文章,请赐赏:

已赐赏的人
最新评论(共0条)评论一句