oracle进程

Oracle进程是Oracle实例中主要的组成部分,是Oracle系统管理数据库必不可少的一部分,Oracle进程可以分为用户进程、Oracle进程两大部分。它们主要是维护数据库的稳定,相当于一个企业中的管理者,负责全局统筹的作用。


用户进程

用户进程指的是用户在运行程序或者Oracle工具时,需要通过建立用户进程和Oracle实例进行通信。

我们常说的connection(连接)就是用户进程和Oracle实例间建立的一个通信通道。Oracle的connection连接是允许一个用户可以同时多次连接到同一个数据库实例的。

还有,常说的session(会话)是用户在和Oracle服务器连接成功后,通过了Oracle的身份验证后,用户会和Oracle服务器之间建立一个会话。同时同一个用户可以并发的和数据库建立多个会话。

oracle进程


Oracle进程

Oracle进程又分为服务器进程(server process)和后台进程(background process)

服务器进程:用于处理连接到该实例的用户进程的请求。当应用程序和ORACLE运行在同一主机时,用户进程和相应的服务器进程可组合到单个进程,以减少系统开销;当应用程序和ORACLE运行在不同的主机时,用户进程将通过一个单独的服务器进程与ORACLE联系。

服务器进程主要用来分析和执行SQL语句、所需的数据不在SGA内存中时,从磁盘数据文件复制到SGA的共享数据缓冲区等工作。

后台进程:是在Oracle实例启动时建立的,用于优化性能和协调多用户连接通信的工作。常用的Oracle后台进程,可以通过数据字典V$bgprocess查询,如下:

oracle进程

这里,介绍一下一些常见的后台进程:

1、数据库写入(DBRn)进程:按照最近最少使用(LRU)算法,以批量(多块)方式,将“脏的”缓冲区的内容写入数据文件,保持缓冲区的“清洁”和数量。

2、日志写(LGWR)进程:将重做日志缓冲区中自上次写以来已经拷贝到缓冲区中的所有重做条目写入重做日志文件。重做日志缓冲区是一个循环缓冲区,LGWR正常写的速度很快。

3、检查点(CKPT)进程:发生检查点时,修改所有数据文件的标题和记录该检查点的细节。通常由LGWR完成,但有多个数据文件,而使用LGWR又明显降低系统性能时才使用CKPT。

4、系统监控(SMON)进程:在实例启动时执行实例恢复,整理不再使用的临时段,合并邻近的空闲空间获得更大的空闲可用块。

5、进程监控(PMON)进程:恢复出故障的用户进程,整理缓冲区的高速缓存和释放用户进程使用的资源。定期检查调度进程和服务器进程状态,重新启动非正常终止的进程。

6、存档(ARCH)进程:联机重做日志填满时,将日志内容拷贝到指定的存储设备中。

7、恢复(RECO)进程:在分布式数据库环境中自动解决分布式事务中的故障。

8、锁(LCKn)进程:在并行服务器系统中提供实例间的封锁。

9、作业队列(SNPn)进程:在分布式数据库环境中自动刷新表快照,还执行DBMS_JOB包创建的作业请求。

10、队列监控(QMn)进程:监控消息队列的ORACLE高级(AQ)队列。

11、调度(Dnnn)进程:通过允许用户进程共享限定数量的服务器进程来支持多线程配置。

12、共享服务器(Snnn)进程:在多线程配置模式下,每个服务器进程服务于多个客户请求。


总结:

通过一个关系图可以全面了解Oracle各个后台进程之间的联系和作用:

Oracle后台进程关系