A stamp that defines a committed version of a database at a point in time. Oracle assigns every committed transaction a unique SCN.
SCN是顺序递增的一个数字,在Oracle中用来标识数据库的每一次改动,及其先后顺序。SCN的最大值是0xffff.ffffffff。
Commit SCN
Offline SCN
Checkpoint SCN
Resetlog SCN
Stop SCN
High and Low SCN
3. SCN & checkpoint
CKPT进程在checkpoint发生时,将当时的SCN号写入数据文件头和控制文件,同时通知DBWR进程将数据块写到数据文件。
CKPT进程也会在控制文件中记录RBA(redo byte address),以标志Recovery需要从日志中哪个地方开始。
与checkpoint相关的SCN号有四个,其中三个存在控制文件中,一个存放在数据文件头中。
3.1. System Checkpoint SCN(系统检查点scn)
当checkpoint完成后,ORACLE将System Checkpoint SCN号存放在控制文件中。
SQL>alter system checkpoint;
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1198248
3.2. Datafile Checkpoint SCN(数据文件检查点)
当checkpoint完成后,ORACLE将Datafile Checkpoint SCN号存放在控制文件中。
SQL> select name,checkpoint_change# from v$datafile;
NAME CHECKPOINT_CHANGE#
------------------------------ ------------------
/home/oracle/oradata/edison/system01.dbf 1198248
/home/oracle/oradata/edison/undotbs01.dbf 1198248
/home/oracle/oradata/edison/sysaux01.dbf 1198248
/home/oracle/oradata/edison/users01.dbf 1198248
NAME CHECKPOINT_CHANGE#
------------------------------ ------------------
/home/oracle/oradata/edison/example01.dbf 1198248
/mnt/disk2/oradata/edison/ioffice02.dbf 1198248
/mnt/disk2/oradata/edison/ioffice03.dbf 1198248
/home/oracle/oradata/edison/ioffice01.dbf 1198248
12 rows selected.
3.3. Start SCN号
ORACLE将Start SCN号存放在数据文件头中,这个SCN用于检查数据库启动过程是否需要做Media Recovery。
SQL>select name,checkpoint_change# from v$datafile_header;
3.4. End SCN (Stop SCN)号
ORACLE将End SCN号存放在控制文件中。
SQL> select name,last_change# from v$datafile;
NAME LAST_CHANGE#
---------------------------------------- ------------
/home/oracle/oradata/edison/system01.dbf
/home/oracle/oradata/edison/undotbs01.dbf
/home/oracle/oradata/edison/sysaux01.dbf
/home/oracle/oradata/edison/users01.dbf
/home/oracle/oradata/edison/example01.dbf
/mnt/disk2/oradata/edison/ioffice02.dbf
/mnt/disk2/oradata/edison/ioffice03.dbf
/home/oracle/oradata/edison/ioffice01.db
在数据库正常运行的情况下,对可读写的,online的数据文件,该SCN号为NULL.
3.5. SCN不连续的原因
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1198248
SQL>alter system checkpoint;
SQL>select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1199800
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的时候;
4. SCN#与数据库启动
在数据库启动过程中,当System Checkpoint SCN、Datafile Checkpoint SCN和Start SCN号都相同时,数据库可以正常启动,不需要做media recovery.三者当中有一个不同时,则需要做media recovery。如果在启动的过程中,End SCN号为NULL,则需要做instance recovery。ORACLE在启动过程中首先检查是否需要media recovery,然后再检查是否需要instance recovery。
5. SCN#与数据库关闭
如果数据库的正常关闭的话,将会触发一个checkpoint,同时将数据文件的END SCN号设置为相应数据文件的Start SCN号。 当数据库启动时,发现它们是一致的,则不需要做instance recovery。在数据库正常启动后,ORACLE会将END SCN号设置为NULL。如果数据库异常关闭的话,则END SCN号将为NULL.
6. SCN# 与 sequence#
Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.
sequence#存储在数据字典中,存储于user_sequences表 LAST_NUMBER 为最终序列号
http://blog.csdn.net/george188/archive/2010/03/16/5385937.aspx
http://blog.chinaunix.net/u1/57982/showart_612902.html
http://tolywang.itpub.net/post/48/307162
分享到:
相关推荐
oracle scn修改工具,可以直接修改oracle scn,在极端情况下恢复使用,比如解决ORA-600 2662等类似错误,使用说明:https://www.xifenfei.com/2022/06/win-oracle-scn-patch.html
Oracle SCN(System Change Number)机制是Oracle数据库中用于追踪和管理数据变化的关键组件。SCN是一个不断递增的数字,确保了数据库能够准确地识别和处理事务中的数据修改,尤其是在故障恢复、Data Guard、Streams...
Oracle SCN Oracle SCN(System Change Number)是一种非常重要的标记,Oracle 使用它来标记数据库在过去时间内的状态和轨迹。SCN 是一个逻辑时钟来记录数据库事件。它非常的重要,并不是只是为了恢复。 Oracle ...
在一些情况下(特别是一些数据库非常规恢复场景中),需要修改oracle scn绕过一些错误,让数据库open成功,在以前的版本中我们可以通过event,隐含参数,oradebug等方法进行修改,在一些较新的版本中这些方法都被oracle屏蔽,...
Oracle数据库中的SCN(System Change Number,系统改变号)是Oracle系统内部维护的一种序列号,它随着系统更新自动增加,用于标记数据库中的每一个改变,保证数据的一致性和顺序恢复。SCN在数据库中无处不在,几乎...
### Oracle SCN详解 #### 一、SCN基础 ##### 1. 什么是SCN **SCN(System Change Number,系统变更号)**是Oracle数据库内部用于标识事务处理中的事件顺序以及确保数据一致性的关键机制之一。SCN是一种逻辑的...
### Oracle SCN 概念解析 #### 一、SCN 的定义与作用 **SCN (System Change Number)** 是 Oracle 数据库中的一个重要概念,用于记录数据库的状态变化。它本质上是一个递增的逻辑计数器,每当数据库发生变化时就会...
Oracle SCN(System Change Number)是Oracle数据库中的一个关键概念,它是数据库系统中记录所有更改的序列号,确保了数据的一致性和可恢复性。SCN是一个递增的数字,每次数据库发生事务性改变时,SCN都会增加。...
Oracle SCN(System Change Number)机制是Oracle数据库中用于跟踪和保证数据一致性的重要组成部分。SCN是一个不断递增的数字,代表了数据库中的时间线,它记录了每一次对数据库的修改。Oracle利用SCN来确定数据的...
Oracle SCN(System Change Number)机制是Oracle数据库中用于追踪和管理数据变化的关键组件,它确保了数据的一致性和完整性。SCN是一个递增的数字,它随着每次数据库的修改而增加,用来标记事务的顺序和状态。理解...
oracle scn机制(全)
福建电脑期刊2013年第2期的一篇论文 oracle scn增长过快问题研究和解决方案探索 易金旭
Oracle SCN (System Change Number) 和 TIMESTAMP 是两种不同的时间表示方式,它们在Oracle数据库中用于跟踪事务和数据的历史。SCN 是一个全局递增的数字,每次数据库发生改变时都会增加,它代表了数据库中的一个...
【Oracle SCN增长过快问题详解】 Oracle数据库中的System Change Number(SCN)是数据库内部用于追踪事务时间顺序的关键机制。SCN是一个递增的计数器,它在每次事务提交时都会增加,确保数据的一致性和可恢复性。...
### Oracle SCN 详解 #### 一、SCN概念解析 **SCN (System Change Number)** 是Oracle数据库中用于标识数据库状态变化的一种内部编号机制。它是一个递增的数字,每当数据库发生更新操作时,SCN就会增加。这个机制...
该软件是惜分飞(https://www.xifenfei.com)开发,仅用来查看和修改Oracle...特别是Oracle新版本中使用隐含参数,event,oradebug等方法无法推进Oracle SCN的情况下,使用该工具能够快速修改SCN,实现数据库启动成功.
Oracle SCN 详解 Oracle 中的 SCN(system change number)是一种时间号,类似于我们的北京时间,但是它的意义不同于北京时间。SCN 是 Oracle 用来记录所有操作的先后顺序的重要机制。 为什么 Oracle 不使用时间...
Oracle SCN(System Change Number)是Oracle数据库中的核心概念,它是一个独特的序列号,用来标识数据库在特定时刻提交的事务版本。SCN作为一个内部时钟,确保了数据库事务的顺序,并且是实现一致性读(Read ...