Oracle基础架构整理二之后台进程
后台进程是指由Oracle服务器隐含执行的进程。当启动例程时,Oracle不仅会分配SGA,还会自动后台进程;当关闭例程时,Oracle不仅会释放SGA所占用的内存空间,而且还会释放后台进程所占用的CPU和内存资源。Oracle提供了许多后台进程。
1.SMON(System Monitor)
用于执行例程恢复,假定在数据库运行过程中出现例程失败(断电,内存故障,后台进程例外等)。此时,SGA信息尚未被完全写入到磁盘(数据文件,重做日志)。当重新打开数据库时,后台进程SMON会按照以下步骤自动执行例程恢复:
(1)REDO:重新应用那些被记载到重做日志但尚未写入数据文件的数据。因为所有被提交的事务已经记载到了重做日志,所以可以确保恢复事务数据。
(2)打开数据库。在打开数据库时,既包含了被提交的数据,也包含了未被提交的数据(加锁)。
(3)UNDO:取消未提交数据。在打开数据库之后,Oracle会自动使用UNDO段回退未提交的数据。
2.PMON(Process Monitor)
PMON用于监视服务器进程的执行,并且在服务器进程失败时清除该服务器进程。当访问Oracle Server时,Oracle会在服务器端为用户进程(应用程序对应的进程)分配服务器进程。假定用户进程因地址例外意外终止运行,PMON可以轮询检测该服务器进程,并执行以下操作:
.回退用户的当前事务
.释放服务器进程所占有的表锁和行锁。
.释放用户所占用的其他资源
3.DBWR(Database Writer)
DBWR用于将数据高速缓存的脏缓冲区数据写入到数据文件中。当执行DML操作时,服务器进程会修改缓冲区,并且将这些缓冲区标识为“脏缓冲区”,将来这些脏缓冲区数据会由后台进程DBWR写入到数据文件中。
默认情况下只有一个DBW0进程,通过设置初始化参数db_writer_processes可以定义最多10个DBWR进程(DBW0-DBW9)。在出现以下情况时,DBWR进程会开始工作。
.系统发出检查点(checkpoint)
.服务器进程不能找到空闲缓冲区
.删除或截断表
.是表空间正常脱机(Alter Table .....OFFLINE NORMAL)。
.开始表空间备份(Alter TableSpace.....BEGIN BACKUP).
4.LGWR(Log Writer)
LGWR用于将重做日志缓冲区所记载的全部内容写入到重做日志。当执行DML或DDL语句时,服务器进程首先将事务变化写到重做日志缓冲区,然后才会修改数据高速缓存。注意,Oracle总是“先日志后修改”(先记载变化后修改数据)。因此,在将脏缓冲区数据写入到数据文件之前,Oracle首先将事物变化写入到重做日志。也就是说,在DBWR工作之前,LGWR首先将事物变化写入到重做日志。
在以下情况中LGWR进程会开始工作:
提交事务(commit)
每隔三秒钟
当重做信息超过1M时
重做日志缓冲区已有1/3填满
在DBWR进程将脏缓冲区写入到数据文件之前
5.CKPT(Checkpoint Process)
CKPT用于发出检查点(Checkpoint),并且检查点会同步数据库的数据文件,控制文件和重做日志。当发出检查点时,后台进程CKPT会将检查点时刻的SCN(System Change Number)写入到控制文件和数据文件头部,同时会促使后台进程DBWR将所有脏缓冲区数据写入到数据文件中。
当发出检查点时,不仅后台进程CKPT和DBWR要开始工作,而且LGWR也会将重做日志缓冲区写入到重做日志,从而确保了数据文件,控制文件和重做日志的一致性。在以下情况中CKPT会开始工作:
日志切换
关闭例程(Shutdown Abort除外)
手工检查点操作(Alter System Checkpoint)
由初始化参数fast_start_mttr_target强制发出检查点
(6)ARCH(Archive Process)
ARCH用于将重做日志的事务变化复制到归档日志中,该后台进程只有在ARCHIVELOG 模式下才会被启动。默认情况下只会启动两个归档进程(ARC0,ARC1),通过设置初始化参数log_archive_max_processes可以最多定义10个归档进程(ARC0-ARC9)。在ARCHIVELOG模式下,当进行日志切换时会自动生成归档日志。
在Oracle服务器中,最多可以启动100个后台进程。但当启动了例程之后,后台进程SMON,PMON,CKPT,DBWR,LGWR一直处于启动状态。通过查询动态性能视图V$BGPROCESS,可以显示所有后台进程的信息。下面以显示当前例程所启动的后台进程为例说明使用V$BGPROCESS的方法。
Select name,description from v$bgprocess where paddr<>'00';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12035968/viewspace-584364/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12035968/viewspace-584364/