概述。
Oracle流程分为用户流程、服务器流程和后台流程。下面主要介绍一下后台流程,对我们进一步了解甲骨文架构很有帮助。
用户进程和服务器进程。
通常,当我们编写sql并提交执行时,客户端会生成一个进程,这就是用户进程。当用户需要连接到Oracle服务器时,会在Oracle服务器上启动一个与用户进程对应的进程来为用户进程服务,这称为服务进程。
数据库访问。
如果客户端进程对应于服务进程,则该连接是专用服务器连接,
如果多个客户端进程对应于一个服务器进程,则该连接是共享服务器连接。
背景流程结构(重点)
以下是一些常见的数据库守护程序:
●系统监控过程(SMON),主要任务是在实例启动时执行恢复工作。
●过程监控过程(PMON),其主要任务是恢复失败的用户过程。
●数据库写进程(DBWn),将修改后的数据块内容写回数据文件。
●日志写入过程(LGWR),将内存中的日志内容写入日志文件。
●检查点流程(CKPT),启动检查点并减少数据库实例恢复所需的时间。
●归档进程(ARCn),数据库服务器在归档模式下运行时,调用该进程完成日志归档。
●恢复进程(RECO),用于分布式数据库中的失败处理。
●锁定进程(LCKn),保证并行服务器模式下的数据一致性。
●调度流程(Dnn),负责将用户流程分配给可用的服务流程进行处理。
1.LGWR日志写入过程
LGWR日志写入过程负责将重做日志缓冲区中的日志条目写入磁盘上的在线日志文件。
当出现以下情况时,LGWR将开始工作:
●在DWBR进程将脏缓冲区写入数据文件之前。
●当重做日志记录达到三分之一的缓冲区时。
●日志缓冲区记录的日志超过1M。
●每3秒。
●提交事务(执行提交)。
2、DBWn数据库写入进程
数据库写入过程负责将数据库缓存(脏缓冲区)的内容写入数据文件。
当出现以下情况时,DBWn流程开始工作:
●系统发出检查点指令。
●脏缓冲区的数量达到指定的阈值。
●在搜索了一定数量的数据块后,服务进程找不到空闲缓冲区。
●数据写入时间到了。
●表空间脱机或只读。
●删除或截断表格。
●执行ALTERTABLESPACE…BEGINBACKUP命令。
3.CKPT检查站流程(检查站)
CKPT检查点过程的目的是执行“检查点”,并同步数据库的所有数据文件、控制文件和重做日志文件。
CKPT进程在以下情况下开始运作:
●日志切换发生。
●关闭实例。
●手动执行检查点操作。
●由初始化参数LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT发出。
4.SMON系统监视器流程(系统监视器)
SMON系统监控过程的主要功能是强制数据库的恢复操作。
SMON进程的工作总结如下:
低实例恢复。
●用于合并数据文件的空闲空间。
●释放数据文件的临时部分。
5.PMON过程监视器(过程监视器)
PMON进程监控进程负责恢复失败的用户进程或服务进程。
当PMON检测到用户流程失败时,所进行的工作总结如下:
●回滚当前用户的交易。
●释放当前用户添加的表级或行级锁。
●重启死调度流程。
6.存档过程
ARCn归档过程完成日志的归档备份,是一个可选的后台过程。
当数据库以归档日志模式运行时,它负责将完整的重做日志文件复制到归档日志目标文件,以便保留所有重做记录。
默认情况下,Oracle服务器处于非存档模式,可以通过修改初始化参数文件中的参数来更改存档模式。
7.恢复过程(恢复)
RECO恢复过程负责自动恢复分布式数据库环境中的故障。
分布式事务。
当分布式事务由于网络连接失败或其他原因失败时,RECO进程将尝试联系与该事务相关的所有数据库,并已完成失败事务的处理。
8、Dnnnn调度流程。
Dnnnn调度过程是多线程服务器架构的一部分。调度进程接受用户进程的请求,将其放入请求队列,然后将服务进程分配给请求队列中的用户进程。
总结:
用户连接过程是用户和OracleInstance之间的桥梁;服务器进程用于处理数据库用户和Oracle服务器之间的连接;后台进程主要用来完成数据库管理任务,是OracleInstance和OracleDatabase之间的链接。