在oracle数据库启动时,首先启动oracle实例,系统将自动分配sga(系统全局区)并启动多个后台进程,在系统启动后异步地为所有数据库用户执行不同的任务
通过查询字典V$bgprocess 可以了解数据库中启动大后台进程信息,其中,oracle数据实例的后台进程主要有DBWn进程,LGWR进程,SMON进程,PMON进程、ARCn进程、RECO进程、LCKn进程、Dnnn进程以及SNPn进程
1.DBWn进程
DBWn(Database Writer,数据库写入)进程,是Oracle中采用LRU(Least Recently Used,最近最少使用)算法将数据缓冲区大火数据写入数据文件大进程。
LRU(LEAST RECENITY USED),是数据缓冲区大一种管理机制,只保留最近数据,不保留旧数据
DIRTY 表示脏列或者叫“弄脏了大数据”,实际上就是指被修改但还没有被写入数据文件的数据
DBWn进程的作用主要有以下几个方面
管理数据缓冲区,以便用户进程能找到空闲的缓冲区。
将所有修改后大缓冲区数据写入数据文件
使用LRU算法将最近使用过的块保留在内存中
通过延迟写来优化磁盘I/O读写。
DBWn进程大工作流程如下,
(1)当一个用户进程产生后,服务器进程查找内存缓冲区中是否存在用户进程所需要的数据。
(2)如果内存中没有需要的数据,服务器进程就从数据文件中读取数据,此时,服务器进程会首先从LRU中查找是否有存放数据的空闲块
(3)如果LRU没有空闲块,则将LRU中的DIRTY的数据移入DIRTY LIST(弄脏表)。
(4)如果DIRTY LIST 超长,服务器进程通知DBWn进程将数据库写入磁盘,刷新缓冲区
2.LGWR (log writer,日志写入)进程
ORACLE数据库运行时,对数据库的修改操作将被记录到日志信息中,而这些日志将首先保存在日志缓冲区中。当日志信心达到一定数量时,由LGWR进程将日志数据写入日志文件中。
使用LGWR进程将缓冲区中的日志数据写入磁盘的情况主要有以下那几种
@用户进程提高事物。
@日志缓冲区已满1/3
@出现超时
@DBWn进程为检查点清楚缓冲区块
@一个实例只有一个日志写入进程
@事务被写入日志文件,并确认提交
3.SMON进程
SMON(System Monitor,系统监控)进程,用与数据库实例出现故障或系统崩溃时,通过将联机重做日志文件中大条目应用于数据文件来执行崩溃恢复,SMON进程一般用于定期合并字典管理的表空间中的空闲空间,此外,她还用与在系统重新启动期间清理所有表空间的临时段。
4.PMON进程
PMON(process monitor,进程监控)进程,用于清楚失效大用户进程,释放用户进程所用的资源。PMON 进程周期性检查条读进程和服务器进程的状态,释放用户进程所用大资源。PMON 进程周期性检查调度进程和服务器进程的状态,如果发现进程已死,则重新启动它,PMON进程被有规律地唤醒,检查是否需要使用,或者其他进程发现需要是也可以调用此进程