1,SMON(System Monitor)
执行例程恢复
(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 进程会开始工作:
4,LGWR(Log Writer)
LGWR 用于将重做日志缓冲区所记载的全部内容写入到重做日志。当执行DML 或DDL 语句时,服务器进程首先将事务变化写到重做日志缓冲区,然后才会修改高速缓存。注意,Oracle 总是“先日志后修改”(先记载变化后修改数据)。因此,在将脏缓冲区数据写入到数据文件之前,Oracle 首先将事务变化写入到重做日志。也就是说,在DBWR 工作之前,LGWR 首先将事务变化写入到重做日志。
在以下情况中LGWR 进程会开始工作:
5,CKPT(Checkpoint Process)
CKPT 用于发出检查点,并且检查点会同步数据库的数据文件、控制文件和重做日志。当发出检查点时,后台进程CKPT 会将检查点时刻的SCN(System Change Number)写入到控制文件和数据文件头部,同时会促使后台进程DBWR 将所有脏缓冲区数据写入到数据文件中。
当发出检查点时,不仅后台进程CKPT 和DBWR 要开始工作,而且LGWR 也会将重做日志缓冲区写入到重做日志,从而确保了数据文件、控制文件和重做日志的一致性。
在以下情况中CKPT 会开始工作:
6,ARCH(Archive Process)
ARCH 用于将重做日志的事务变化复制到归档日志中。
在ARCHIVELOG 模式下才会被启动。
默认只有两个进程(ARC0、ARC1),通过初始化参数log_archive_max_processes 可以最多定义10个归档进程(ARC0~ARC9)。
在ARCHIVELOG 模式下,当进行日志切换时会自动生成归档日志。
通过查询动态性能视图v$bgprocess ,可以显示所有后台进程信息。
SQL> select name, description from v$bgprocess where paddr<>'00';
NAME DESCRIPTION
----- ----------------------------------------------------------------
PMON process cleanup
PSP0 process spawner 0
MMAN Memory Manager
DBW0 db writer process 0
LGWR Redo etc.
CKPT checkpoint
SMON System Monitor Process
RECO distributed recovery
CJQ0 Job Queue Coordinator
QMNC AQ Coordinator
MMON Manageability Monitor Process
MMNL Manageability Monitor Process 2
已选择12行。