Oracle 进程

1.oracle进程类型:
客户端进程(client proce):运行应用程序或者oracle工具代码的进程;
oracle 后台进程(background process):随着实例启动而启动,用于完成各种维护任务。
oracle服务器进程(server process):根据客户的请求信息,代替用户完成工作任务。
oracle从属进程(slave process):代表后台进程或服务器进程完成额外的工作。
2.连接和会话
连接是客户端进程和服务器实例之间的物理通信路径,连接可以通过在进程间建立,也可以通过网络建立。通常,连接建立在客户端进程和服务器进程或者调度器(dispatcher)上,也可以在客户端进程和 CMAN(connection manager)上。
会话是实例内存中的逻辑实体,代表着当前用户登录到数据库上的状态。当用户成功登录到数据库上,会话建立。当用户断开连接或者退出应用程序后,会话结束。
一个连接(connect)上可以建立多个会话,多个会话之间相互独立,互不影响。
3.服务器进程
3.1服务器进程主要用于执行以下任务:
解析和运行应用程序发出的SQL语句,包括创建和执行查询计划。
执行PL/SQL代码
将数据块从数据文件中读入到DB buffer cache中(对应的DBWn进程将数据脏块写入到数据文件中)
将查询结果集返回给客户端处理。
3.2专有服务器进程:客户端进程和服务器进程是一对一关系,服务器进程包含了进程相关的信息和在PGA中包含UGA;
共享服务器进程:客户端进程不再和服务器进程直接通信,而是先和调度服务进程通信,接着再和共享服务器进程通信。每个共享服务器进程也有自己的PGA,但是为了保证UGA内容能够被所有的共享服务器进程访问到,UGA被放入SGA中。
4.后台进程
4.1 后台进程主要用于完成各种维护任务,可通过SELECT PNAME FROM   V$PROCESS WHERE  PNAME IS NOT NULL ORDER BY PNAME;语句查看。
4.2 每个实例必须的后台进程有:process monitor process(PMON)/system monitor process(SMON)/database writer process(DBWn)/log writer process(LGWR)/checkpoint process(CKPT)/manageability monitor process(MMNL 和 MMON)/recoverer process(RECO)
PMON:
进程监控后台进程负责监控 其他的后台进程并在 服务器进程或者调度进程失败时,进行进程恢复;
PMON还负责清理DB BUFFER CACHE和释放客户端使用的资源。例如,PMON重置活动事务表的状态,释放不再需要的锁等。
PMON还负责推送实例信息和调度器信息给监听器。如果推送至监听器时,监听器已经运行,则推送成功,若监听器非运行状态,则PMON会周期性的向监听器推送消息(周期一般为2分钟)。
SMON:
SMON主要进行系统级别的清理,主要的任务如下:
在需要进行实例恢复场景下,负责实例恢复;
恢复在实例恢复过程中由于文件读取失败或者表空间离线导致的事务失败。
清理临时段;
在数据字典管理表空间下,负责连续空闲区的合并。
SMON不断的检查系统是否需要执行自己的任务,其他的进程如果监测到需要SMON执行任务,也可以出发SMON工作。
DBWn:
DBWn主要进行脏块的写入,当服务器进程发现DB BUFFER CACHE中没有干净的可用块之后,会触发DBWn进行写入操作;
DBWn的写入是随机并且异步的。
DBWn通过写入脏块来推进检查点的维护。
DBWn的写入是随机并且分散的,而LGWR的日志写入为顺序,所以DBWn的写入速度较慢,但oracle支持DBWn的多块同时写入,以提高性能。
LGWR:
LGWR主要用于将分散且速度较慢的脏块写入和顺序写入且速度较快的日志写入分开,以提高oracle的性能;
LGWR写的触发条件:
     无论何时有人提交请求时;
     要求LGWR切换日志文件时;
     redo buffer缓冲区1/3满或者包含了1M数据时。
     当脏块要写入数据文件,但是与脏块相关的redo日志还没写入online redo log中,DBWn会触发LGWR写出redo缓存内容。
LGWR和commit:
     oracle使用快速提交(fast commit)机制来提高提交事务的性能,当用户发出commit指令时,事务被分配一个SCN号。LGWR生成一条提交记录,放入到redo buffer,并立刻写入online redo log中,写入online redo log的同时,也将提交的SCN还有redo记录写入online redo log。
     redo日志缓冲区是环状的,当LGWR将里面的内容写入online redo log后,服务器进程就可以覆盖那些已经写入磁盘的内存。不管online redo log的访问如何繁忙,oracle总是保证写入速度足够快,来保证redo log buffer 的空间足够。
     oracle判断事物是否提交成功的标志,就是LGWR将含有事务提交信息的记录和事务相关redo记录写入到online redo log中。只要成功写入online redo log,oracle就给提交的事务返回”提交成功“的信号,虽然此时被修改的数据块很可能还没有从DB BUFFER CACHE中写入磁盘,但没有关系,DBWn会后续将改变的脏块写入的磁盘中,并且及时此时数据库crash,也可以通过实例恢复,保证数据库的一致性。
注意:
     还未提交的事务产生的redo日志也有可能被LGWR写入到online redo log中,但只有该事务提交,相关的redo信息才会最终持久生效。
     LGWR会同时往log file group中的成员写入数据,如果某个成员文件损坏,则LGWR会往另外一好的日志文件写入日志,同时在告警日志和跟踪文件中记录该错误。但是如果一个成员组的所有成员都损坏,则LGWR再无法正常工作。
CKPT:
     检查点进程主要更新控制文件信息和数据文件头信息,并且触发DBWn将脏块写入数据文件中。检查点信息包括检查点位置、SCN和开始进行恢复的redo log位置。
MMON和MMNL:
     Manageability monitor process主要进行AWR(auto workload repository)相关的任务。例如当超出测量阈值,拍摄快照和获取最近修改对象的统计信息时,MMON会进行写操作。
     manageability monitor lite process主要当SGA中的active session history(ASH)缓冲区满时,进行写入磁盘操作。
RECO:
     在分布式数据库中,Recoverer process会自动解决分布式事务中的失败。
5.可选后台进程
可选后台进程主要包括:Archiver processes(ARCn)   Job Queue Processes(CJQ0 and Jnnn)   Flashback data archiver process(FBDA)   Space Management Coordinator Process(SMCO)
ARCn:
     当数据库启用归档模式并且自动归档也开启,才会有ARCn存在;
     ARCn主要在发生日志切换时,将online redo log 中的文件拷贝到离线存储设备上进行归档备份;
     ARCn也可以在归档redo日志中采集事务的redo日志,传输到备库上进行应用。
CJQ0 and Jnnn:
     Oracle使用job queue processes来处理job,并且这些job通常以批处理形式进行;
     Oracle scheduler动态的启动和停止job coordinator process(CJQ0),协调器会定期的从系统表JOB$中获取需要执行的job;
     job coordinator定期产生大量的job queue slave processes(Jnnn)来处理job;
     job queue process执行CJQ0选择出来的job,并且每个job对应一个job queue process;
     通过设置初始化参数JOB_QUEUE_PROCESSES为非0值,可启动coordinator进程,且参数值代表着可同时在实例上执行的job queue process数量。
FBDA:
     该进程主要将追踪的表的历史记录写入到闪回数据归档中。用于支持数据库的闪回特性。
SMCO(space management coordinator process):
     该进程主要协调各种空间管理相关任务的执行。例如空间的分配和回收。SMCO动态的产生Wnnn从属进程来实现这些任务。
6.从属进程
从属进程就是代替其他进程执行任务的后台进程。Oracle中常用的从属进程有:I/O从属进程和并行查询从属进程     
I/O从属进程:
     I/O slave processes(Innn)主要用来在不支持异步I/O的系统或者设备上模仿异步I/O。
     Oracle数据库支持两种类型的从属进程:RMAN从属I/O进程和DBWriter从属I/O进程。其中,RMAN从属进程可以用在磁盘或者磁带设备上模仿异步I/O提高效率。而DBWn进程可以利用从属I/O进程来模仿异步I/O,使得DBWR是唯一的对LRU列表进行扫描判断是否需要写入磁盘的进程,但是真正将数据块写入数据文件的是从属I/O进程。

  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30167136/viewspace-1579111/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30167136/viewspace-1579111/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值