Oracle数据库启动时,会启动多个Oracle后台进程,后台进程是用于执行特定任务的可执行代码块,在系统启动后,异步地为所有数据库用户执行不同的任务。通过查询数据字典v$bgprocess,可以了解数据库中启动的后台进程信息。
1.DBWn进程
DBWn(Database Writer,数据库写入)进程是Oracle中采用LRU(Least Recently Used,最近最少使用)算法将数据缓冲区中的数据写入数据文件的进程。
DBWn进程主要有如下几个作用:
①管理数据缓冲区,以便用户进程总能找到空闲的缓冲区。
②将所有修改后的缓冲区数据写入数据文件。
③使用LRU算法将最近使用过的块保留在内存中。
④通过延迟写来优化磁盘I/O读写。
DBWn进程工作过程如下:
①当一个用户进程产生后,服务器进程查找内存缓冲区中是否存在用户进程所需要的数据。
②如果内存中没有需要的数据,则服务器进程从数据文件中读取数据。这时,服务器进程会首先从LRU中查找是否有存放数据的空闲块。
③如果LRU中没有空闲块,则将LRU中的DIRTY数据块(指被修改但没被写入数据文件的数据)移入DIRTY LIST(弄脏表)。
④如果DIRTY LIST超长,服务器进程将会通知DBWn进程将数据写入磁盘,刷新缓冲区。
⑤当LRU中有空闲块后,服务器进程从磁盘的数据文件中读取数据并存放到数据缓冲区中。
2.LGWR进程
LGWR(Log Writer,日志写入)进程是负责管理日志缓冲区的一个后台进程,用于将日志缓冲区中的日志数据写入磁盘的日志文件中。
LGWR进程将日志信息同步地写入在线日志文件组的多个日志成员文件中,如果日志文件组中的某个成员文件被删除或者不可使用,则LGWR进程可以将日志信息写入该组的其他文件中,从而不影响数据库正常运行,但会在警告日志文件中记录错误。
3.CKPT进程(www.xing528.com)
CKPT(Check Point,检查点或检验点)进程一般在发生日志切换时自动产生,用于缩短实例恢复所需的时间。在检查点期间,CKPT进程更新控制文件与数据文件的标题,从而反映最近成功的SCN(System Change Number,系统更改号)。
在Oracle数据库中,控制检查点产生的参数有如下两种。
①log_checkpoint_timeout:用于设置检查点产生的时间间隔,默认值为1 800秒。
②log_checkpoint_interval:用于设置一个检查点需要填充的日志文件块的数目,也就是指每当产生多少个日志数据时自定产生一个检查点,默认值为0。
4.SMON进程
SMON(System Monitor,系统监控)进程用于数据库实例出现故障或系统崩溃时,通过将联机重做日志文件中的条目应用于数据文件,执行崩溃恢复。
SMON进程一般用于定期合并字典管理的表空间中的空闲空间,此外,它还用于在系统重新启动期间清理所有表空间中的临时段。
5.PMON进程
PMON(Process Monitor,进程监控)进程用于在用户进程出现故障时,执行进程恢复操作,负责清理内存存储区和释放该进程所使用的资源。
PMON进程周期性检查调度进程和服务器进程的状态,如果发现进程已死,则重新启动它。PMON进程被有规律地唤醒,检查是否需要使用,或者其他进程发现需要时,也可以调用此进程。
6.ARCn进程
ARCn(Archive Process,归档)进程用于将写满的日志文件复制到归档日志文件中,防止日志文件组中的日志信息由于日志文件组的循环使用而被覆盖。
一个Oracle数据库实例中,允许启动的ARCn进程的个数由参数log_archive_max_processes决定。
7.RECO进程
RECO(Recovery,恢复)进程存在于分布式数据库系统中,用于自动解决在分布式数据库中出现的事务故障。
当一个数据库服务器的RECO进程试图与一个远程服务器建立通信时,如果远程服务器不可用或者无法建立网络连接,则RECO进程将自动在一个时间间隔之后再次连接。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。