共计 1449 个字符,预计需要花费 4 分钟才能阅读完成。
一、SMON:系统监督进程
1. 主要是已经提交的数据但是还没有进行写入数据文件给断电了,重启的时候,smon 就会进行恢复
a. 执行前滚,将已经写入重做日志文件但是还没有写入到数据文件中的数据(使用 scn 号码来识别提交记录的)
b. 打开数据库
c. 回滚没有提交的事务
2. 还可以进行磁盘空间维护工作
a. 回收或者合并数据文件中相连的空闲区
b. 释放临时段
二、PMON:进程监督进程
1. 当某个进程崩溃,PMON 将负责进行如下的清理工作
a. 回滚用户当前事务
b. 释放用户所加的所有表一级和行一级的锁
c. 释放用户所有的其他资源等
三、CKPT:校验 (检查) 点和检验点进程
1. 提高系统效率和数据库一致性,引入了校验点的事件,CKPT 是在 DBWR 将高速缓冲中的数据写入到数据文件上的时
候产生的,理论上说它是不需要的
可以通过 redo log 和 scn 保证了完全恢复,引入它是为了提高效率,因为所有的校验点为止的变化都已经写入到数
据文件中了,在恢复的时候
校验点之前的重做日志就不在需要了,这样实例恢复就加快了,CKPT 会将校验点写入到所有相关的数据文件的文件头中,还要将校验点号码、重做日志序列号、归档日志名称和最低、最高 scn 号都会写入控制文件中,由于 ckpt 会产生大量的 IO 操作,因此不能频繁的产生校验点,最好在 20 分钟以上
四、ARCn: 归档日志进程
1. 当一组重做日志文件写满后,会写另外一组,当最后一组写满后会在写第一组,叫做日志切换
2. 如果没有开归档,那么覆盖后就无法进行恢复了
3. 如果开了归档,那么就会使用 arch 进程进行写入归档日志文件中,Oracle 会确保在一组重做日志的归档操作完成
之前不会重新使用该组日志
五、DBWn: 数据库写进程
1.11g 之前只可以有 0~9,10 个进程,11g 之后可以有 36 个,0~9 和 a~z,通过 db_writer_processes 来设置个数
的,如果启动的时候没有说明个数
那么是由 cpu 的个数来决定的该参数的
2. 当以下情况发生时,DBWR 会将高速缓冲区中的数据写入到数据文件中
a. 当脏缓冲区的数量超过了所设定的限额
b. 所设定的时间间隔已到
c. 有进程需要高速缓冲区,但是没有空闲的高速缓冲区空间时候
d. 校验(检查点) 发生时
e. 某个表被删除或者截断(truncate,drop)
f. 某个表空间被设置为只读
g. 表空间进行联机备份时
h. 表空间被设置为脱机时
六、LGWR:重做日志写进程
1. 将重做日志缓冲区的记录顺序写入到重做日志文件中,这里注意它是顺序写入的,因此 IO 相对要小
2. commit 语句怎样工作,这里使用了快速提交技术
a. 服务器进程把提交的记录连同产生的 scn 号码一起写入重做日志缓冲区中
b.LGWR 将重做日志缓冲区中的记录写入在重做日志文件中,这样就可以保证恢复了
c.oracle 通知用户(进程) 提交已经完成
e. 服务器进程将修改数据库高速缓冲区中相关数据的状态并释放资源和打开锁(这个时候可能这些数据并没有写入
到数据文件中, 他们标记为脏数据,之后由 DBWR 写入数据文件)
3. 以下情况 LGWR 会写入重做日志文件
a. 事务提交
b. 重做日志缓冲区中的记录超过了缓冲区容量的 1 /3
c.DBWR 将数据库高速缓冲区中的数据块写入到数据文件之前
d. 每 3 秒
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-01/150045.htm