DBWn基础
Database Writer (DBWn):
根据图片我们就可以知道DBWn是一个负责把database buffer cache里的数据写入到disk的进程。
目
前为止我们其实已经介绍了很多和DBWn有关的东西。我们知道database管理数据的最小单位是data block,我们知道data
block是一组OS block的集合,OS block构成了datafile,其实也就是data
block组成了datafile,我们知道一个或多个datafile称为一个tablespace,在tablespace里我们每建立一张表就申请
了一个segment,当一个segment需要新的空间就添加一个extent,而一个extent就是一组连续的data block。
我
们还知道SGA中有一个内存区域叫Database buffer
cache,他通过把最常用的block缓存起来,希望能够被其他的用户重(chong)用,以提高性能。我们也提过buffer
cache不仅是一个读入的缓存区也是一个写入的缓存区,当用户修改一个block的时候,用户只是在buffer
cache里进行了修改。我们唯一没有介绍的就是Oracle是如何把buffer
cache里面被修改过的数据写入到datafile里面的。------这就是DBWn唯一需要做的工作。
DBWn < ------ > DataBase Writer n,如果你只配置一个DBWR进程,n就是0,Oracle允许你设置多达20个DBWR进程(DBW0 . . . DBW9, DBWa . . . DBWj),这个后台进程唯一的作用就是把buffer cache中的修改过的数据写入到磁盘。让我们举个例子:
1. 我要在我的表中查找name是以‘Li’开头的纪录,于是我运行:select name from sometable where name like ‘Li%’;
2. 首先Oracle检查我需要的数据block在不在buffer cache中,如果不在,则从disk把相应的block读入buffer cache。并且返回我的查询结果。
3. 我发现返回的结果是“Lii, Xinyu”,多了一个字母i,于是执行update sometable set name=‘Li, Xinyu’ where name=‘Lii, Xinyu’;
4. Oracle在内存里修改了block的内容,这时候这个block变成‘dirty’的。
5. 我输入commit; 这时候Oracle把我的这个事务相关redo信息写入磁盘-----我们很快就会涉及这部分的细节。
6. 包含name=‘Li, Xinyu’的block就留在cache里并可以被后续的用户访问,同时等待DBWn进程在需要的时候把它写入到disk。
那么,DBWn什么时候被触发呢?我们的slide上列出了很多种可能,但以下两种是最重要的:
• Checkpoint的时候
• 当我们在buffer cache中没有足够的free buffer的时候。
• 通过把数据先在cache中修改,并由DBWn后台进程在必要或方便的时候把数据写入到磁盘,可以明显提高用户修改数据的性能,因为对用户而言,当数据在内存被修改后,用户的操作就已经完成了,其他的工作由Oracle的后台进程们来保证。
•
你应该可以理解,当buffer cache中没有足够的free buffer的时候,Oracle需要从disk读取新的数据并覆盖当前buffer
cache中一些block,这时候需要触发DBWn进程,因为对于dirty
block你必须先把它写入disk,才能重用它所占用的buffer。
那么如果我们有足
够的free
buffer,那我们还需不需要触发DBWn呢?因为如果总是把数据放在内存中,当你的server突然关机,你将会丢失所有内存中的数据!尽管
Oracle的redo
log和LGWR后台进程可以保证我们有足够的redo信息来恢复你丢失的数据,但如果需要恢复的数据太多,这个恢复的过程也是比较漫长的,所以
Oracle会定期执行一个叫做checkpoint操作,这个checkpoint操作就会通知DBWn把buffer
cache中的Dirty数据写入磁盘。
分享到:
相关推荐
后台进程如数据库写进程(DBWn)、检查点进程(CKPT)和系统监控(SMON)等,负责数据库的日常管理和维护。 5. **SQL基础**: SQL是Structured Query Language的缩写,是用于处理关系数据库的标准语言。在Oracle中...
ORACLE数据库管理基础7.pptx 本资源摘要信息关乎 Oracle 数据库管理基础,具体来说是关于维护重做日志文件的知识点。重做日志文件是 Oracle 数据库中的一种重要机制,用于记录对数据所做的所有更改,提供恢复机制,...
【Oracle RMAN基础教程及体系结构概述】 Oracle Recovery Manager (RMAN) 是Oracle数据库系统中一个重要的工具,专门用于数据库的备份和恢复操作。RMAN的使用涉及到对Oracle数据库体系结构的理解,包括进程、内存...
后台进程如PMON、DBWn、SMON、LGWR、CKPT、ARCn和RVWR等执行各种数据库管理任务。 数据库结构分为逻辑结构和物理结构。逻辑结构包括表空间、数据文件、段、区和Oracle数据块,而物理结构涉及实际存储在磁盘上的数据...
- 进程:如PMON(进程监控)、SMON(系统监控)、DBWn(数据库写入器)等。 4. SQL语言基础 - SELECT语句:用于查询数据,学习如何选择、排序、分组数据。 - INSERT语句:向表中插入新数据。 - UPDATE语句:...
- **后台进程**:如数据库写入器(DBWn)、日志写入器(LGWR)、系统监视器(SMON)等,用于执行数据库级别的任务。 **逻辑结构**包括: - **表空间**:数据库中的一组数据文件集合。 - **段**:一个表空间中的一组连续...
### Oracle数据库管理基础知识点 #### 一、Oracle数据库概述与体系结构 - **Oracle9i企业版介绍**:Oracle9i是Oracle公司在2002年发布的一个版本,旨在为用户提供更为强大的数据库管理和应用程序开发功能。它包含...
Oracle例程中的后台进程负责数据库的日常维护,例如DBWn进程负责将数据缓冲区中的更改写入数据文件,LGWR进程将重做日志缓冲区的内容写入重做日志文件,CKPT进程触发检查点来同步数据库状态,SMON和PMON则负责系统的...
而Oracle例程则包含了内存结构和一组后台进程,如数据库写入进程(DBWn)、日志写入进程(LGWR)等,这些后台进程协同工作,保证数据库的正常运行和数据一致性。 Oracle的系统全局区(SGA)是所有用户进程共享的...
16. **后台进程**:如数据库写入器(DBWn)、日志写入器(LGWR)、系统监视器(SMON)、进程监视器(PMON)、检查点(CKPT)、归档程序(ARCn)等,负责执行数据库的后台任务,如数据写入、日志管理、故障恢复等。...
3. **数据库写入程序(Database Writer, DBWn)**:将脏数据缓冲区写入数据文件,通常在特定条件触发,如脏缓冲区数量达到阈值或检查点。 4. **日志写入程序(Log Writer, LGWR)**:将重做日志缓冲区的内容连续写入...
### Oracle基础知识点详解 #### 一、Oracle数据库简介 Oracle Database,又称Oracle RDBMS或简称Oracle,是由美国甲骨文公司开发的一款关系型数据库管理系统。该系统自诞生以来,一直占据着全球数据库市场的领先...
本课件主要讲解了Oracle数据库的联机重做日志文件及其相关概念,包括归档日志文件,旨在帮助学习者掌握数据库恢复的基础知识。 联机重做日志文件的作用在于记录数据库的所有事务操作,即使数据库因硬件故障或操作...
- **后台进程**:后台进程负责监控数据库的运行状态并执行特定的任务,例如数据库写入器(DBWn)、日志写入器(LGWR)、系统监视器(SMON)、进程监视器(PMON)、检查点(CKPT)、归档程序(ARCn)等。 - **逻辑结构**:包括表...
综上所述,Oracle 11g的实例内存结构和进程管理是其高效运行的基础。理解这些概念有助于优化数据库性能,解决可能的等待事件,并确保数据的安全性和一致性。通过监控和调整SGA组件大小,以及适当地配置后台进程,...