Oralce学习之体系结构
上篇大概的学习了Oracle的体系结构,提到了SGA中有很多的后天进程,他们都是干嘛的呢?下面自己总结下,还是吧那幅图贴出来.箭头指向那8个后台进程:
PMON (Processes Monitor):进程监视器
顾名思义,就是对Oracle中的别的进程进行监视的,你提交的sql语句半路挂掉了,他会进行回滚,就不需要你手工Rollback了。对于后台进程呢,他也会进行处理,一般重新启动那个进程就行。对于处于重要地位的,比如CKPT,他出错可是会导致数据库混乱,所以,检测到他混乱时,PMON会直接停掉instance。
SMON(System Monitor):系统监视器
有了PMON现在SMON就好理解了,他呢,更牛逼,负责的是系统级别的操作,主要负责instance recovery,还有清理临时表空间、回滚段表空间,合并空闲空间等。
LCKn:不是LCKN,上一篇最初好搞错了,人家是lock锁,最多有10个,所以n呢,你懂的。Ok,既然是锁嘛,他就是负责instance时间的封锁啦。
RECO:recovery?其实是Distributed Database Recovery,分布式数据库恢复。举个栗子:分布式嘛,某个应用需要用到多个数据库,只有在多个数据库中都提交成功了,事务才算是成功了,一损俱损,此时就需要全部回滚。这就是RECO的任务啦。
CKPT:上一篇几个字介绍过了,用于触发DBWR将数据缓冲区的数据写到磁盘。CKPT执行的越频繁,DBWR就越忙,那么批量处理的优越性就不能体现出来了。不过,如此跨小步,一旦需要恢复,只要往回倒一点就行了,有得有失,凡事有度嘛。可以通过设置Oracle的FAST_START_MTTR_TARGET参数来控制那个度。
DBWR:负责将SGA数据缓冲区的数据写到磁盘,大自然的搬运工(核心有木有)。不过他要等LGWR把日志先写好才能开始搬运。
LGWR:将日志缓冲区写到日志文件,便于日后的恢复。(核心)事关数据能不能恢复,所以他的工作很严格:
1、每隔3秒运行一次
2、任何COMMIT触发LGWR运行一次
3、DBWR要写数据到磁盘时运行一次
4、日志缓冲区满1/3或者记录满1MB时运行一次
5、联机日志文件切换也触发一次
ARCH:他是给LGWR打下手的,LGWR写日志文件到一定量的时候,他就会启动,将日志文件写到磁盘上形成归档日志文件。