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. linux权限管理—基本权限

    目录 Linux权限管理-基本权限 一.权限的基本概述 二.权限修改命令chmod 三.基础权限设置案例 四.属主属组修改命令chown Linux权限管理-基本权限 一.权限的基本概述 1.什么是权 ...

  2. Linux 实操(root密码重置 无法上网 安装xrdp)

    一个是显示器显示不咋地,一个是想远程连接Linux,这样就可以放到下面机房去了.所以想安装一个远程桌面链接.从网上搜了搜,好多.安装的时候需要root权限,但是密码忘了.好吧,开始捣鼓root密码 按 ...

  3. 2018ICPC银川 L Continuous Intervals 单调栈 线段树

    题意:给你一个序列,问你这个序列有多少个子区间,满足把区间里的数排序之后相邻两个数之间的差 <= 1 ? 思路:https://blog.csdn.net/u013534123/article/ ...

  4. 2018-11-01-weekly

    Algorithm 107. 二叉树的层次遍历 II What 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历).例如:给定二叉树 [3,9 ...

  5. alert(1) to win 12

  6. MAN VGEXTEND

    VGEXTEND(8)                                                        VGEXTEND(8) NAME/名称       vgexten ...

  7. java源码生成可运行jar

    参考资料:https://blog.csdn.net/whatday/article/details/54767187 源码目录层级如下:

  8. Flask学习笔记03之路由

    1. endpoint from flask import Flask, url_for # 实例化一个Flask对象 app = Flask(__name__) # 打印默认配置信息 # 引入开发环 ...

  9. redis学习一 String数据类型

    一:概述 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的 ...

  10. UE4使用Dll

    Part1. 创建和编译Dll VS中创建Visual C++ > Win32 Console Application 工程模板,选择Dll,并勾上”Empty Project”. 在Solut ...