oracle必须的五大进程:
SMON 系统监视进程
空间管理: 定期合并空间(老版本才有) 定期回收临时段
实例恢复: (如掉电导致实例意外终止)
恢复的方法: 先前滚==>后回滚==>释放资源
前滚 将数据库中的SQL(包括提交的和未提交的)全部重新做一遍
回滚 将没提交的SQL句从数据库中将老的镜像取出覆盖
释放资源 将前滚和回滚中使用到的资源释放
DBWn n指的是0-9 a-j 多个写进程的区分 将脏块写盘
触发写的条件
1.产生检查点
2.脏数据缓冲区达到阀值 默认10%
3.扫描整个db buffer没有空闲 db buffer中包含脏的和未脏的 优先写脏数据列表 再写未改的
4.timeout超时 如果DBWR没事做 会被每三秒唤醒一次去巡检 写不写不一定
5.集群环境的ping请求触发多实例的数据写请求
6.表级别的truncate或drop也会触发数据写
7.修改表空间的read only
8.做表空间的offline(离线)
9.热备份 begin backup命令
PMON 进程监视器
1.清理与实例非法断开的server_procese残留的资源 非正常终止的用户进程产生的垃圾资源
2.负责重启以外死掉的调度器(网络监听中使用的)
3.将实例的信息注册到监听程序
CKPT 把新的检查点写入指定位置
1.调度数据写dbwN
2.将新检查点写数据文件头
3.将新检查点写控制文件中的数据文件头的记录
LGWR 只有一个进程 不会向数据写进程那么多 因为写要求有顺序 将redo log buffer里的条目 写到redo文件
触发写的条件
1.commit
2.redo log buffer 1/3满
3.redo log buffer 日志缓冲区达到1M
4.写日志优先(任何一次数据写之前)
当更新数据量很多时 日志量很少(就是一update) 数据量却很多 所以采用写日志优先
5.3秒写一次
server process简述【以客户端执行一条sql为例说明】:
1、sql语句通过网络到达实例、server process 接收sql语句
2、server process 去shard pool找sql和执行计划 若没有 解析sql
3、server process 根据执行计划去buffer cache(缓存dbf的数据)找相关的数据,如没有才到dbf中取出数据放到buffer chache 再返给用户
4、若需要修改数据,server process 读出数据到buffer cache中 内存中修改数据 修改完返给用户
server process始终为用户服务,故:server process处理的快慢直接影响用户体验的快慢
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8568259/viewspace-1412478/
,如需转载,请注明出处,否则将追究法律责任。