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. 10-基于TMS320C6678+XC7K325T的6U CPCI Full Camera Link图像处理平台

    基于TMS320C6678+XC7K325T的6U CPCI Full Camera Link图像处理平台 1.板卡概述 板卡由我公司自主研发,基于6UCPCI架构,处理板包含一片TI DSPTMS3 ...

  2. 脚本_统计 Linux 进程相关数量信息

    #!bin/bash#作者:liusingbon#功能:统计 Linux 进程相关数量信息,running(运行的进程),sleeping(睡眠中的进程),stoped(停止的进程),zombie(僵 ...

  3. luogu P3411 序列变换

    链接 P3411 序列变换 如果要最小化答案,那么就最大化不移动的数. 那么不移动的子序列一定是最后答案的一段连续区间,而移动的数我们是一定有办法把他们还原的. 设\(f_{i}\)表示\(i\)点的 ...

  4. 带你一文搞定 IO 流相关核心问题

    问:简单谈谈 Java IO 流各实现类的特性? 答:java.io 包下面的流基本都是装饰器模式的实现,提供了各种类型流操作的便携性,常见的流分类如下. 以二进制字节方式读写的流: InputStr ...

  5. WiFi密码新攻击破解方法,黑客攻破只需10秒

    近日,中国知名黑客安全组织东方联盟研究人员透露了一种新的WiFi黑客技术,使黑客更容易破解大多数现代路由器的WiFi密码,并且攻破只需要10秒,速度非常快. 方法是利用由流行的密码破解工具Hashca ...

  6. opencv 环境配置-windowsx64 +VS2017

    opencv版本为4.1.1官方最新版本, https://sourceforge.net/projects/opencvlibrary/ 先配置本地工程环境: 右键我的电脑-属性 将bin的路径添加 ...

  7. 使用django 的cache设置token的有效期

    from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import A ...

  8. 初步学习jQuery之事件

    事件 页面加载 在DOM中提供了load事件用于页面加载完毕之后执行机制,jQuery提供了ready()方法实现相似的功能,但是存在以下的区别.1.DOM中的load事件没有任何的简写形式,但是在j ...

  9. Vue子组件传递数据给父组件

    子组件通过this.$emit(event,data)传递数据到父组件 以下是例子: father.vue 父组件 <template> <div> <child @ne ...

  10. UVA 1045 最长公共子序列

    题目描述:求最长公共子序列 若给定序列X={x1,x2,...,xm},另一序列Z={z1,z2,...,zk},是X的子序列是指存在一个严格递增的下标序列{i1,i2,...,ik}使得对所以j=1 ...