1. 系统SCN号
查询系统SCN号的方法:

select dbms_flashback.get_system_change_number from dual

commit后系统SCN号会增长,但是即使没有commit操作,因为有许多后台进程在运行,所以系统SCN号也会增长。

2. 检查点SCN

有4种检查点SCN,其中除了文件头中的启动SCN外,其他三种保存在控制文件中。可以通过:alter system set events ‘immediate trace name controlf level 10’导出控制文件到udump目录的跟踪文件,来查看控制文件的内容。

1) 系统检查点SCN(区别于上面的系统SCN,chekpoint发出后这些SCN号才受影响,如发出:alter system checkpoint),当一个检查点动作完成后,Oracle就把系统检查点的SCN存储到控制文件中,查询方法:

Select checkpoint_change# from v$database

2) 数据文件检查点SCN

当一个检查点动作完成后,Oracle就把每个数据文件的SCN号单独存放在控制文件中,查询方法:

Select checkpoint_change# from v$datafile

3) 文件头中的启动SCN

Oracle把这个检查点的SCN号存储在每一个数据文件的文件头中。主要用于数据库实例启动时,检查是否需要执行数据库恢复。查询方法:

Select name,chekpoint_change# from v$datafile_header

4) 终止SCN

每个数据文件的SCN号都存储在控制文件中,查询方法:

Select name,last_change# from v$datafile

在正常的数据库操作过程中,所有处于联机读写模式下的数据文件的终止SCN都为NULL。

3. 几个检查点SCN号的关系

1) 几个检查点SCN都相同:在数据库打开并运行之后,控制文件中的系统检查点SCN、控制文件中的数据文件检查点SCN及每个数据文件头中的启动SCN都是相同的,控制文件中的每个数据文件的终止SCN都是NULL。

2) 数据库正常关闭时,系统会执行一个检查点动作,这时所有数据文件的 终止SCN号会设置为数据文件头的那个启动SCN。数据库重新启动时,Oracle将数据文件头中的启动SCN与数据文件检查点SCN比较,如果这两个值匹配,Oracle接下来再比较数据文件头中的SCN和控制文件中数据文件的终止SCN,如果这个值也匹配,就意味着所有数据块已经提交,因此数据库不需要进行恢复,此时数据库直接打开。当所有的数据文件都打开之后,终止SCN再次被设置为NULL,表示数据文件已经打开并能够正常使用了。

3) 数据库非正常关闭(或称为实例崩溃)时,终止SCN不会被设置,依然为NULL,这可以通过把数据库启动至mount状态查询出来。这样Oracle通过这个信息就可以知道实例上次运行时崩溃了,检查点没有执行。这样重新启动时,Oracle会执行实例恢复工作,即先执行前滚、回滚操作,再把数据库打开。

4) 数据文件检查点SCN及系统检查点SCN比文件头启动SCN大:这时的情况是:系统发生介质故障,数据文件被以前的备份代替,控制文件中的数据文件检查点SCN肯定比文件头中的启动SCN要大,这样Oracle就知道要对这个文件进行介质恢复。这时要通过下面语句恢复数据库:

recover database ……

5) 系统检查点SCN比数据文件SCN及文件头启动SCN大:

有些表空间是只读的,这时控制文件中的系统检查点SCN号会不断增长,而数据文件SCN号和文件头中的启动SCN号会停止更新(直到表空间又设置为可读写),显然这时系统检查点SCN号会大于数据文件SCN和文件头启动SCN。

6) 系统检查点SCN及数据文件SCN比文件头启动SCN小:

在数据库恢复时,控制文件可能不是最新的,即把一个较早的控制文件还原为当前的控制文件,然后再执行恢复操作,这时控制文件中的系统检查点SCN和数据文件SCN可能比文件头的启动SCN小。这时恢复数据库要用下面命令:

recover database using Backup Controlfile或其他的恢复语句

oracle scn浅析的更多相关文章

  1. 【体系结构】有关Oracle SCN知识点的整理

    [体系结构]有关Oracle SCN知识点的整理 1  BLOG文档结构图   BLOG_Oracle_lhr_Oracle SCN的一点研究.pdf 2  前言部分 2.1  导读和注意事项 各位技 ...

  2. Oracle SCN机制解析

    SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用.理解SCN的运作机制 ...

  3. Oracle SCN 详解

    一.简介 scn,system change number 在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交事务分配一个唯一的scn,scn值是对数据库进行更改的逻辑时间点.sc ...

  4. 搞定Oracle SCN -system change number

    SCN是Oracle的内部时钟,用来反映数据库中所有变化,在运行过程中不断更新.SCN种类包括:      (1)系统当前SCN                   (2)Checkpoint SCN ...

  5. 【Oracle】浅析Oracle中的事务

    1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不 ...

  6. Oracle SCN与时间的相互转换

    1.SCN转换成时间 select scn_to_timestamp(current_scn) from v$database; 2.时间转换成SCN select timestamp_to_scn( ...

  7. oracle SCN推进恢复数据库 简单记录

    由于是在内网专用机器上操作,没有日志记录,下面做个简单记录:   前几天某供电局的的一个老数据库存储挂了,数据全部丢失,该库没有开归档,没接备份,怎么恢复? 由于存储损坏严重,从存储恢复不好搞. 好在 ...

  8. oracle之检查点(Checkpoint)

    检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件.检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件. ...

  9. Oracle IO问题解析(转)

    http://www.hellodba.com/reader.php?ID=76〈=cn 数据库的作用就是实现对数据的管理和查询.任何一个数据库系统,必然存在对数据的大量读或者写或者两中操作都大量存在 ...

随机推荐

  1. 使用Linux静态库

    查看静态库.a文件包含的内容用下面的命令解压: ar x libgdal.a 然后就可以查看文件了: ls adler32.o cpl_recode.o dted_create.o gdalpamra ...

  2. pomelo

    简介 Pomelo 是基于 Node.js 的高性能.分布式游戏服务器框架.它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复劳动和底层逻辑的开发.Pomelo 不 ...

  3. HDU 4521 小明系列问题——小明序列 (线段树维护DP)

    题目地址:HDU 4521 基本思路是DP.找前面数的最大值时能够用线段树来维护节省时间. 因为间隔要大于d. 所以能够用一个队列来延迟更新,来保证每次询问到的都是d个之前的. 代码例如以下: #in ...

  4. hdu 5007 水 弦

    http://acm.hdu.edu.cn/showproblem.php?pid=5007 纯粹的联系String的substr 什么时候substr拦截比写短话 string te; int n; ...

  5. OFbiz--HelloWorld

    上篇博客<OFbiz--简单介绍>我们介绍了OFbiz是什么,以下我们就開始用OFbiz开发我们的第一个程序--HelloWorld. 过程例如以下: 首先在hot-deploy下新建文件 ...

  6. Your Job Is Not to Write Code

    I am lucky enough to work with a small team of fantastic engineers who truly care about their custom ...

  7. .Net将多个DLL打包为一个DLL(ILMerge)

    在做.Net底层编码过程中,为了功能独立,有可能会生成多个DLL,引用时非常不便.这方面微软提供了一个ILMerge工具原版DOS工具,可以将多个DLL合并成一个.下载完成后需要安装一下,然后通过DO ...

  8. Android中的一些基础知识(二)

    这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...

  9. JavaSE学习总结第18天_集合框架4

      18.01 Map集合概述和特点 Map接口概述:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值 Map接口和Collection接口的不同 1.Map是双列的,Coll ...

  10. python--data type

    1.Python中常见的数据类型有: 数据类型    内建函数 整型    int(),long() 浮点型    float() 字符串型    str() 列表    list() 元组    t ...