进程体系结构

来源:互联网 发布:西北师大知行学院萧泰 编辑:程序博客网 时间:2024/05/29 13:44
                                                                    进程体系结构
oracle数据库是多进程数据库系统
进程类型:
客户端进程:运行应用程序或oracle工具代码
   当用户运行一个应用程序(如Pro*C 程序或 SQL*Plus)时,操作系统会创建一个客户端进程 (有时称为用户进程)来运行用户应用
   程序。客户端应用程序具有已链接到进程的Oracle数据库库文件,以提供与数据库进行通信所需的API。
oracle进程:
   后台进程:与数据库实例同时启动,并执行一些维护任务,如执行实例恢复、清理进程、将redo log buffer写入磁盘等。
         每个后台进程都有其单独的任务,但又与其他进程相互协作。例如,LGWR进程将重做日志缓冲区中的数据写入到联机重做日志。
         当已填充的日志文件将被存档时, LGWR通知另一个进程来归档该文件。
   服务器进程:基于客户端请求,执行相应的工作。这些进程解析SQL查询、将查询放入shared pool、为查询创建并执行查询计划、
   和将数据从buffer cache或磁盘读入到buffer中。
          专用服务器进程:对于专用服务器连接,客户端连接于一个且仅与一个服务进程相关联。在linux上,连接到一个数据库实例的
          20个客户端进程,有相应的20个服务器进程为其提供服务。
          每个客户端进程直接与其服务器进程进行通信。在会话期间,此服务器进程专用于其客户端进程。服务器进程将特定于进程的信
          息和UGA存储在其PGA中。
          共享服务器进程:对于共享服务器连接,客户端应用程序通过网络连接到一个调度器进程,而不是一个服务器进程。20个客
          户端进程可能会仅连接到一个单一的调度器进程。
          调度器进程接收来自已连接客户端的请求,并将它们放入大池中的请求队列。第一个可用的共享服务器进程从队列承接一个请求
          并处理之。之后,共享服务器进程将结果放回调度器响应队列。调度器进程会监视此队列,并将结果传回客户端。
          与专用服务器进程类似,共享服务器进程也有其自己的 PGA。但是,会话 的UGA 位于 SGA中,以便任何共享服务器进程可以访
          问其中的会话数据。
   从属进程:为后台进程或服务器进程执行额外任务。   
客户端进程和服务器进程   
客户端进程和与实例直接交互的 Oracle 进程在某些重要方面不同。为客户端进程服务的 Oracle 进程可能会读取或写入SGA,而客户端进程不能。
客户端进程可以在数据库主机之外另一台主机上运行,而 Oracle 进程不能。

11g里一些重要进程简单介绍说明:
1、PMON进程:监视其他的后台进程,并在某个服务器进程或调度器进程异常终止时执行进程恢复。pmon负责清理数据库buffer cache,并释放
客户端进程以前还在使用的资源。PMON还将实例和调度器进程的信息注册到Oracle网络监听器。当实例启动时,PMON轮询监听器以确定它是否
正在运行。如果监听器正在运行,则PMON将有关参数传递给它。如果监听器未运行,则PMON定期尝试联系它。

2、SMON进程:负责各种系统垃圾清理职责。
a、必要情况下,在实例启动时执行实例恢复。在oracle RAC数据库中,一个数据库实例的SMON进程可以为另一个失败的实例执行实例恢复
b、在实例恢复期间,由于读文件或表空间脱机错误而跳过的已终止事务,由SMON进程进行恢复。当表空间或文件重新联机时,SMON进程将恢复
该事务
c、清理未使用的临时段。oracle数据库在创建索引时会分配扩展区,如果操作失败,则SMON会清理临时空间。
d、合并在字典管理的表空间中的多个连续空闲扩展区。

3、DBWn进程:将数据库buffer的内容写入到数据文件中。DBWn进程将数据库缓存中被修改的缓冲区写入到磁盘中。
DBWn进程在下列条件下会将dirty buffers写入磁盘:
当服务器进程扫描了额定数目的缓冲区后,仍未找到干净的可重复使用的buffer时,它会通知DBWn执行写入操作。DBWn尽可能以异步方式将dirty
 buffer写入到磁盘,以便同时执行其他处理。
DBWn周期性写出buffer,以推进checkpoint,该点是重做线程中实例恢复开始的位置。checkpoint的日志位置由在buffer cache中最老的buffer
确定
在许多情况下,DBWn写入的块将遍布整个磁盘。因此,该写操作往往要比由LGWR执行的顺序写入速度慢。DBWn进程尽可能进行多块写入,以提
高效率。多块写入的数据块数量因操作系统而异。

4、LGWR进程:
LGWR将缓冲区中的一个连续部分写入联机重做日志。通过分离各种修改数据库缓冲区任务,将脏缓冲区分散写入到磁盘,而将重做缓冲区顺序写
入到磁盘,提高了数据库性能。
一下情况会发生日志写:
用户提交事务
发生了online重做日志的切换
自LGWR最后一次写入到现在超过了三秒
redo log buffer已达到三分之一满,或包含1MB被缓冲的数据
DBWn必须将修改的buffer写入到磁盘
在DBWn可以将脏缓冲区写到磁盘之前,与该缓冲区更改相关联的重做记录必须先被写入磁盘 (write-ahead protocol)。如果DBWn发现一些重做记录尚未写入,
则它通知LGWR将记录写入磁盘,并等待LGWR完成此工作,然后DBWn才将数据缓冲区写入磁盘。
redo log buffer是循环的,当LGWR将redo条目从redo log buffer写入到online redo文件时,服务器进程可以复制新条目并覆盖已写入到磁盘
的redo log buffer的条目。通常LGWR的写入速度足够快,以确保buffer中总会有可用空间供新条目使用,即使对online redo的访问很繁重也是
如此。
LGWR可能会在提交事务之前,将redo log条目写入到磁盘。只有之后提交了事务,这些条目才会成为永久性的。
当事务活动很高时, LGWR可能会使用组提交。例如,某个用户提交其事务,导致LGWR将事务的重做条目写入到磁盘。在此写操作的过程中,其他用户也
试图提交。但LGWR无法写入磁盘以提交这些事务,直到前面的写入完成为止。完成后,LGWR可以将(尚未提交的)等待事务中的重做条目列表在一个操作
中全部写入。通过这种方式,数据库最小化了磁盘I/O,而最大化了性能。如果提交请求继续维持在一个高的水平,则每个LGWR写入操作都可能包含多个提
交记录。
LGWR同步写入联机重做日志文件组的所有活动镜像。如果某个日志文件不可访问,则LGWR继续写入组中的其他文件,并在LGWR跟踪文件和警报日志中记
录一个错误。如果组中的所有文件都损坏,或者如果因为尚未存档而不可用,则LGWR不能继续工作。

5、CKPT进程:
使用检查点信息更新控制文件和数据文件头,并通知DBWn 将块写入磁盘。检查点信息包括检查点位置、SCN、联机重做日志中的起始恢复位置等等。
CKPT不会将数据块写入数据文件,也不会将重做块写入联机重做日志文件。

6、MMON进程(可管理性监视器进程):
执行许多与自动工作负载存储库(AWR)相关的任务。例如, 当某个度量超出其阈值时,MMON会写入信息,并拍摄快照,捕获最近修改的SQL对象的统计信息。
0 0
原创粉丝点击