我记得刚开始预备考ocp时看到体系结构的书里画了一堆图,图上写些什么dbwn,smon,当时我的头就大了,当时我使用Oracle已经有一段时间了,但是从来没有系统学过,也不知道这些东西是什么,现在慢慢搞清楚了他们之间的关系,
才觉得对oracle内部构造有了一定的了解(当然是很肤浅的了解,嘻嘻)
--------------------------------------------------------------------------------------
用户进程(User Process)
是一个需要与Oracle Server交互的程序
运行于客户端
当用户运行某个工具或应用程序(如SQL*Plus)时创建,当用户退出上述程序时结束
用户进程向Oracle Server发出调用,但它并不与Oracle Server直接交互,而是通过Server Process与Oracle Server进行交互。
--------------------------------------------------------------------------------------
服务进程(Server Process)
是一个直接与Oracle Server交互的程序。
与Oracle Server运行于同一台机器上
使用PGA执行User Process发出的调用,并向User Process返回结果状态和结果信息。
--------------------------------------------------------------------------------------
后台进程(Background Process)注:本人认为比较重要的一部分。
后台进程用于维护物理存储与内存中的数据之间的关系。主要包括:
DBWn
PMON
CKPT
LGWR
SMON
RECO
ARCn
-----------------------------------------
Database Writer(DBWn)
DBWn在以下情况将数据写入磁盘(数据文件data file):
1)发生检查点
2)达到脏缓冲区阈值
3)没有可用的缓冲区
4)超时
5)将表空间设置为脱机或只读
6)删除或截断表
7)备份表空间
-----------------------------------------
LOG Writer(LGWR)
LGWR在以下情况将缓冲区中的数据写入磁盘(联机日志文件redo log):
1)事务提交
2)三分之一的redo日志缓冲区已满
3)Redo日志缓冲区中的内容超过1M
4)每三秒钟
4)在DBWn写磁盘之前
-----------------------------------------
System Monitor(SMON)
负责检查和维护Oracle database的一致性。它主要完成以下工作:
1)实例恢复
2)重做已提交的事务
3)打开数据库
4)回滚未提交的事务
5)合并数据文件中相邻的自由空间
6)释放临时段的空间
----------------------------------------
Process Monitor(PMON)
当某个进程失效时,清除相关的资源。它主要负责以下工作:
1)回滚用户的当前事务
2)释放相关的锁
3)是否其它相关的资源
---------------------------------------
Checkpoint(CKPT)
Checkpoint负责:
1)使DBWn将SGA中所有被修改的数据库缓冲区的内容写入磁盘,无论事务是否被提交
2)用检查点信息更新数据文件头
3)用检查点信息更新控制文件
它可以保证:
1)将经常被修改的数据块写入磁盘
2)简化实例恢复
---------------------------------------
Archiver(ARCn)
是一个可选的后台进程
当把数据库设置为ARCHIVELOG模式时,可以自动归档联机redo日志
能够保存所有对数据库所做修改的记录