设为首页 加入收藏

TOP

Oracle进程结构(一)
2015-07-24 11:48:41 来源: 作者: 【 】 浏览:8
Tags:Oracle 进程 结构

Oracle进程结构

进程是动态创建的,完成任务后就消亡;而程序是静态的实体,程序是可以复制、编辑的。进程强调的是执行过程,而程序仅仅是指令的有序集合;进程在内存中,程序在外存中。

ORACLE分为用户进程和ORACLE进程。

l 用户进程

当用户执行一个基于ORACLE数据库的应用程序时,客户端就会创建一个ORACLE的用户进程(如运行的sqlplus、OEM都叫用户进程)。

用户进程通过连接登录到ORACLE服务器,ORACLE服务器上就产生一个对应的服务器进程(Oracle服务器的“外交部”);该服务器进程代表运行在客户端的用户进程与服务器通信。

l ORACLE进程

Oracle进程可以分为服务器进程和后台进程服务器进程。

2 服务器进程

主要是服务于客户端的用户进程。服务器进程又可以分为:专用服务器进程(只为一个用户进程提供服务)和共享服务器进程(可以为多个用户进程提供服务)。

2 服务器进程的任务:

A. 解析并执行用户所提交的SQL语句;

B. 搜索SGA区的数据库缓存,决定是否读取数据文件。如果数据块不在SGA区的数据库缓存中,就将其从数据文件中读入;

C. 将查询执行的结构数据返回给用户。

2 后台进程(BackgroundProcess)

服务器进程是由后台进程提供支持的,后台进程主要完成的任务是:

A. 在内存和外存之间进行I/O操作;

B. 监视各个进程的状态;

C. 协调各个进程的任务;

D. 维护系统的性能;

E. 保证系统的可靠性;

可使用以下查询来检查数据库中启动的后台进程个数及其名称

SQL> SELECT * FROM V$BGPROCESS

常用的后台进程:

n SMON(SystemMonitor) 系统监视进程:

ü 启动条件:随ORACLE数据库系统启动;运行期间ORACLE可以唤醒SMON进程,以检查是否需要执行它所负责的工作;如果其他任何进程需要使用SMON进程的功能时,将随时唤醒SMON进程。

ü 作用:

A、在例程启动时负责对数据库进行恢复。如果是非正常关闭数据库,则当下次启动例程时,SMON进程会自动读取重做日志文件,对数据库进行恢复(即执行将已提交的事务写入数据文件中、回退未提交的事务等操作);

B、清除已经分配但不再使用的表空间中的临时段(如果表空间中有大量的盘区,则清除就会花费大量时间,就会影响数据库启动时的性能) 。

C、合并基于数据字典管理的各个表空间中位置相邻的空闲盘区,使之更容易分配。

ü 备注说明:如果某个表空间的存储参数 PCTINCREASE 被设置为0,则SMON进程就不会对该表空间中的空闲盘区进行合并操作。

n PMON(Process Monitor) 进程监视进程;

ü 启动条件:

A、 需要启动、清除中断或失败的用户进程时(即对ORACLE数据库的连接发生崩溃、挂起或其他非正常终止等);清除操作还包括非正常中断的用户进程留下的孤儿会话,回退未提交的事务,释放会话所占用的锁、SGA区、PGA区的资源。

B、 运行期间ORACLE可以唤醒PMON进程,以检查是否需要执行它所负责的工作;如果其他任何进程需要使用PMON进程的功能时,将随时唤醒PMON进程。

C、PMON是在单独的数据库中启动的,而分布式数据库中是RECO 恢复进程来完成PMON进程的任务的。

ü 作用:

A、 恢复中断或失败的用户进程、服务器进程;

B、 清除非正常中断的进程留下的孤儿会话;

C、回退未提交的事务,重置活动事务的状态,从系统活动进程中删除用户进程标识号(ID) ;

D、释放进程所占用的各种资源,并通过自动回退事务来解决死锁,释放用户所拥有的表和行上的锁;

E、 定期检查服务器进程和调度进程,如果它们因失败而被异常挂起,则自动重新启动它们。

n DBWn(Database Writer) 数据库写进程;

ü 启动条件

A、当DIRTY列表中的脏缓存块达到一定数量(即初始化参数db_block_write_batch指定值的一半),DBWn进程将脏缓存块写入数据文件(同时ORACLE将对控制文件和数据文件的头部的同步序号SCN进行修改,记录下当前数据库的结构和状态,以保证数据库中物理文件之间的同步);

B、当在LRU列表中找到一定数量(即初始化参数db_block_max_scan指定的值)的空闲缓存块,但还不够时,为获得更多的空闲缓存块,DBWn进程将脏缓存块写入数据文件;

C、当出现检查点LGWR进程通知DBWn进程进行写操作;

D、一个表空间被置于备份模式、脱机或只读状态时;

E、DBWn进程出现超时(Time_out)即大约3秒未启动时。

ü 作用:

A、管理高速缓冲区,保证服务器进程总能找到空闲缓存块,以便保存从数据文件中读取的数据块;

B、将DIRTY列表中的脏缓存块写入到数据文件中,获取更多的空闲缓存块;

C、使用LRU算法将最近正在使用的缓存块即命中块,继续保留在LRU列表中,不必重新读取数据文件;

D、DBRn进程通过延迟写入来优化磁盘I/O操作,而服务器进程只在数据高速缓存区中做修改。

ü 备注说明:

A、DBWn进程数最好不要超过CPU的个数,因为每个处理器同时只能运行1个DBWn进程;

B、ORACLE默认启动一个DBWn进程,启动受初始化参数(DB_WRITER_PROCESS)的限制。可以设置初始化参数 DB_BLOCK_CHECKPOINT_BATCH来设置每当出现检查点时,DBWn进程写入的脏缓存块的最大数量。增大该值,可以延长启动DBWn进程的时间间隔。

n LGWR(Log Writer) 日志写进程;

ü 启动条件:

A、用户进程通过COMMIT语句提交当前事务;

B、重做日志高速缓存被写满1/3时,或含有1MB的重做信息时;

C、DBWn进程需要为检查点清除脏缓存块,即将脏缓存块写入数据文件时;

D、LGWR进程出现超时,即大约3秒为启动LGWR进程时。

ü 作用:

A、负责管理重做日志高速缓冲区,即将重做日志记录从高速缓存区写入到重做日志文件;

B、如果例程没有启动CKPT检查点进程,则LGWR进程就来完成检查点执行任务。

ü 备注说明:

A、 每个例程只有一个LGWR进程;

B、 LGWR进程先于DBWn进程启动。

n CKPT (CheckPoint) 检查点进程

ü 启动条件:

A、 关闭数据库时;

B、 一个重做日志文件被写满而产生日志切换时;

C、满足参数 LOG_CHECKPOINT_TIMEOUT(指定检查点之间的时间间隔(以秒为单位));

D、参数 LOG_CHECKPOINT_INTERVAL(指定当一定数量的操作系统数据块(非ORACLE数据块)被写入重做日志文件时,将触发一个检查点)

ü 作用:

A、 触发DBWn进程,使其将自上一个检查点之后的全部已经修改的数据块(脏缓存块)写入数据文件中;

B、 保持数据库高速缓冲区与数据文件之间数据同步(用最新的检查点信息更新控制文件和数据库文件的文件头);

C、检查点信息会在恢复数据库期间使用,当SMON进程恢复数据库时,SMON会决定最后在数据文件中的检查点。(必须将数据文件的文件头和控制文件中最后记录的检查点之后的联机重做日志文件中的事务编号重新提交到数据文件中。)

ü 备注说明:

A、不要设置不必要的检查点,或迫使不需要的检查点发生;

B、缩短检

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【翻译自mos文章】在11gR2rac环境.. 下一篇Oracle不同版本下内存颗粒大小的..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)