我们经常说数据库实例,实例其实就是指的是数据库的内存结构和进程结构。我们安装数据库软件大量的是在安装其内存和进程组件结构。上篇节我们介绍了oracle内存结构,这节就介绍下oracle进程结构。
首先看下oracle进程的分类:
1)用户进程
是连接到Oracle DB 的应用程序或工具
2)数据库进程
服务器进程:连接到Oracle实例,在用户建立会话时启动
后台进程:在启动Oracle实例时启动
3) 守护程序/应用程序进程
网络监听程序
Gridinfrastructure 守护程序
从进程角度一般可以把服务器模式分为两种:
专用服务器:对于每个会话,专用服务器进程提供服务;
共享服务器:不必为每个连接都提供一个专用服务器进程。分派程序会将多个传入网络会话请求定向到共享服务器进程池。共享服务器进程为所有客户机请求提供服务。
一般生产库中都是共享模式;
下来简要介绍下几个主要的进程:
Oracle进程结构图(此图来源于oracle官方文档)
非RAC、非ASM 环境中的常见后台进程包括:
• 数据库写进程(DBWn)
• 日志写进程(LGWR)
• 检查点进程(CKPT)
• 系统监视器进程(SMON)
• 进程监视器进程(PMON)
• 恢复器进程(RECO)
• 作业队列协调程序(CJQ0)
• 作业从属进程(Jnnn)
• 归档进程(ARCn)
• 队列监视器进程(QMNn)
说明:
DBWn 进程负责将数据库缓冲区高速缓存中经过修改的缓冲区(灰数据缓冲区)写入磁盘;DB_WRITER_PROCESSES 初始化参数指定了DBWn 进程的数量。DBWn 进程的最大数量为36。如果用户在启动过程中未指定该进程数,Oracle DB 将根据CPU 和处理器组的数量来决定如何设置DB_WRITER_PROCESSES
注意n代表可以有多个此类进程,但是如果是单处理器服务器,则配置n是没用的。
在以下情况下,DBWn 进程将灰数据缓冲区写入磁盘:
服务器进程找不到干净的可重用缓冲区时;推进检查点需要;
日志写进程(LGWR) 负责管理重做日志缓冲区,即将重做日志缓冲区条目写入磁盘上的重做日志文件;大型系统的数据块操作频率特别高,势必有大量的日志写入日志缓冲区,oracle必须保障时刻都有足够的空间写新的重做日志,因此日志写进程触发的频率是非常高的,在以下情况都会触发该进程工作:
用户进程提交事务处理时,比如commit命令后;
重做日志缓冲区的三分之一已满时;
DBWn 进程将经过修改的缓冲区写入磁盘之前;
每隔3秒;
检查点进程(CKPT)
“检查点”是一种数据结构,它定义了数据库的重做线程中的系统更改号(SCN)。检查点记录在控制文件和每个数据文件头中。它们是恢复操作的关键元素,遇到检查点时,Oracle DB 必须更新所有数据文件的头,以记录该检查点的详细信息。
这是由CKPT 进程完成的。SCN 机制很巧妙的保障了oracle数据恢复机制。这里只是简要提到,有兴趣的朋友可以找找相关技术资料,理解SCN的原理,对数据库的备份还原恢复都有相当的理论帮助。
系统监视器进程(SMON)
在实例启动时执行恢复;
清除不使用的临时段;
进程监视器进程(PMON)
在用户进程失败时执行进程恢复。负责清除数据库缓冲区高速缓存和释放该用户进程占用的资源;PMON 定期检查分派程序和服务器进程的状态,并重新启动任何已停止运行的分派程序和服务器进程。它是数据库的进程管家。
恢复器进程(RECO)
是一个用于分布式数据库配置的后台进程,它可以自动解决涉及分布式事务处理的故障。
归档进程(ARCn)
发生日志切换之后,归档进程(ARCn) 会将重做日志文件复制到指定的存储设备。仅当数据库处于ARCHIVELOG 模式且已启用自动归档时,才会存在ARCn 进程。数据库日志一般都会很大,同时数据库日志是特别重要的,只要有完整的日志我们就能恢复丢失了的数据,所以日志的丢失是一种极大的风险,我们需要把它定期迁移到异地存储上(磁带,磁盘等介质),这个过程叫做日志归档,需要归档进程来完成。注意ARCHIVELOG模式的启用,这个我们在后边数据库备份还原部分会再细讲;
Oracle进程体系就介绍到此,下一篇节我们介绍下oracle存储体系结构。欢迎关注【取知有道】,你的关注是我们坚持的原动力!
-------------------------------END-----------------------------------
【取知有道】这里欢迎爱好学习的朋友,着重数据库等IT知识的分享学习。
请敬关注【取知有道】订阅号。微信搜索公众号【取知有道】,添加关注!
或长按此二维码添加关注!
?
近期分享:
Oracle基础体系结构方面,涉及实例内存结构、进程结构、物理存储结构、逻辑存储体系等基础理论。