SCN是Oracle的内部时钟,用来反映数据库中所有变化,在运行过程中不断更新。SCN种类包括:

     (1)系统当前SCN
          
 
     (2)Checkpoint SCN(注意只会随着检查点的发生而被更新:但是在热备模式下,checkpoint时该SCN不变
          a.Stop SCN(保存在控制文件中,又称END SCN)
               实例正常运行时STOP SCN为空,当实例正常关闭时,oracle会在控制文件中记录下每个数据文件对应的STOP SCN号,用来再启动时检查控制文件中所有数据文件对应的STOP SCN号是否都存在并且一致,是则表示上一次实例关闭正常,所有数据文件对应的缓存数据都已同步到磁盘,故无需进行redo/undo实例恢复。否则若发现控制文件中有某数据文件对应的STOP SCN号为空,则表明上次实例关闭非正常,此次启动要进行实例恢复。因此STOP SCN号用来判断下次启动时是否需要进行实例恢复。(如果系统断电,那么控制文件中的STOP SCN还是为空)
               SQL>select name,last_change# from v$datafile;     --online的数据文件对应的last_change#都是空,offline的数据文件对应的last_change#有值
               SQL>shutdown immediate;
               SQL>startup mount;
               SQL>select name,last_change# from v$datafile;
     如下示例:
           
      首先通过select name,last_change# from v$datafile;查询到test01.dbf文件存在SCN号,是因为我们将该数据文件offline了,当我们online该数据文件时,报出该数据文件需要介质恢复,直接recover该数据文件即可。重新online该数据文件就不会有问题。重新执行select name,last_change# from v$datafile;时,该数据文件对应的SCN号就没有了。
**********************************************************************************************************************
         
 
          START SCN是我们判断是否需要介质恢复的唯一依据,介质恢复就是更新SCN号(关机时,控制文件中的stop SCN号就是copy的数据文件中start SCN号)。          
***********************************************************************************************************************
          
 
****************************************************************************************************************
          
 
总结:1,SCN分两大类:(1)系统当前SCN,用于记录用户对数据库的所有操作;(2)checkpoint SCN,只会随着检查点的刷新而被更新。
          2,checkpoint SCN又分为4小类,主要用户数据库开机时判断是否需要介质恢复和实例恢复。
          3,首先判断start SCN号用于判断开机时所有数据文件的一致性;stop SCN号用于判断是否正常关机(实例恢复);datafile checkpoint SCN号用于判断数据文件和控制文件的一致性;system checkpoint SCN用于判断控制文件自身的一致性。
 
补充:数据库open阶段,除了检查SCN外,还会检查一个数据,即检查点计数(Checkpoint CNT),而且这个检查点计数要第一个检查。

搞定Oracle SCN -system change number的更多相关文章

  1. gcc 高版本兼容低版本 技巧 :指定 -specs={自定义specs文件} 参数。可以搞定oracle安装问题

    如: #!/bin/sh /usr/bin/gcc-7 -specs=/usr/lib/gcc/x86_64-linux-gnu/jin.spec $* 该技巧很实用.这么久才发现,唉,不是专业搞某个 ...

  2. oracle最精简客户端(3个文件+1个path变量就搞定oracle客户端)

    oracle最精简客户端: network\admin\tnsnames.ora (自己新建)oci.dlloraocieill.dll 将oci.dll的路径加到path变量中就可以了 tnsnam ...

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

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

  4. Oracle SCN机制解析

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

  5. Oracle SCN 详解

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

  6. oracle 字段自增 两段代码搞定

    (这几天做了个小小课程设计时用的是oracle数据库,第一次用,发现oracle和我们以前用的sql server .mysql是有如此多不同的地方,下面是遇到的问题之一和解决方法,和大家分享下) 用 ...

  7. C# 连蒙带骗不知所以然的搞定USB下位机读写

    公司用了一台发卡机,usb接口,半双工,给了个dll,不支持线程操作,使得UI线程老卡. 懊恼了,想自己直接通过usb读写,各种百度,然后是无数的坑,最终搞定. 现将各种坑和我自己的某些猜想记录一下, ...

  8. CHUCK手把手带你搞定OPENSTACK

    一.OpenStack初探 1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运行自己的云计算和存储设施.Rackspace与NASA是最初重要 ...

  9. java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊

    java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...

随机推荐

  1. Java架构师需要掌握的技术栈

  2. mysql 乐观锁、悲观锁、共享锁,排它锁

    mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能 ...

  3. python学习笔记(七)模块

    一个python文件就是一个模块 1.标准模块 python自带的,不需要你安装的 2.第三方模块 需要安装,别人提供的,例:pip install radis 如果提示没有pip,把python下s ...

  4. php strtr()函数 语法

    php strtr()函数 语法 作用:转换字符串中的某些字符直线电机生产厂家 语法:strtr(string,from,to)或者strtr(string,array) 参数: 参数 描述 stri ...

  5. KMP字符串匹配模板

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next. (如果你不知道这是什么意思也不要问,去百度 ...

  6. vu项目中按F5刷新element菜单没有根据路由匹配菜单解决办法

    element组件的菜单中设置:default-active,这个是选择哪个菜单的 然后在created里边增加 因为每次刷新都是要经过这个的.注意data里边也要同步.

  7. 学习日记13、ajax同时提交from表单和多个参数

    if ($("form").valid()) { $.ajax({ url: "@Url.Action("EditCusAndCusCard")&qu ...

  8. 使用 localstorage 写入浏览器并获取

    写入:以字符串的形式写入 localStorage.setItem('data', JSON.stringify(arr)); 获取: 注意:一定要使JSON.parse转为对象才能取出来,不然是空的 ...

  9. UNITY崩溃的日志

    有关UNITY的日志,有两个路径. 1,一般日志路径:C:/Users/xxxx/ AppData/Local/Unity/Editor,此文件夹下有三个文件 ,如下图:Editor.log, Edi ...

  10. http://research.google.com/archive/mapreduce.html

    http://research.google.com/archive/mapreduce.html