Oracle DBA笔记(三)--Oracle主要后台进程

本文详细介绍了Oracle数据库中的关键后台进程,包括LGWR如何将重做日志缓冲区内容写入日志文件,DBWR如何管理数据库缓冲区的脏数据,SMON在系统崩溃后的恢复工作,PMON如何处理进程崩溃的清理任务,以及Checkpoint进程的角色和触发条件。这些进程确保了Oracle数据库的稳定性和数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.重做日志写进程(LGWR)

LGWR负责将redo log buffer 的记录顺序的写到redo log files中,减少I/O量。
以下情况需要将redo log buffers(内存)的记录顺序的写入到redo log(外存)中

  • 某个事物被提交时;
  • 当redo log buffers中变化的记录超过1MB时;
  • 当redo log buffers中所存的记录超过缓冲区容量的1/3;
  • 在DBWR将数据库高速缓冲区中修改过的数据块写到数据文件之前;
  • 每3秒钟;

2.数据库写进程(DBWR/DBWn)

负责将DB buffers cache上的脏缓冲区的数据写到数据文件上。并不是已出现脏缓冲区DBWR就写入数据,而是积累了足够多的数据一次性写一大批内存数据到数据文件上。
Oracle允许在一个实例上最多启动10个数据库写进程。DBW0-DBW9
以下情况需要将DB buffers cache(内存)的数据写到数据文件(外存)中:

  • 当脏缓冲区的数量超过了设定限额;
  • 所设定是时间间隔已到;
  • 当有进程需要DB buffers cache却找不到空闲的缓冲区时;
  • 当校验点发生时;
  • 当某个表被删除(drop)或被截断(truncate)时;
  • 当某个表空间被设置为只读(read only)状态时;
  • 当使用类似于ALTER TABLESPACE users BEGIN BACKUP的命令对某个表空间进行联机备份时;
  • 当某个临时表空间被设置为只脱机状态(offline)或正常状态(normal)时;

3.系统监督进程(SMON)

系统崩溃时,SGA任何没有来得及写到磁盘中的信息都会丢失,如有些已经提交的数据还没有真正写到数据文件中,这种情况下,数据库重启时,SMON会自动执行Oracle实例的恢复工作,步骤如下:

  • 执行前滚(roll forward),将已经写到redo log中但还没写到数据文件中的提交数据写到数据文件中(用SCN号码识别提交记录)
  • 在前滚完成后立即打开数据库,此时用户就可以登录并使用数据库。
  • 回滚没有提交的事务;

除此之外,SMON还要执行如下磁盘维护工作:

  • 回收或组合数据文件中相连的空闲区;
  • 释放临时段(执行sql时用作排序的磁盘区),将它们还给数据文件作为空闲区使用;

4.进程监督进程(PMON)

当某个进程崩溃时(如在没有正常退出oracle的情况下重启了PC),PMON将负责清理工作,如下:

  • 回滚用户当前事务;
  • 释放用户所加的所有表一级和行一级的锁;
  • 释放用户所有的其他资源等;

5.校验点(checkpoint)和校验点进程

校验点事件:当DBWR进程把已经改变了的DB buffers cache中的数据(包括提交的和没提交的数据)写到数据文件上时产生。
将校验点号码写入所有相关的数据文件的文件头中;
将校验点号码,重做日志序列号,归档日志名称和SCN号都写入控制文件中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值