Oracle 后台进程介绍
一 进程分类:
1、服务器进程(server process): 依据客户请求完毕工作。如接收和处理应用发送的SQL语句
2、后台进程(background process): 随数据库而启动,用于完毕各种维护任务。
如将块写到磁盘(DBWn)、
维护在线重做日志(LGWR)、清理异常终止的进程等。
3、从属进程(slave process):类似于后台进程,只是它们要代表后台进程或server进程完毕一些额外工作。
二 主要讲一下后台进程:
来浏览一下主要进程:
SQL> select paddr, name, description
2 from v$bgprocess
3 where paddr <> '00'
4 order by paddr desc
5 /
PADDR NAME DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000084C92190 CJQ0 Job Queue Coordinator
0000000084C8D050 SMCO Space Manager Process
0000000084C8C010 QMNC AQ Coordinator
0000000084C87F10 MMNL Manageability Monitor Process 2
0000000084C86ED0 MMON Manageability Monitor Process
0000000084C85E90 RECO distributed recovery
0000000084C84E50 SMON System Monitor Process
0000000084C83E10 CKPT checkpoint
0000000084C82DD0 LGWR Redo etc.
0000000084C81D90 DBW0 db writer process 0
0000000084C80D50 MMAN Memory Manager
PADDR NAME DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000084C7FD10 DIA0 diagnosibility process 0
0000000084C7ECD0 PSP0 process spawner 0
0000000084C7DC90 DBRM DataBase Resource Manager
0000000084C7CC50 DIAG diagnosibility process
0000000084C7BC10 GEN0 generic0
0000000084C7ABD0 VKTM Virtual Keeper of TiMe process
0000000084C79B90 PMON process cleanup
1. DBWR进程
该进程运行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被改动,它被标志为“弄脏”。DBWR的主要任务是将“弄脏”的缓冲区写入磁盘。使缓冲区保持“干净”。因为缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目降低。当未用的缓冲区下降到非常少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE採用LRU(LEAST RECENTLY USED)算法(近期最少使用算法)保持内存中的数据块是近期使用的,使I/O最小。
触发DBWR进程的条件有:
1). DBWR超时,大约3秒
2). 系统中没有多余的空缓冲区来存放数据
3). CKPT 进程触发DBWR
在有些平台上。一个实例可有多个DBWR。在这种实例中,一些块可写入一磁盘,还有一些块可写入其他磁盘。
2. LGWR进程
该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。
触发LGWR进程的条件有:
1). 用户提交
2). 有1/3重做日志缓冲区未被写入磁盘
3). 有大于1M的重做日志缓冲区未被写入磁盘
4). 3秒超时
5). DBWR 须要写入的数据的SCN大于LGWR记录的SCN。DBWR 触发LGWR写入。
日志缓冲区是一个循环缓冲区。
当LGWR将日志缓冲区的日志项写入日志文件后。server进程可将新的日志项写入到该日志缓冲区。
LGWR 通常写得非常快,可确保日志缓冲区总有空间可写入新的日志项。
注意:有时候当须要很多其它的日志缓冲区时,LWGR在一个事务提交前就将日志项写出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用高速提交机制。当用户发出COMMIT语句时。一个COMMIT记录马上放入日志缓冲区,但对应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入数据文件。当一事务提交时,被赋给一个系统改动号(SCN),它同事务日志项一起记录在日志中。因为SCN记录在日志中,以致在并行server选项配置情况下,恢复操作能够同步。
3. PMON 进程监视进程
PMON(the Process Monitor Process)进程负责监视数据库的处理情况,并负责清除死掉的进程。PMON还负责重新启动失败的调度进
程(dispatcher process)
4. SMON进程
SMON是Oracle数据库至关重要的一个后台进程, 该进程实例启动时运行实例恢复。还负责清理不再使用的暂时段, 是一种用于库的“垃圾收集者”。在具有并行server选项的环境下。SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否须要,或者其他进程发现须要时能够被调用。
它做的工作包含例如以下7件:
(1)清理暂时表空间:伴随这“真正”的暂时表空间的出现。清理暂时表空间的杂事已经减轻了,但它还没全然消失。比如,当建立一个索引,在创建期间分配给索引的扩展区被标志为TEMPORARY。假设Create Index会话因某些原因异常中断。SMON负责清理他们。其它操作创建的暂时扩展区。SMON相同会负责。
(2) 接合空暇空间:假设你正使用数据字典管理表空间,SMON负责把那些在表空间中空暇的而且互相是邻近的extent接合成一个较大的空暇扩展区。这发生仅在带有默认的pctincrease设置为非零的存储子句的字典管理表空间。
(3) 把对于不可用文件的事务恢复成活动状态:它的角色类似在库启动期间。这时。由于文件不能用于恢复,SMON恢复在实例/崩溃恢复期间被跳过的故障事务。比如。文件可能已经在不可用或没装载的磁盘上。当文件变可用了,SMON将恢复它。
(4)运行一个RAC中故障节点的实例恢复:在一个oracle RAC配置中。当群集中的一个库实例失败(比如。实例正运行的机器故障了),一些群集中的其它节点将开启故障的实例的重做日志文件,为故障实例运行全部数据的恢复。
(5)清理OBJ$:OBJ$是一个包括库中差点儿每个对象(表,索引,触发器,视图等等)的记录的行级数据字典表。
很多次。这儿存在的记录代表已删对象,或代表不在这儿的对象,在oracle的信赖机制中被使用。SMON是删除这些不在被须要的行的进程。
(6)收缩回滚段:SMON将运行回滚段的自己主动收缩到它的optimal尺寸,假设它被设置。
(7)“脱机”回滚段:对于DBA来,让一个有active事务的回滚段,脱机或不可用。这事是可能的。Active事务正使用这脱机回滚段是可能的。
在这情况下,回滚不是真正的脱机。它被标志为“悬挂offline”。在后台进程中,SMON将周期性尽力让它真正脱机。直到成功。
SMON做更多事情,譬如存在DBA_TAB_MONITORING视图中的监控统计数据的洗刷。在SMON_SCN_TIME表中发现的时间戳定位信息的SCN的洗刷。等等。SMON在期间能消耗非常多CPU,这应该被觉得是正常的。
SMON周期性的苏醒(或被其它后台进程叫醒)来运行这些管家的家庭杂事。
5.CKPT 检查点进程
CKPT(the Checkpoint Process)进程负责向DBWR进程发送信号,要求运行一次检查点,并更新数据库的全部数据和控制文件。
CheckPoint(检查点),是指有DBWR进程将全部改动过的数据缓冲区写回数据文件。CKPT是可选的,假设没有CKPT进程,则有LGWR代
行这些任务。
6. ARCHn 归档进程
ARCH(the Archiver Process )负责将再现重做日志拷贝到归档存储器。进档RDBMS执行在ARCHIVELOG模式时ARCH才有效,假设
系统没有执行在ARCHIVELOG模式。则系统失效后可能无法恢复。最后让系统执行在ARCHIVELOG模式下,此时归档进程可能有多个。
SQL>archive log list //查看是否为归档模式
能够再数据库Mount 模式下开启归档
SQL>alter database archivelog; //开启
SQL>alter database noarchivelog;//关闭
7. RECO 恢复进程
RECO (the Recovery Process)进程用于清除分布式数据库中的未决(pending)事务,它负责分布式事务中本地部分的提交与回滚
------------------------------
By Dylan.
Oracle 后台进程介绍的更多相关文章
- 【ora10,4】oracle后台进程介绍:
一.SMON(System MONitor) 系统监控进程: 在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置: PMON started with p ...
- Oracle 后台进程(二)DBWR进程
一.DBWR进程介绍 DBWR进程执行将数据块缓冲区写入数据文件的工作,是负责缓冲存储管理的一个Oracle后台进程.在修改DB Cache中的某个缓冲区时,会将它标志为“DIRTY”,DBWR的主要 ...
- oracle后台进程详解
oracle后台进程伴随实例的启动而启动,他们主要是维护数据库的稳定,相当于一个企业中的管理者及内部服务人员.他们并不会直接给用户提供服务. 一:database write--数据写入 DBW ...
- 【体系结构】Oracle参数介绍
[体系结构]Oracle参数介绍 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩ ...
- Oracle asm介绍和安装linux+oracle10g+asm过程
Oracle asm介绍和安装linux5.2+oracle10g+asm过程 1)ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来 ...
- Oracle Dataguard 介绍
Oracle DataGuard介绍 一. DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件里记录此次更改.在DataGuard中 ...
- Oracle 后台进程 详细说明
一. 进程概述 先来看一下Oracle 11g 的架构图. 看起来比较模糊,我已经上传到了csdn 的下载. 是个pdf 文件, 2m 多. 那个看起来比较清楚. 也对每个进程做了解释. 下载地址:O ...
- [Oracle] Lob介绍
[Oracle] Lob介绍 像Oracle这种关系型数据库,比较擅长处理结构化的数据,那么对于非结构化的数据,Oracle是怎么处理和存储的呢?Lob (Large Object)是Oracle ...
- oracle regexp_like介绍和例子
oracle regexp_like介绍和例子 学习了:http://www.cnblogs.com/einyboy/archive/2012/08/01/2617606.html ORACLE中的支 ...
随机推荐
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 SP2013中的OAuth
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 SP2013中的OAuth SP apps使用OAuth授权 ...
- 【为小白菜打call】
作为本校的竞赛生,我必须为我大OJ打call caioj,小白菜oj,顾名思义,就是为刚踏进OI的“小白菜”们准备的网站,里面包含了许多专题内容,各种模版和讲解视频 而且对于刚学习C++的同学,更有帮 ...
- DB-MySQL:MySQL 复制表
ylbtech-DB-MySQL:MySQL 复制表 1.返回顶部 1. MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TA ...
- 解决 Eclipse 导入项目后 Maven Dependencies missing jar 问题
转自:https://yq.aliyun.com/ziliao/314086 话不多说直接上图 上图是我通过git导入项目后, Maven Dependencies Library中很多包出现miss ...
- Spring《五》集合的注入方式
List.Set.Map.Properties 1.List <property name="msg"> <list> <value>gf< ...
- Java环境安装配置好了却不能运行xxx.jar程序?
1,检查Java环境是否已安装或配置成功. WIN+R → cmd → java -version,查看是否可以读取到Java版本信息,如果读取不到,说明Java环境安装或配置有问题,重新装一下. 2 ...
- python课程设计笔记(一)开发环境配置
今天开始学python,一个月后交成果?还是希望自己不要浮躁,认真地去学,有所付出也不期望太大回报. 现在还是一脸懵逼的状态,看着教程一点点来吧= = 毕竟我是最棒的最发光的阳光彩虹小白马! 1. 去 ...
- javascript动画函数封装(升级版)
//把 任意对象 的 任意数值属性 改变为 任意的目标值 function animate(obj, json, fn) { clearInterval(obj.timer); obj.timer = ...
- 关于优化for循环的注意的事项
for循环注意事项: 1.for循环内部尽量少做数据库查询之类的IO代价大的操作 2.尽量控制for循环的次数,不多做无用功 3.能一次加载在内存中的,就不要通过循环来多次查询数据库,除非数据量过大. ...
- hdu 2795 Billboard 【线段树】
给出一个高为h,宽为w的广告板,有n张广告需要贴,从第一行开始贴,尽量靠左,输出每个广告最后贴在哪一行的 先一直想不通这样建树是为什么 后来看到一篇题解里面的一句话“直到找到一个满足条件的叶子节点” ...