首页 > Linux操作系统 > Linux操作系统 > ORACLE后台进程总结
ORACLE后台进程是ORACLE服务器隐含执行的进程。当启动例程时,除了分配SGA外,还要启动后台进程。所以说例程由SGA和后台进程这两部分组成。而关闭例程时,除了释放SGA所占用的内存外,还要释放后台进程还占用的CPU和内存资源。
后台进程主要有DBWR(DATABASE WRITER),LGWR(LOG WRITER),SMON(SYSTEM MONITOR),PMON(PROCESS MONITOR),CKPT(CHECKPOINT PROCESS),
ARCH(ARCHIVE PROCESS)。
下面是各个后台进程的主要作用和触发时刻。
SMON:SMON主要是恢复例程。因为数据库在运行过程中可能出现例程失败(比如断电,内存故障,例程例外等),在这种情况下SGA的信息还没有写到磁盘(指写到重做日志和
数据文件),那么在重新打开数据库的时候,SMON就会执行下面的例程恢复过程:
(1) 利用REDO,因为所有COMMIT的东西都已经写到重做日志了,这样就可以重新利用重做日志的信息来恢复事务数据。
(2) 打开数据库,包括COMMIT和未COMMIT的数据。
(3) 利用UNDO,因所有未COMMIT的事务都会记录到UNDO段,这样打开数据库后就会自动利用UNDO段来取消未COMMIT事务。
PMON:PMON主要是监视服务器进程的运作,在服务器进程出现意外失败时清除该进程,执行以下操作:
(1) 回退未提交事务
(2) 释放该进程所占有的表锁和行锁。
(3) 释放用户所占用的其他资源。
LGWR:将重做日志缓冲区的信息写到重做日志。当执行DML或DDL操作时,服务器进程先把事务变化记录到重做日志缓冲区,再记录到数据缓冲区,然后在DBWR将脏数据缓冲区的信息写到数据文件之前,也是LGWR先执行将重做日志缓冲区的信息写到重做日志。也就是先日志后修改。
LGWR工作时刻:
(1) 提交事务时
(2) 每隔3秒
(3) 重做日志缓冲区的信息超过1M
(4) 重做日志区已有1/3填满。
(5) 在DBWR将脏数据缓冲区的信息写到数据文件前。
DBWR:将数据高速缓冲脏缓冲区的信息写到数据文件。执行DML或DDL操作时,服务器进程会将事务变化记录到数据缓冲区,并将这个缓冲区标识为脏缓冲区(当然记录到数据缓冲区前先把事务变化记录到重做日志缓冲区),然后DBWR在一定时刻把脏数据缓冲区的信息写到数据文件。
DBWR开始工作时刻:
(1) 发出检查点(由CKPT发出)
(2) 服务器进程找不到空的数据缓冲区时
(3) 删除或截断表时
(4) 使表空间脱机时(offline)(alter tablespace ….. offline normal)
(5) 开始备份表空间时。(alter tablespace …. Begin backup)
CKPT :发出检查点,同时数据文件、重做日志和控制文件(使SCN一致).当CKPT发出检查点时,服务器进程会将这一时刻的SCN的值写到控制文件和数据文件头部,同时触发DBWR将数据脏缓冲区的信息写到数据文件。
CKPT工作时刻:
(1) 手动发出检查点(ALTER SYSTEM CHECKPOINT)
(2) 切换日志组时(ALTER DATABASE SWITCH LOGFILE)
(3) 关闭例程时(不包括SHUTDOWN ABORT)
(4) 由参数fast_start_mttr_target强制发出。
ARCH:将重做日志的事务变化复制到归档日志中,只有在ARCHIVELOG模式中该进程才会启动。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13387766/viewspace-489084/ ,如需转载,请注明出处,否则将追究法律责任。