ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle架构之后台进程

oracle架构之后台进程

原创 Linux操作系统 作者:jerryhui 时间:2009-04-02 13:51:29 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle梳理
请登录后发表评论 登录
全部评论

注册时间:2009-03-12

  • 博文量
    18
  • 访问量
    61652