============================================================
Oracle Database基础学习笔记 之 Oracle体系结构
之进程
资料:《Oracle 9i & 10g编程艺术-第5章 进程》
--by 王磊/菜小小~ @ 2011-5-3 9:38
--by 王磊/菜小小~ 最后温习修改@ 2012-3-27 15:08
===========================================================
数据库结构之进程结构:
- User Process 用户进程:在数据库用户请求连接到Oracle 服务器时启动;
- Server Process 服务器进程:可以连接到 Oracle 实例,它在用户建立会话时启动,根据客户的请求来完成工作;
- Background Process 后台进程:在启动Oracle 实例时启动,用于完成各种维护任务;
- slave process 从属进程:类似于后台进程,代表后台进程或服务器进程完成一些额外的工作;
数据库进程结构之服务器进程更多参见笔记《Oracle DB共享服务器vs专用服务器》
- 专用服务器( dedicated server )连接
- 共享服务器( shared server )连接
数据库进程结构之后台进程:Background Process Structure
核心后台进程
v$BGPROCESS SELECT * FROM v$bgprocess WHERE paddr <> '00';

![]()
Focused background Processes
PMON 进程监视器( Process Monitor )ora_pmon_
- 用户进程失败时执行进程清理任务,释放失败进程所占用的资源,回滚未提交的工作;
- 负责监视其他Oracle后台进程,并在必要时重启这些后台进程,或者适当的终止实例;
- 向Oracle TNS监听器注册这个实例;询问默认端口1521或者LOCAL_LISTENER 参数中显式指定的监听器地址;
SMON 系统监视器( System Monitor ) ora_smon_
- 出现故障后,在启动实例时执行崩溃恢复任务
- 清理临时空间
- 合并空闲空间
- 针对原来不可用的文件恢复活动的事务
- 执行 RAC 中失败节点的实例恢复
- 清理 OBJ$
- 收缩回滚段
- “ 离线 ” 回滚段
- 刷新DBA_TAB_MONITORING 视图 ;刷新SMON_SCN_TIME 表中的 SCN- 时间戳映射信息
RECO 分布式数据库恢复( Distributed Database Recovery )
- RECO 有一个很中心的任务:由于两段提交( two-phase commit , 2PC )期间的崩溃或连接丢失等原因 ,有些事务可能会保持准备状态,这个进程就是要恢复这些事务
LGWR 日志写入器( Log Writer )ora_lgwr_
- 将重做日志条目从日志缓冲区写入磁盘中的日志文件
- When the redo log buffer is one-thired full;重做缓冲区 1/3 满
- Where there is 1MB of redo;重做缓冲区包含了 1 MB 的缓存重做日志数据
- When timeout occurs;每 3 秒一次
- Before DBWn writes modified blocks in datafile buffer cache to the datafiles;
- When transaction commits;无论何时有人提交请求
- 因此如果重做缓冲区的大小超过几 MB ,通常意义不大,对于有大量并发事物的大型系统有意义。
DBWn 数据库块写入器( Database Block Writer )ora_dbw0_
- 将修改后的块(脏块)从数据库缓冲区高速缓存写入磁盘中的数据文件;
- DBWn 会写出缓冲区缓存中的脏块,通常是为了在缓存中腾出更多的空间或者是为了推进检查点;
- 如果DBWR不能很快的释放缓冲区,Free Buffer Waits 和 Write Complete Waits 的等待数和等待时间会开始增长;
- 最好的情况下, DBWn 使用异步 I/O 将块写至磁盘DBWn 会收集一批要写的块,并把它们交给操作系统, DBWn 并不等待操作系统真正将块写出;而是立即返回,并收集下一批要写的块;当操作系统完成写操作时,它会异步地通知 DBWn 写操作已经完成。
- DBWn 会做大量的分散写( scattered write ), LGWR 则是向重做日志完成大量的顺序写( sequential write )
CKPT 检查点进程( Checkpoint Process )ora_ckpt_
- 通过更新数据库的所有数据文件和控制文件指出最新的检查点;
- 检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。
ARCn 归档进程( Archive Process )ora_arc0_
- 发生日志切换时将重做日志文件复制到归档存储器,用于在出现硬盘故障时完成介质恢复;
ASM环境特有进程
ASMB ( Automatic Storage Management Background)自动存储管理后台进程
- 在使用了 ASM 的数据库实例中运行。它负责与管理存储的 ASM 实例通信、向 ASM 实例提供更新的统计信息,并向 ASM 实例提供一个 “ 心跳 ” ,让 ASM 实例知道它还活着,而且仍在运行。
- RBAL (Rebalance) 重新平衡进程
- RBAL 进程负责向 ASM磁盘组增加或去除磁盘时重新处理平衡请求(即重新分布负载的请求)。
RAC环境特有进程
锁监视器( Lock monitor , LMON )进程:
- LMON 监视集群中的所有实例,检测是否有实例失败。这有利于恢复失败实例持有的全局锁。
- 负责在实例离开或加入集群时重新配置锁和其他资源(实例失败时会离开集群,恢复为在线时又会加入集群,或者可能有新实例实时地增加到集群中)。
锁管理器守护( Lock manager daemon , LMD )进程:
- LMD 进程为全局缓存服务(保持块缓冲区在实例间一致)处理锁管理器服务请求。它主要作为代理( broker )向一个队列发出资源请求,这个队列由 LMSn 进程处理。 LMD 会处理全局死锁的检测 / 解析,并监视全局环境中的锁超时 。
锁管理器服务器( Lock manager server , LMSn )进程:
- LMSn 进程的主要目标是SGA 块缓冲区缓存相互之间必须保持一致。
- 利用 LMSn ,可以在集群的高速连接上通过非常快速的缓存到缓存交换来完成数据交换。每个实例可以有多达 10 个 LMSn 进程 。
锁( Lock , LCK0) 进程:
- 这个进程的功能与前面所述的 LMD 进程非常相似,但是它处理所有全局资源的请求,而不只是数据库块缓冲区的请求。
可诊断性守护( Diagnosability daemon , DIAG )进程:
- DIAG 只能用于 RAC 环境中。它负责监视实例的总体“ 健康情况 ”,并捕获处理实例失败时所需的信息。
其他与Oracle特性相关进程
- 配置了作业队列。 CJQ0 进程是作业队列协调器( job queue coordinator )和Jnnn
- 配置了 Oracle AQ ,从 Q000 ( AQ 队列进程, AQ queue process )和 QMNC ( AQ 监视器进程,AQ monitor process )可以看出。
- 启用了Oracle 10g 可管理性 / 诊断特性,由可管理性监视器(manageability monitor , MMON )和可管理性监视器灯( manageability monitor light , MMNL )进程可以看出。
- MMAN :内存管理器( Memory Manager ) 10g新增 自动设置 SGA 大小特性会使用这个进程。 MMAN 进程用于协调共享内存中各组件(默认缓冲区池、共享池、 Java 池和大池)的大小设置和大小调整
- EMNn :事件监视器进程( Event Monitor Process )EMNn 进程是 AQ 体系结构的一部分,用于通知对某些消息感兴趣的队列订购者;
- CTWR :修改跟踪进程( Change Tracking Process )10g新增 负责维护新的修改跟踪文件;
- RVWR :恢复写入器( Recovery Writer )10g新增 负责维护闪回恢复区中块的“ 前 ”映像;
从属进程
I/O 从属进程:I/O 从属进程用于为不支持异步 I/O 的系统或设备模拟异步 I/O
- DBWn 和 LGWR 可以利用 I/O 从属进程来模拟异步 I/O ,另外 RMAN写磁带时也可能利用 I/O 从属进程。
- BACKUP_TAPE_IO_SLAVES :这个参数指定 RMAN 是否使用 I/O 从属进程将数据备份、复制或恢复到磁带上。布尔值。
- DBWR_IO_SLAVES :这个参数指定了 DBW0 进程所用 I/O 从属进程的个数。DBWR I/O 从属进程的名字是 I1nn , LGWR I/O 从属进程的名字是 I2nn ,这里 nn 是一个数。
并行查询从属进程
- Pnnn( parallel query coordinator )
查看系统中正在使用的后台进程
select paddr,name,description from v$bgprocess where paddr<>'00'
a1-819.jpg
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21162451/viewspace-719658/
,如需转载,请注明出处,否则将追究法律责任。