ORACLE有五大核心进程
1.DBWn进程:用来将buffer cache中的脏数据写入到硬盘中数据文件中,可以有多个该进程,进行同时的并发写入。
当sga中的数据缓冲区的数据块被修改后,该数据块就会被标记为脏块,当数据缓冲区的空间不足时,就会触发该进程把脏块写入到数据文件,
读取脏块时也是有lru规则,并不是将所有脏块一次写入数据文件中,当满足下列条件是会触发dbwr进程:
1)当有数据写入缓冲区,发现空间不够,就会触发,按照lru规则写入数据文件(分散写)
2)执行检查点(ckpt进程)
默认情况下,oracle只启动一个dbwr进程,dbwr0,最大不超过20个,建议不要超过系统的cpu的数量和磁盘的数量
要修改dbwr进程数量,参数db_writer_processed,默认1,不支持动态修改,重启后生效。
2.LGWr日志写入进程只有一个
当用户commit(提交事务)时触发lgwr进程
当red log buffer空间的三分之一空间被使用完时会触发lgwr进程
把脏数据写入磁盘之前,该LGWR进程将日志信息先写入到日志文件中,每隔3秒中执行这样的动作。
LGWR进程不能有多个,因为日志是顺序是写入的,不能做并行写入,否则无法做数据恢复。
3.CKPT进程
当dbwr进程写脏块到数据文件时,必须要对控制文件和数据文件进行更新,建立检查点后,oracle数据文件知道记录到了什么位置,当数据库发生崩溃,可以根据重做日志来重建崩溃前检查所有数据文件和控制文件的头部是否一致,是确保在数据缓冲区中所有修改过的数据块都被写入到数据文件中的一种机制,就是确保数据完整性的一种机制。但检查点完成后,CKPT进程负责更新数据文件和控制文件的头部信息,并保存检查点信息,以保证数据库日志文件和数据文件的同步。其原理是在数据库恢复时,只需找到CKPT保存的最后一次检查点,就可以根据它确定在日志文件中恢复数据的起始位置,重新执行之后的日志信息即可。
4.SMON进程
该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
5.PMON进程
1)监控后台进程运行状况
2)如果某些进程异常中断,PMON去释放会话资源以及占用的锁LOCK
3)更新事务表的标志以及清除事务XID的标记
4)清除异常中断会话在BUFFER CACHE占用的缓存
5)PMON也负责定期把数据库实例注册到监听器中