oracle进程学习

一、服务器进程

oracle创建服务器进程,并用服务器进程来处理用户进程的请求。某些情况下,如果应用程序和oralce在同一台机器上,为了减少系统的负载,oracle会把用户进程和服务器进程合并在一个进程。如果应用程序和oralce在不同的机器上,则用户进程通过网络和服务器进程通信。
服务器进程负责下面的工作:
1、对sql进行语法解析和执行
2、需要数据的时候,如果数据不在SGA中,服务器进程会把数据从磁盘上的数据文件中读取到SGA的数据高速缓冲区
3 、把结果返回给应有程序

二、后台进程

为了最大性能和容纳更多的用户,一个多进程系统会使用额外的oralce进程,这些进程就是后台进程。一个实例可以有多个后台进程,但是并不是每一个后台进程都会出现。通过视图v$bgprocess 可以查看后台进程的信息

select  t.* from  v$bgprocess t;

在这里插入图片描述

oracle有下面的后台进程:
1、数据库书写进程(database writer process,DBWR)
2、日志书写进程(log writer process,LGWR)
3、校验点进程(checkpoint progress,CKPT)
4、系统监控进程(system monitor process,SMON)
5、进程监控进程(progress monitor progress ,PMON)
6、恢复进程(recover progress,RECO)
7、作业队列进程(job queue process)
8、归档进程(archiver process,ARCn)
9、队列监控进程(queue monitor process,QMNn)
10、其他后台进程(other background process)
启动实例时,oracle会自动启动后台基础,但是并不是所有的后台进程都启动。启动后台进程是实例启动的一部分。

2.1 数据库书写进程

1、当oralce扫描缓冲区的一个临界值,如果不能发现可用的缓冲器,oracle会通知数据库书写进程把脏数据写到磁盘。
2、当发生检查点(checkpoint)时,LGWR将通知数据库书写进程把脏数据写入磁盘

通常,一个数据库书写进程能够满足需求,为了提高数据的性能,我们可以配置多个数据库书写进程同时写到数据文件。这些数据库写进程可以从DBW0-DBW9,从DBWa-DBWz。数据库书写进程的数量有初始化参数DB_WRITER_PROCESS控制。初始化参数db_writer_processes 的设置是基于cpu的数据量的,如果系统只有一个cpu,即使设置了多个数据库书写进程,也只有个数据库书写进程有效,在这中情况下设置多个书写进程并不会提高数据库的性能。
在这里插入图片描述
数据库书写进程工作原理如下图:
在这里插入图片描述

2.2 日志书写进程

日志书写进程负责缓冲区的管理,它把日志缓冲区的内容写到联机日志文件中。
当用户输入sql语句对数据库进行修改的是时候,服务器进程把与这个修改相关的信息以日志条目(redo entries) 的形式复制到日志缓冲区中。通常,日志书写进程会以最快的速度吧这些条目写到联机日志文件中,以便日志缓冲区中预留出更多的空余空间。服务器进程负责复制新的日志条目到日志缓冲区中。在下面的条件下,日志书写进程会把日志缓冲区中的日志条目写入磁盘:
1、当用户进程提交一个事物
2、每隔三秒钟
3、日志缓冲区的1/3已被填满
4、但数据库书写进程将修改的数据写入到磁盘

当用户提交commit语句时,日志条目被放入日志缓冲区,日志书写进程立即把这些条目从日志缓冲区写到联机日志文件中。但是被修改的数据并没有立即写入到磁盘上的数据文件中,而是延迟了。这种方式叫“快速提交机制”
一个事务被提交。日志书写进程会把与它相关的日志条目写入联机日志文件中,有时如果日志缓冲区的空间不足。日志书写进程也会把那些未提交的事务条目写入联机日志文件中个,当这个事务被提交后,写到联机日志文件的日志条目将变成永久改变。当一个事务提交时,被赋予一个系统修改号(system change number ,SCN)它
随这个事务的日志文件条目一起记录在联机日志文件中。由于SCN记录在日志文件中,以至于在集群(RAC)环境或者分布式(distributed databases)环境下,恢复操作可以同步。
日志书写进程还能启动归档进程。
工作原理如下:
在这里插入图片描述

2.3 校验点进程

当一个校验点发生时,oracle必须更新所有数据文件的头部,以记录校验点的详细信息。这项工作由校验点
进程完成。校验点进程不会写数据块,写数据块的工作总是由数据库书写进程完成。

2.4 系统监控进程

数据库启动时,系统监控进程负责实例恢复。系统监控进程还负责清理不再使用的临时段。如果需要,其他进程还可以调用系统监控进程。在集群环境下,系统监控进程还负责CUP故障和实例失败的恢复。

2.5、进程监控进程

进程监控进程负责进程的管理,当一个用户进程失败。系统监控进程将清除这个用户进程占用的数据库高速缓冲区及各种资源。
远程监控进程会定期检查调度进程(dispatcher)和服务进程的状态。并试图重新启动那些被停止的进程。进程监控进程还会把调度进程和实例的信息注册到监听器。进程监控进程还可以被其他进程所调用。

2.6、恢复进程

恢复进程主要用于处理失败的分布式事务。当一个分布式事务失败。恢复进程会自动连接到和这个失败的分布式事务相关的远程数据库。

2.7、归档进程

发生一次日志切换的时候,归档进程会把联机日志文件复制到指定的存储介质上。归档进程只有数据运行在归档模式且启用自动归档的情况下才会出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值