oracle后台进程详解

oracle后台进程伴随实例的启动而启动,他们主要是维护数据库的稳定,相当于一个企业中的管理者及内部服务人员。他们并不会直接给用户提供服务。

一:database write--数据写入  DBWR

作用:把SGA中被修改的数据同步到磁盘文件中。保证Buffer Cache中有足够的空闲数据块数量。

PS:如果LGWR出现故障,DBWR不会听从CKPT命令罢工,因为Oracle在将数据缓存区数据写到磁盘前,会先进行日志缓冲区写进日志文件的操作,并耐心的等待其先完成,才会去完成这个内存刷到磁盘的动作,这就是所谓的凡事有记录。

触发条件: 1、检查点CKPT

2、一个服务进程在设定的时间内没有找到空闲块

3、每三秒自动唤醒一次。

设置:DB_WRITER_PROCESS用来定义DBWn进程数量。(commit命令只是把记录修改写入日志文件,不是把修改后的数据写入数据文件)

二:log write:LGWR--日志文件写入  (劳模,很重要很忙碌的一个进程)

作用:把log buffer中的日志内容写入联机的日志文件中,释放log用户buffer空间。

触发条件:1、用户发出commit命令。(在oracle中称为快速提交机制(fast commit)):把redo log buffer中的记录写入日志文件,写入一条提交的记录

2、三秒定时唤醒。

3、日志缓冲区log buffer超过1/3,或日志数量超过1M。

4、DBWR进程触发:DBWn视图将脏数据块写入磁盘先检测他的相关redo记录是否写入联机日志文件,如果没有就通知LGWR进程。在oracle中成为提前写机制(write ahead):redo记录先于数据记录被写入磁盘

5、联机日志文件切换也将触发LGWR。

三:checkpoint:CKPT-检查点事件

作用:维护数据库一致性状态。检测点时刻数据文件与SGA中的内容一致,这不是一个单独的进程,要和前两个进程一起工作呦。DBWR写入脏数据,同时触发LGWR进程。

CKPT更新控制文件中的检查点记录。通过设置某参数调整来控制CKPT的触发时间。参数是FAST START MTTR TARGET。

触发条件:日志切换(log switch)会触发检查点。

四:process monitor:PMON--维护用户进程  进程监控器

作用:1、发现用户进程异常终止,并进行清理。释放占用资源。(清理异常终止用户使用的锁)

2、向监听程序动态的注册实例。

触发条件:定时被唤醒,其他进程也会主动唤醒它。

五:system monitor:SMON--实例维护进程  系统监控器

作用:1、负责实例恢复,前滚(Roll Forward)恢复到实例关闭的状态,使用最后一次检查点后的日志进程重做。这时包括提交和未提交的事务。打开数据库,进行回滚(Roll Back):回滚未提交的事务。(oracle承诺commit之后数据不会丢失,现在我们可以大致的了解是如何实现这个承诺,以及在数据的安全性和数据库性能之间的平衡选择。)

2、负责清理临时段,以释放空间

触发条件:定期被唤醒或者被其他事务主动唤醒。

六:LCKn 仅适用于RAC数据库,最多可有10个进程(LCK0,LCK1,...,LCK9),用于实例间的封锁。

七:archive:ARCH--归档操作

作用:发生日志切换时把写满的联机日志文件拷贝到归档目录中。(LGWR写日志写到需要覆盖重写的时候,触发ARCH进程去转移日志文件,复制出去形成归档日志文件,以免日志丢失)

触发条件:日志切换时被LGWR唤醒。

设置:LOG_ARCHIVE_MAX_PROCESSES可以设置oracle启动的时候ARCH的个数。

八:Distributed Database Recovery  --RECO  用于分布式数据库的恢复

某个应用跨越多个数据库,需要都提交成功,事务才会成功,否则全部回滚。

以上是八个最核心、最重要、最有用进程,以下还列出了一些进程。

九:manageability monitor:MMON--AWR主要的进程

作用:1、收集AWR必须的统计数据,把统计数据写入磁盘。10g中保存在SYSAUX表空间中。

2、生成server--generated报警

每小时把shared pool中的统计信息写入磁盘,或者shared pool占用超过15%。

十:manageability monitor light:MMNL:轻量级的MMON

十一:memory manager:MMAN:自动内容管理

作用:每分钟都检查AWR性能信息,并根据这些信息来决定SGA组件最佳分布。

设置:STATISTICS_LEVEL:统计级别

SGA_TARGET:SGA总大小

十二:job queue coordinator:CJQ0--数据库定时任务

十三:recover writer:RVWR

作用:为flashback database提供日志记录。把数据块的前镜像写入日志。

十四:change tarcking writer:CTWR

作用:跟踪数据块的变化,把数据块地址记录到 change_tracking file文件中。RMAN的增量备份将使用这个文件来确定那些数据块发生了变化,并进行备份。

以上是oracle中比较常见的后台进程,不是所有的进程。

时间: 2024-10-23 15:55:20

oracle后台进程详解的相关文章

Oracle 后台进程详解

后台进程 后台进程负责保证数据库的稳定工作,每当数据库启动时,这些后台进程会自动启动,并且持续整 个实例的生命周期,每个进程负责一个独特的任务,表2-4 是一些最重要的后台进程.(本文地址:http://blog.sunansheng.com/2016/04/29/oracle-back-process/) 进 程 缩 写 描 述 Database Writer DBWn 负责把脏数据写回磁盘 Log Writer LGWR 负责把日志数据写到联机日志文件 Checkpoint CKPT 负责检

oracle 序列 详解

序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建序列的权限 create sequence 或 create any sequence 2.  创建序列的语法 CREATE SEQUENCE sequence  //创建序列名称        [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1

Oracle SGA详解

SGA(SYSTEM Global Area )系统全局区 l 数据高速缓存 在Oracle进行数据处理的过程中,代价最昂贵的就是物理 I/O操作了.同样的数据从内存中得到要比从磁盘上读取快的多.因此,优化Oracle的一个重要的目标就是尽可能的降低物理 I/O操作. Oracle的 Buffer Cache用于缓存从磁盘中读取的数据,当 Oracle需要查找某些信息的时候,首先会在 BufferCache中寻找,如果找到了,则直接将结果返回.如果找不到,则需要对磁盘进行扫描, Oracle将在

Oracle ROWID详解

1.ROWID定义 ROWID:数据库中行的全局唯一地址 对于数据中的每一行,rowid伪列返回行的地址.rowid值主要包含以下信息: 对象的数据对象编号 该行所在的数据文件中的数据块 该行中数据块的位置(第一行是0) 数据行所在的数据文件(第一个文件是1).该文件编号是相对于表空间. 通常来说,一个rowid值唯一标识数据中的一行.然而,存储在同一聚簇中不同的表可以有相同的rowid. 2.扩展ROWID 从Oracle 8i开始使用扩展rowid标识行物理地址 扩展rowid使用base6

JAVA通过JDBC连接Oracle数据库详解【转载】

JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.html Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver"; Class.forName("驱动类名"); 2.获得连接 数据库地址: URL="jdbc:oracle:thi

【转载】oracle 分区表详解

一.分区表的概述:     Oracle的表分区功能通过改善可管理性.性能和可用性,从而为各式应用程序带来了极大的好处.通常,分区可以使某些查询以及维护操作的性能大大提高.此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具.     分区功能能够将表.索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区.每个分区有自己的名称,还可以选择自己的存储特性.从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使

Oracle序列号详解

例1:创建序列: CREATE SEQUENCE ABC INCREMENT BY 1 START WITH 1 MAXVALUE 9999999999 NOCYCLE NOCACHE; 语法详解 CREATE SEQUENCE 序列名 [INCREMENT BY n] --1. [START WITH n] --2. [{MAXVALUE/MINVALUE n|NOMAXVALUE}] --3. [{CYCLE|NOCYCLE}] --4. [{CACHE n|NOCACHE}]; --5.

【Oracle】详解Oracle中的序列

序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建序列的权限 create sequence 或 create any sequence 2.  创建序列的语法 CREATE SEQUENCE sequence  //创建序列名        [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1        [STAR

问题:Oracle出发器;结果:1、Oracle触发器详解,2、Oracle触发器示例

ORACLE触发器详解 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8.2.6 重新编译触发器 8.3 删除和使能触发器 8.4 触发器和数据字典 8.5   数据库触发器的应用举例 触发器是许多关系数据库系