SCN是什么?The System Change Number
system change number (SCN)是一个非常重要的标记,Oracle使用它来标记数据库在过去时间内的状态和轨迹。
Oracle使用SCN来保存所有变化的轨迹。SCN是一个逻辑时钟来记录数据库事件。它非常的重要,并不是只是为了恢复。
SCN有点类似于sequence,Oracle在SGA中增加它。当一个事务修改或者插入数据,Oracle首先写入一个新的SCN到回滚段中。log writer进程立刻把提交的记录写入到重做日志中,这条提交的记录将拥有唯一的SCN。事实上,把SCN写入到日志,就意味着一个事务的完成。SCN帮助Oracle决定在一次突然中断或者SHUTDOWN ABORT后,是否需要一个崩溃恢复。每当数据库发生checkpoint,Oracle 写一个START SCN命令到数据文件头。控制文件维护着每个数据文件
的SCN,称为STOP SCN,通常是无穷大,每当实例正常关闭(SHUTDOWN NORMAL or SHUTDOWN IMMEDIATE),Oracle会复制数据文件头START SCN到控制文件的STOP SCN。如果是正常的重启数据库,是不需要恢复的,因为控制文件和数据文件的SCN是吻合的。反之,突然中断系统就没法同步SCN,SCN不匹配,Oracle就认为需要做恢复。
另外Oracle还使用数据块的SCN来维护查询的一致性和多版本。
Checkpoint是一个数据库事件,用来同步所有的datafile,controlfile和redo logfile。当发出ckpt时(回顾什么时候oracle会发出ckpt呢),ckpt会将检查点时刻的scn写入到控制文件和数据文件头部,同时会促使dbwr进程将data buffer中的所有的脏数据写入到数据文件中。而dbwr进程工作时又会促使lgwr写log buffer中的日志数据到redo logfile中。所以当发出检查点时CKPT,DBWR和LGWR同时工作,三种文件的scn完全一致,从而能保持完全同步。
一次checkpoint包含以下步骤:
1. 1把redo buffers的内容刷到redo log中。
2. 2在redo log file中留下一个checkpoint记录。
3. 3把database buffer cache的变更刷新到磁盘。
4. 4在checkpoint完成后,更新数据文件头和控制文件。
Checkpoint的具体工作包括:
• 触发DBWn向磁盘写入Dirty data。
• 把checkpoint信息更新到datafile header上。
• 把checkpoint信息更新到control file里。
• Checkpoint做的事情之一是触发DBWn把buffer cache中的Dirty cache磁盘。另外就是把最近的系统的SCN更新到datafile header和control file(每一个事务都有一个SCN),做第一件事的目的是为了减少由于系统突然宕机而需要的恢复时间,做第二件事实为了保证数据库的一致性。
checkpoint的作用就是 :
1.减少系统崩溃导致的恢复时间
2.保证数据库的一致性
确保定期向磁盘写入内存中发生修改的数据块,以便在系统或数据库失败时不会丢失数据
•缩短例程恢复所需的时间。只需处理最后一个检查点后面的重做日志条目以启动恢复操作
•确保提交的所有数据在关闭期间均已写入数据文件
由 CKPT 写入的检查点信息包括检查点位置、系统更改号、重做日志中恢复操作的起始位置以及有关日志的信息等等。
checkpoint触发:
一、log switch
二、data buffer cache达到指定块
三、达到checkpoint指定时间
具体如下:
1.当发生日志组切换的时候,减少crash后的recovery时间。
2.当符合 LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target 参数设置的时候
LOG_CHECKPOINT_TIMEOUT 默认1800秒
LOG_CHECKPOINT_INTERVAL 默认 0
fast_start_mttr_target 默认,如果被指定,会覆盖LOG_CHECKPOINT_INTERVAL
fast_start_io_target,10g以后已经抛弃。
3.当 ALTER SYSTEM SWITCH LOGFILE,ALTER SYSTEM CHECKPOINT
4.当 alter tablespace XXX begin backup,end backup
5.当 alter tablespace ,datafile offline ;
- 大小: 58.2 KB
分享到:
相关推荐
Oracle SCN(System Change Number)机制是Oracle数据库中用于追踪和管理数据变化的关键组件。SCN是一个不断递增的数字,确保了数据库能够准确地识别和处理事务中的数据修改,尤其是在故障恢复、Data Guard、Streams...
当发出 ckpt 时,ckpt 会将检查点时刻的 scn 写入到控制文件和数据文件头部,同时会促使 dbwr 进程将 data buffer 中的所有的脏数据写入到数据文件中。 Checkpoint 的具体工作包括: * 触发 DBWn 向磁盘写入 Dirty...
1. **将SCN号写入数据文件头和控制文件**:CKPT进程将当时最新的SCN号写入数据文件头和控制文件中,这样在恢复过程中可以知道哪些数据是已经提交的。 2. **通知DBWR进程**:DBWR(Database Writer)进程负责将脏页...
5. 检查点(checkpoint)发生时,CKPT进程更新控制文件和数据文件头部信息,DBWn进程将Buffer Cache的脏数据写入数据文件。 SCN机制解决了在数据库意外宕机后确定已写入数据和未写入数据的问题。主要有四种类型的...
1. CKPT(Checkpoint)进程:负责协调检查点操作,计算检查点SCN,并更新控制文件和数据文件头。 2. DBWR进程:根据检查点队列的顺序,批量写入脏块到数据文件。 3. LGWR(Log Writer)进程:同步将重做日志缓冲区的...
Oracle数据库的System Change Number (SCN) 是一个关键的机制,用于跟踪和管理数据库中的更改。SCN是一个不断增加的数字,它确保了Oracle能够准确地识别哪些数据已更新,哪些还未更新,这对于数据恢复、Data Guard、...
buffer 内的已提交交易写回 disk,否则一旦发生 crash,需要进行 recovery 时,就必须花很多时间从 redo log file内最后的 SCN 交易开始进行 recovery,这样在商业应用上是很浪费时间和没有效率的。当 commit 一笔...
检查点(CKPT)进程则会在适当时间更新控制文件和数据文件头,记录当前SCN,确保数据文件、控制文件和重做日志的一致性。 重做日志(Redo Log)由一系列重做记录组成,记录了数据块、回滚段块和事务表的变化。如果在...
4. 刷新脏缓存,DBWR 进程写完所有脏缓存后设置标志,LGWR 和 CKPT 进程继续监控直至完成。 5. 更新控制文件和数据文件的检查点信息,以记录当前数据库状态。 在两种特殊情况下,文件头中的检查点信息不会更新: 1....
后台进程如SMON(系统监控)、PMON(进程监控)、DBWR(数据写入)、LGWR(日志写入)、CKPT(检查点)和ARCH(归档)执行各种系统任务。 **数据库组件** 数据库由数据文件、控制文件、重做日志、参数文件、口令...
- **CKPT(Checkpoint Process)**:负责执行检查点操作,将缓冲区中的数据写入磁盘,并更新控制文件和数据文件中的SCN(System Change Number)。 - **DBWR(Database Writer Process)**:负责将脏缓存块写回数据文件。 ...
- **提交**:提交事务时,LGWR进程会将重做日志记录写入重做日志文件,CKPT进程确保数据文件头和控制文件中的SCN(系统更改号)与重做日志文件中的SCN一致。 #### 五、数据库管理员的角色 数据库管理员(DBA)负责...
1. **记录检查点状态**:系统会记录该检查点发生的系统变更编号(SCN)和最后一次修改的DB_Buffer块的Redo Byte Address (RBA)。 2. **写入数据块**:CKPT进程会促使DBWR进程将之前修改的所有DB_Buffer中的数据块写入...
在Oracle正常运行过程中,CKPT(检查点)进程起着关键作用,它确保内存中的数据块被写入数据文件,并更新控制文件以记录当前系统状态。物理备份通常包括备份数据文件、控制文件、参数文件和归档日志文件,以确保在...
- **CKPT**(Checkpoint Process):协调检查点,确保数据库的一致性。 这些进程协同工作,确保数据库的高效稳定运行。 #### 五、SCN(System Change Number) SCN是一个递增的序列号,用来标识数据库中的每一次...
- CKPT (Checkpoint Process) 触发检查点,通知DBWn进行数据同步。 - **Oracle内存和RMAN** - SGA (System Global Area) 包含数据库缓冲区、共享池、重做日志缓冲区、大型池和Java池等,它们是数据库运行时共享...
- **检查点进程(CKPT)**:更新控制文件和数据文件中的数据库状态信息。 - **归档进程(ARCn)**:在日志切换时对重做日志进行归档。 - **服务进程**:响应用户进程的请求,执行SQL语句等操作。 - **用户进程**:...
CKPT进程用于同步日志文件、控制文件和数据文件。 恢复原理 Oracle数据库通过备份和日志文件支持数据库的恢复。物理备份用于恢复数据文件,而日志文件则用于记录数据库操作,使得可以重做或撤销操作。每个日志记录...
缓冲区管理使用了双向链表结构,例如REPL(正在使用的缓冲区)、REPL-AUX(准备用于I/O或CR构建的缓冲区)、WRITE(需要I/O的脏缓冲区)和CKPT-Q(写入检查点的脏缓冲区)。通过Touch Count来确定REPL链中缓冲区的...