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中的支 ...
随机推荐
- 【Android 初学】13、Broadcast Receiver
Broadcast Receiver Android广播机制包括三个基本要素:广播(Broadcast) - 用于发送广播.广播接收器(BroadcastReceiver) - 用于接收广播:意图内容 ...
- 01背包问题(回溯法)python实现
接上一篇,相同的01背包问题,上一篇採用动态规划的方法,如今用回溯法解决. 回溯法採用深度优先策略搜索问题的解.不多说.代码例如以下: bestV=0 curW=0 curV=0 bestx=None ...
- Linux网络驱动程序
Linux 的网络系统主要是基于 BSD UNIX 的套接字机制. 在系统与驱动程序之间定义了数据结构 sk_buff 进行传输数据.系统支持对发送数据和接收数据缓存,提供流控机制并提供对多协议的支持 ...
- [jzoj 3175] 数树数 解题报告 (树链剖分)
interlinkage: https://jzoj.net/senior/#main/show/3175 description: 给定一棵N 个节点的树,标号从1~N.每个点有一个权值.要求维护两 ...
- Spring《五》集合的注入方式
List.Set.Map.Properties 1.List <property name="msg"> <list> <value>gf< ...
- Asp.net mvc中使用配置Unity
第一步:添加unity.mvc 第二步:在添加之后会在app_start中生成UnityConfig.cs,UnityMvcActivator.cs 第三步:使用 第四步:效果展示
- 分布式memcache
使用多台memchache服务器,形成memchache集群.目的是为了提升memchache所能使用的硬件资源数量.多台memcached服务器之间不相互通讯.分布式算法由客户端实现,(php来说, ...
- 关于windows 2008 64位系统驱动的加载问题
三点: 1.bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS. 2.bcdedit /set testsigning on. 3.使用X64编译驱动 ...
- ajax的post提交方式和传统的post提交方式哪个更快?
如果同时用ajax和post提交先执行哪个呢?是ajax返回后再执行post呢还是同时执行? ajax的post提交方式和传统的post提交方式哪个更快? >> php这个答案描述的挺清楚 ...
- CDR中如何将对象在页面居中显示
利用CorelDRAW在做设计排版时,如果想让对象在页面居中显示你会用什么方法?用鼠标拖?还是更准确的做法选择参照物对象,利用对齐与分布命令?或者还有更简单快速的方法,一起来看看吧! 最简单的方法(页 ...