`
longgangbai
  • 浏览: 7331083 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORACLE lgwr,dbwr,chpk进程

 
阅读更多
何时触发lgwr,dbwr,chpk等进程  
Log Writer (LGWR)
LGWR performs sequential writes from the Redo Log Buffer to the online redo log file under the followingsituations:
     1.When a transaction commits
     2.When the Redo Log Buffer is one-third full
     3.When there is more than 1 MB of changes recorded in the Redo Log Buffer
     4.Before DBWn writes modified blocks in the Database Buffer Cache to the data files
     5.Every three seconds
 
.Because the redo is needed for recovery, LGWR confirms the commit operation only after the redo is written todisk.
LGWR can also call on DBWn to write to the data files.


Database Writer (DBWn)
The server process records changes to undo and data blocks in the Database Buffer Cache. DBWn writes thedirty buffers from the Database Buffer Cache to the data files. It ensures that a sufficient number of free buffers(buffers that can be overwritten when server processes need to read in blocks from the data files) are availablein the Database Buffer Cache. Database performance is improved because server processes make changes onlyin the Database Buffer Cache.
DBWn defers writing to the data files until one of the following events occurs:
     Incremental or normal checkpoint
     The number of dirty buffers reaches a threshold value
     A process scans a specified number of blocks when scanning for free buffers and cannot find any
     Timeout occurs
     A ping request in Real Application Clusters (RAC) environment
     Placing a normal or temporary tablespace offline
     Placing a tablespace in read-only mode
     Dropping or truncating a table
     ALTER TABLESPACEtablespace nameBEGIN BACKUP

1. 当Buffer Cache中的Dirty List长度达到阀值:
DBWR将Dirty List中的Dirty Buffer写入磁盘(user Server Process在LRU List中查找free buffer时将碰到的dirty blocks移入Dirty List)

2. 当user Server Process在Buffer Cache的LRU List中搜索了过长的时间而仍然没有找到free buffer:
DBWR直接从LRU List中将Dirty Buffer写入磁盘

3. 每过3秒钟:
DBWR把dirty buffers从LRU List移到Dirty List,一旦Dirty List长度达到阀值,DBWR便将数据写入磁盘

4. Checkpoint发生时:
DBWR把所有的dirty buffers从LRU List移到Dirty List,并且开始写数据

5. 当Tablespace开始Hot backup时:
DBWR把所有属于该表空间的dirty buffers从LRU List移到Dirty List,并且开始写数据

6. 当Tablespace offline时:
DBWR把所有属于该表空间的dirty buffers从LRU List移到Dirty List,并且开始写数据

7. 执行Drop时:
drop table或者index将促使DBWR先将属于该segment的dirty blocks写入磁盘



checkpoint是一个数据库事件,它将已修改的数据从高速缓存刷新到磁盘,并更新控制文件和数据文件。
我们知道了checkpoint会刷新脏数据,但什么时候会发生checkpoint呢?以下几种情况会触发checkpoint。

1.当发生日志组切换的时候
2.当符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target参数设置的时候
3.当运行ALTER SYSTEM SWITCH LOGFILE的时候
4.当运行ALTER SYSTEM CHECKPOINT的时候
5.当运行alter tablespace XXX begin backup,end backup的时候
6.当运行alter tablespace ,datafile offline的时候;

 

 

 

PMON进程:
       该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释
放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障
的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和
服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。

SMON进程:
        该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在
具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程
有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。

DBWR进程:
        该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个OR
ACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主
要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储
区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的
缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用
的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中
的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写
入磁盘:
1、当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度
时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH
的值的一半。
2、 当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没
有查到未用的缓冲区,它停止查找并通知DBWR进行写。
3、出现超时(每次3秒),DBWR 将通知本身。
4、 当出现检查点时,LGWR将通知DBWR
在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数
DB-BLOCK-WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DB
WR从LUR表中查找另外一个弄脏缓冲区。
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目
的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新
的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK-WRITE-BAT
CH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲
区写入磁盘。
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘
,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。


LGWR进程:
           该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志
缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输
出,LGWR输出:
1、 当用户进程提交一事务时写入一个提交记录。
2、每三秒将日志缓冲区输出。
3、 当日志缓冲区的1/3已满时将日志缓冲区输出。
4、当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或
不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,
服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日
志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写
出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入
日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入
数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一
起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢
复操作可以同步。
分享到:
评论

相关推荐

    Oracle 12c完整后台进程&内存结构图 DBA必备

    Oracle 12c 内部架构与后台进程详解 Oracle 12c 是一款功能强大且复杂的关系数据库管理系统,了解其内部架构和后台进程是 DBA 的必备知识。本文将详细介绍 Oracle 12c 的后台进程和内存结构图,帮助读者深入了解 ...

    Oracle服务进程如何处理用户进程的请求.doc

    - 当Redo Log Buffer中的数据达到一定阈值(通常是其大小的三分之一)、数据量达到1MB、经过3秒钟或发生检查点时,LGWR(Log Writer)进程会被触发,将Redo Log Buffer中的数据写入磁盘上的Redo Log文件。 这一系列...

    Oracle进程结构及后台进程简介

    多进程结构包括用户进程和Oracle进程,后者又细分为服务器进程和后台进程。 用户进程是用户应用程序的一部分,如PRO*C或SQL*PLUS,它们与服务器进程通信以执行SQL语句。服务器进程负责处理来自用户进程的请求,包括...

    Oracle进程及相关示意图

    LGWR进程通常在事务提交、重做日志缓存满三分之一或DBWR开始写入脏缓存块时启动。如果DBWR需要写入脏缓存块,但相关的重做信息还在缓存中,LGWR会被触发先将这些重做信息写入日志文件,以保持数据的一致性。 检查点...

    ORACLE进程.pptx

    Oracle进程分为两大类:用户进程和Oracle进程,进一步细分为服务器进程和后台进程。 在单进程Oracle实例中,所有Oracle代码都在一个进程中执行,这适用于单用户环境,比如在MS-DOS上运行Oracle。而在多进程Oracle...

    外文翻译---解析Oracle数据库后台进程的功能.docx

    ### Oracle数据库后台进程功能解析——DBWR进程 #### 一、引言 Oracle数据库作为业界广泛使用的数据库管理系统之一,其内部包含多个复杂且高效的后台进程,以确保数据的一致性与完整性。其中,DBWR(Database ...

    关于Oracle数据库后台进程的思考.pdf

    本文主要探讨了Oracle数据库的两个关键后台进程:DBWR(Database Writer)和LGWR(Log Writer),并阐述了它们的工作机制。 DBWR进程的主要任务是将修改过的、标记为“脏”的数据缓冲区内容写回到数据文件中,从而...

    Oracle后台进程

    日志写入进程(LGWR),又称为Log Writer Process,是Oracle数据库中至关重要的进程之一,主要负责将事务提交后的重做日志(redo log)从内存中的重做日志缓冲区写入到物理重做日志文件中。LGWR的触发时机包括但不...

    oracle 10G常见进程

    - 定期检查“dispatcher”和服务器进程的状态,并重启那些非正常终止的Oracle进程。 #### RECO:恢复进程 **功能介绍**: RECO(Recoverer Process)主要用于处理分布式事务中的故障。在一个具有分布式事务支持的...

    Oracle数据库入门(PPT)

    (6)后台进程 PMON,LCLN,RECO,SMON,DBWR,LGWR,CKPT,ARCH PMON 做程序的清洁工作,处理一些不正常退出的事件. SMON 做系统的清洁工作,执行系统出错后自动恢复工作. LCKN Oracle系统表级或行级加锁的进程. ...

    oracle数据库体系结构之一【进程结构】

    在多进程结构中,Oracle后台进程扮演着关键角色,包括Dnnn(Dispatcher)、DBWR(Database Writer)、LGWR(Log Writer)、ARCH(Archiver Log Process)、PMON(Process Monitor)、SMON(System Monitor)、CKPT...

    oracle OracleDBConsoleorcl 控制台的服务进程 2.OracleJobSchedulerORCL 定时器的服务进程

    数据库服务进程包括多个子进程,如PMON(进程监控器)、SMON(系统监控器)、DBWn(数据库写入器)、LGWR(日志写入器)等,它们协同工作以保证数据库的稳定运行和数据的一致性。 综上所述,OracleDBConsoleorcl...

    Oracle的内存结构与进程结构.docx

    Oracle数据库是一个复杂而强大的关系型数据库管理系统,其内存结构和进程结构对于理解和优化数据库性能至关重要。在Oracle中,实例(Instance)是访问数据库的关键途径,它由内存结构和进程结构两大部分组成。 1. ...

    Oracle的内存结构与进程结构.doc

    后台进程是Oracle实例的重要组成部分,包括DBWR(数据库写入进程)、LGWR(日志写入进程)、PMON(进程监控进程)等,它们负责数据的持久化、日志同步、资源清理等关键任务。 总的来说,理解Oracle的内存结构和进程...

    ORACLE实例的后台进程

    Oracle数据库系统是由一系列后台进程协同工作来保证数据的稳定性和高效性。这些后台进程是数据库运行的核心组成部分,它们各自承担着特定的任务,确保数据库的正常运行。以下是对这些主要后台进程的详细介绍: 1. *...

    Windows环境中Kill掉Oracle线程

    需要注意的是,如果 Kill 掉的是 Oracle 的核心后台线程(DBWR, LGWR, SMON or PMON),将导致 Oracle 实例关闭。可以使用以下 SQL 语句来检查 Oracle 的核心后台线程: ```sql Select vb.name NOME, vp.programe ...

    Oracle的内存结构和进程结构.docx

    7. LGWR(日志写入)进程:将日志缓冲区的内容写入重做日志文件。 在Oracle 10g中,Oracle引入了自动内存管理,简化了管理员的工作,可以根据数据库的负载自动调整内存分配,从而优化性能。通过SQL语句如`ALTER ...

    oracle进程监控

    - 这条语句可以帮助我们了解当前系统中活跃的后台进程的状态,例如DBWR(数据库写进程)、LGWR(日志写进程)等。 2. **会话监控** - 使用以下语句查看当前所有会话的状态: ```sql select sid, serial#, ...

    oracle后台进程

    ### Oracle后台进程详解 Oracle数据库系统中包含了多种后台进程,这些进程在数据库启动时自动启动,并负责执行各种关键任务,确保数据库的正常运行。本文将详细介绍Oracle后台进程中几个重要的进程的功能与作用。 ...

Global site tag (gtag.js) - Google Analytics