oracle中的进程结构

概念:
oracle的实例启动后,就会自动在后台启动一系列的操作系统进程。数据库系统一般分成单进程系统和多进程系统。前者只要一个用户进程就可以完成所有的任务,后者需要多个进程协同工作,每个进程负责一部分工作。一般现在的数据库都用后者。
分类:oracle的进程分成2类:用户进程和oracle进程。oracle进程又分成2种:服务器进程(Server Process)和后台进程(BackGround Process).
用户进程:当你运行客户端的应用程序或者oracle工具的时候,oracle就会创建一个用户进程。这里有2个概念需要说下:连接和会话。连接指的是用户进程到数据库实例之间的一个路径。会话是说用户到数据库的一次登录。一个用户可以创建多个会话。
oracle进程:分成服务器进程和后台进程。服务器进程: 服务进程用来处理用户进程的请求(比如说客户端发了个sql语句,这个时候就要服务器进程处理了),它们之间紧密相连。 如果你的客户端和你的server是在一个机器上,oracle会把用户进程和服务器进程合并在一起。否则,就需要通过网络和服务器进行通信了。 服务器进程可以做如下的事情: 1。对SQL语句的语法解析和执行; 2。协同我们的内存进行数据处理。当数据不在SGA中的时候,进程会把数据从磁盘上的文件中读取到SGA的数据高速缓冲区。这里还涉及到一个处理模式:专有服务器模式和共享服务器模式。 3。将结果回传给客户端。后台进程: 实例启动后,oracle会自动启用一些额外的进程来帮厨数据库处理事情,这就是后台进程。 你可以通过视图V$BGPROCESS来看看一些后台的信息.
下面简单介绍几个后台进程(Background Process): 数据库书写进程(DBWR):它负责把数据高速缓冲区的数据写入到数据库文件中。具体工作过程在介绍内存结构的Database Buffer Cache的时候已经提过了,不再累赘。 一般进程在如下情况下进行工作: 1.当数据高速缓冲区内没有可用的缓冲器的时候,该进程会把部分脏数据写入到数据库文件中,以腾出空间给新拿出来的数据存放。 2.当checkpoint发生的时候,LGWR进程会通知DBWR进程把脏数据写入数据文件。 一般我们会通过参数DB_WRITER_PROCESS来配置该进程的数量,根据CPU的数量合理设置该进程数量有助于效率的提升。 日志书写进程(LGWR):它负责把日志缓冲区内的东西写入到日志文件中。 一般进程在如下情况下进行工作: 1.用户提交一个事务 2.每隔3秒钟 3.日志缓冲区的1/3区域被填满的时候 4.发生超时的时候 这里有个点:当LGWR把日志条目写入到日志文件的时候,被修改的数据并没有立刻被写入到数据库文件上,这种延迟叫“快速提交机制”. 检验点进程(CKPT):当发生检验点时候,该进程负责更新所有数据文件和控制文件的头部,以记录检验点的详细信息。 检验点由LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT来控制。 它工作的主要条件如下: 1.日志切换的时候 2.过了LOG_CHECKPOINT_TIMEOUT指定的时间,循环执行 3.当超过了LOG_CHECKPOINT_INTERVAL指定的日志条目被写入磁盘中 4.数据库关闭 5.表空间设置为OFFLINE 系统监控进程(SMON):它负责数据库启动的时候进行实例恢复,还负责清理不再使用的临时段。在集群下,还负责CPU故障和实例失败的恢复。 进程监控进程(PMON): 它负责进程的管理。当一个用户进程失败的时候,它将清除这个用户进程占用的数据库高速缓冲区及各种资源。还会定期检查调度进程和服务器进程状态,并试图重启那些停止的进程。 恢复进程(RECO):它主要负责处理失败的分布式事务。当分布式事务失败的时候,它会自动连接到这个失败的事务相关的远程数据库。它会尝试不断连接。 归档进程(ARCn):它负责把联机日志文件组复制到指定的存储介质在发生日志切换的时候,当然只有在数据库运行再说户籍科的归档模式下。 可以通过初始化参数ARCHIVE_MAX_PROCESSES控制该进程的最大数量,但是不能控制具体用的时候多少数量。作业队列进程(Job Quence Process):它主要负责作业的运行。进程在作业的间隔时间到的时候进行操作指挥作业执行。以通过初始化参数JOB_QUENCE_PROCESSES设置实例中作业队列进程的最大数量。 这里再说一个如何调整某些进程数量的问题。 问题描述:如何增加数据库书写进程数量? 1.修改你的初始化参数文件pfile的参数DB_WRITER_PROCESSES 2.关闭数据库 3.重建你的SPFILE。create spfile from pfile=''; 4.重启数据库 还要注意不能随意KILL掉oracle的后台进程,因为这可能会引起oracle异常。
Tags: 

延伸阅读

最新评论

发表评论