文章目录
1 概述
2 体系结构图示
3 后台进程(5 个必须启动)
-- 查询所有进程
select t.spid,
t.pid,
t.program
from v$process t
order by t.spid;
3.1 系统监控器 SMON
-- 系统监控器 SMON(system monitoring)
1. 目的:检查数据库的一致性
如有必要还会在数据库打开时启动数据库的恢复
(1) 恢复实例和事务
(2) 清理临时段,以释放空间
2. 触发条件
(1) 定期被唤醒 或 被其他事务主动唤醒
3.2 进程监控器 PMON
-- PMON(process monitoring)
1. 目的:负责在一个 Oracle 进程失败时清理资源
(1) 发现用户进程异常终止,并进行清理
(2) 向监听程序动态的注册实例
2. 触发条件
(1) 定期被唤醒 或 被其他事务主动唤醒
(2) alter system kill session;
(3) 默认 0.5 秒(1 秒 = 100 厘秒)
3.3 数据库写进程 DBWR
1. 目的:负责将更改的数据从'数据库高速缓冲区'写入'数据文件'
(1) database buffer cache -> data file
(2) 最近最少使用算法(LRU)
(3) 可配置多个,如:DBWR1 ~ DBWR9
2. 触发条件
(1) 系统中没有多余的 '缓冲区' 来存放数据
(2) 检查点进程(CKPT)触发 DBWR
3.4 日志写进程 LGWR
1. 目的:负责把日志数据写到联机日志文件
(1) 数据库中所有 dml(insert、update、delete)都会生成日志
(2) 上述日志最初保存在 Redo Log Buffer 中
(3) 在某个时刻由 LGWR 进程写入磁盘的联机日志文件中
2. 触发条件
(1) 用户提交(发出 commit 指令)
(2) 每 3 秒定时唤醒
(3) 使用的 Log Buffer 超过了配置的 1/3 时
(4) 使用的 Log Buffer 中的日志数量超过 1MB 时
(5) 由 DBWR 进程触发
3.5 检查点进程 CKPT
1. 目的:负责检查点操作
(1) 数据库状态的一致性(数据文件的内容 和 SGA 中的内容完全一致)
(2) 记录 系统变更时间 SCN(System Change Number)
2. 触发条件
(1) 日志切换(log switch)
日志切换图示:不同组之间相互切换