oracle体系结构主要有实例+数据库;
实例由内存结构(SGA+PGA+..)和进程结构(服务器进程+后台进程+..)组成;本文主要介绍进程结构
Oracle数据库创建服务器进程来处理连接到该实例的客户端进程的请求。客户端进程始终通过单独的服务器进程与数据库通信。
作用:
解析并运行通过应用程序发布的SQL语句,包括创建和执行查询计划
执行PL / SQL代码
将数据文件中的数据块读入数据库缓冲区高速缓存(DBW后台进程的任务是将修改后的块写回到磁盘)
返回结果的方式使应用程序可以处理信息
服务器进程主要有2中
(1)共享服务器进程(例如mysql)
(2)专有服务器进程 (oracle)
在专用服务器连接中,客户端连接仅与一个服务器进程关联。服务器进程在其PGA中存储特定于进程的信息和UGA。oralce就是专有服务器进程,每一个连接对应一个服务器进程
PMON 进程监控进程
检测其他后台进程的终止
执行异常终止的后台进程恢复
CLMN 清理主要进程CLMN会定期清除终止的进程,终止的会话,事务,网络连接,空闲会话,
分离的事务以及已超过其空闲超时的分离的网络连接。
CLnn 清理辅助进程CLMN将清理工作委托给CL nn协助清理进程。辅助进程的数量与要完成的清理工作量和当前的清理效率成正比。
这些进程负责监视和清除其他进程, 数据库必须确保释放已终止进程所拥有的资源,以便其他进程可以使用它们
【数据库资源隔离,PMON组可以自动隔离损坏的不可恢复的资源,以便不会立即强制终止数据库实例。PMON组继续对保存隔离资源的进程或会话执行尽可能多的清除。】
PMAN监视,产生并停止以下类型的过程
1、分派器和共享服务器进程
2、数据库驻留连接池的连接代理和池化服务器进程
3、作业队列流程
4、可重启后台程序
PMAN监督几个后台进程,包括共享服务器,池化服务器和作业队列进程。
监听器登记处理(LREG)有关数据库实例和调度程序进程与Oracle网络监听信息。
实例启动时。LREG会轮询侦听器以确定它是否正在运行。如果侦听器正在运行,则LREG会传递相关参数;反之,LREG会定期尝试与它联系。
系统监视处理(SMON)是负责各种系统级清理职责。
1、必要时在实例启动时执行实例恢复。
2、恢复由于文件读取或表空间脱机错误而在实例恢复期间跳过的终止事务。
3、清理未使用的临时段。
4、在字典管理的表空间内合并连续的自由范围
DBW进程将数据库缓冲区高速缓存中的已修改缓冲区写入磁盘。(数据量大时会增加进程数DBW0~DBW99)。
在以下情况下,DBW进程将脏缓冲区写入磁盘:
1、当服务器进程在扫描阈值数量的缓冲区后无法找到干净的可重用缓冲区时,它会向DBW发出写信号。
2、DBW定期写入缓冲区以推进检查点,检查点是重做线程中从其开始实例恢复的位置。
如果无法访问日志文件,则LGWR继续写入组中的其他文件,并将错误写入LGWR跟踪文件和警报日志。如果组中的所有文件都已损坏,或者该组由于尚未归档而无法使用,则LGWR无法继续运行
日志写进程(LGWR)管理联机重做日志缓冲区。
在以下情况下,LGWR将自上次写入以来已复制到缓冲区的所有重做条目写入:
1、用户提交交易。
2、发生联机重做日志切换。
3、自LGWR上次写信以来已经过去了三秒钟。
4、重做日志缓冲区已满三分之一,或包含1 MB的缓冲数据。
5、DBW必须将修改后的缓冲区写入磁盘。
DBWn可以写入脏缓冲区之前,数据库必须将与更改缓冲区相关联的重做记录写入磁盘(预写协议)。如果DBW发现某些重做记录尚未写入,他将通知LGWR将记录写入磁盘,并等待LGWR完成,然后再讲数据缓冲区写入磁盘。
检查点进程(CKPT)更新控制文件和数据文件头与检查点信息和DBW到写入块到磁盘的信号。
检查点信息包括检查点位置,SCN和联机重做日志中开始恢复的位置。
MMON 管理监控进程
管理监控进程(MMON)执行相关的许多任务自动工作负载(AWR)
MMNL 管理监控精简进程可管理性监控精简进程(MMNL)将来自SGA中活动会话历史记录(ASH)缓冲区的统计信息写入磁盘。当ASH缓冲区已满时,MMNL写入磁盘
在分布式数据库中,恢复程序(RECO)自动解决分布式事务中的故障。
一个归档进程程序(ARCn)副本联机重做日志文件到离线存储重做日志切换发生后。
这些过程还可以收集事务重做数据并将其传输到备用数据库目标。仅当数据库处于ARCHIVELOG模式并且启用自动归档时,ARC n进程才存在。
动态作业队列进程可以在给定的时间间隔内同时运行许多作业,:
1、Oracle Scheduler会根据需要自动启动和停止作业协调器进程(CJQ0)。
协调器进程会定期从系统JOB$表中选择需要运行的作业。选择的新作业按时间排序。
2、协调器进程动态生成作业队列从属进程(Jnnn)以运行作业。
3、作业队列进程运行CJQ0进程选择要执行的作业之一。每个作业队列进程一次运行一个作业,直到完成
4、该过程完成单个作业的执行后,将轮询更多作业。如果没有计划执行的作业,则它将进入睡眠状态,从睡眠状态开始,它会定期唤醒并轮询更多的作业。如果该进程未找到任何新作业,则它将在预设间隔后终止。
闪回数据存档进程(FBDA)是后台进程,提供了在表的整个生命周期内跟踪和存储表中事务性更改的功能。这样,您可以及时向后闪回表,以恢复表的状态。
提交修改跟踪表的事务时,FBDA会检查是否正在⽣成新的Undo,过滤与标记为存档的对象相关的内容,并将Undo信息复制到闪回数据存档表空间中。FBDA维护当前行上的元数据,并跟踪已存档的数据量。
FBDA还负责自动管理闪回数据存档的空间,组织(分区表空间)和保留时间。FBDA还跟踪已跟踪交易的归档进度。
FBDA可以作为线程或操作系统进程运行。
SMCO流程协调各种与空间管理相关的任务的执行。
典型的任务包括主动空间分配和空间回收。SMCO动态产生从属进程(W nnn)以执行任务。
I / O从属进程(Innn)为不支持异步I/O的系统和设备模拟异步I / O,
异步I / O中,传输没有时序要求,从而使其他进程可以在传输完成之前启动
数据库支持不同类型的I / O从站,包括:
1、Recovery Manager(RMAN)的I / O从属
使用RMAN备份或还原数据时,可以将I / O从属设备同时用于磁盘和磁带设备。
2、如果使用多个数据库编写器进程不切实际(例如,当计算机只有一个CPU时),则数据库可以在多个从属进程上分配I / O。DBW是唯一扫描缓冲区高速缓存LRU列表以查找要写入磁盘的块的进程。但是,I / O从属为这些块执行I / O。
查询协调器在并行执行中服务器进程充当查询协调器(也称为并行执行协调器)
负责以下工作:
1、解析查询
2、分配和控制并行执行服务器进程
3、将输出发送给用户
生产和使用
生产者负责处理其数据,然后将其分发给需要它的使用者
并行执行中,多个进程同时运行以运行单个SQL语句。通过在多个进程之间划分工作,Oracle数据库可以更快地运行该语句。