mysql scn_关于scn的理解
系统检查点scn(v$database(checkpoint_change#))
数据文件检查点(v$datafile(checkpoint_change#))
数据文件终止scn(v$datafile(last_change#))
数据文件中存放的检查点
启动scn (v$datafile_header(checkpoint_change#)
1、系统检查点scn
当一个检查点动作完成之后,Oracle就把系统检查点的SCN存储到控制文件中。
select checkpoint_change# from v$database
2、数据文件检查点scn
当一个检查点动作完成后,Oracle就把每个数据文件的scn单独存放在控制文件中。
select name,checkpoint_change# from v$datafile
3、启动scn
Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,
因为它用于在数据库实例启动时,检查是否需要
select name,checkpoint_change# from v$datafile_header
4、终止scn
每个数据文件的终止scn都存储在控制文件中。
select name,last_change# from v$datafile
在正常的数据库操作过程中,所有正处于联机读写模式下的数据文件的终止scn都为null.
5、在数据库运行期间的scn值
在数据库打开并运行之后,控制文件中的系统检查点、控制文件中的数据文件检查点scn
和每个数据文件头中的启动scn都是相同的。控制文件中的每个数据文件的终止scn都为null.
在安全关闭数据库的过程中,系统会执行一个检查点动作,这时所有数据文件的终止scn
都会设置
Oracle将文件头中的那个启动scn与数据库文件检查点scn进行比较,
如果这两个值相互匹配,oracle接下来还要比较数据文件头中的启动scn和控制文件
中数据文件的终止scn。如果这两个值也一致,就意味着所有数据块多已经提交,所有
对数据库的修改都没有在关闭数据库的过程中丢失,因此这次启动数据库的过程
也不需要任何恢复操作,此时数据库就可以打开了。当所有的数据库都打开之后,
这表示数据文件已经打开并能够正常使用了。
------------------------------------------
澄清几个概念
1)系统当前SCN并不是在任何的数据库操作发生时都会改变,SCN是在事务提交或回滚时改变,
2)在控制文件,数据文件头,数据块,日志文件头,日志文件change vector中都有SCN,但其作用各不相同数据文件头中包含了该数据文件的checkpoint SCN,表示给数据文件最近一次执行检查点操作时的SCN.日志文件头中包含了low scn,next scn,表示给日志
但在异常当机的情况下,由于最后一次
在确定了哪个数据文件须redo后,oracle会比较change vector中的SCN和数据文件数据块中的SCN,如果change vector的SCN小于数据块的scn,则跳过此change vector,否则redo
数据块中ITL中还有SCN,但它的作用是用于产生一致性读快照
mysql scn_关于scn的理解相关推荐
- mysql中的scn_关于SCN的理解(全面)
1.oracle正常运行时,control文件的SCN是个很大的数,与redo log文件.数据文件的SCN不同,正常关闭时,做完checkpoint后,三者的SCN值相同; Biti:日志文件中sc ...
- 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一 ...
- mysql 锁机制 mvcc_轻松理解MYSQL MVCC 实现机制
轻松理解MYSQL MVCC 实现机制 轻松理解MYSQL MVCC 实现机制 #### 1. MVCC简介 ##### 1.1 什么是MVCC MVCC是一种多版本并发控制机制. ##### 1.2 ...
- 【MySQL笔记】正确的理解MySQL的MVCC及实现原理
MVCC多版本并发控制 如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 !首先声明,MySQL 的测试环境是 5.7 前提概要 什么是 MVCC 什么是当前读和快照读 ...
- mysql临时文件和临时表_理解mysql的临时表和文件排序
我们经常看到Mysql的explain语句执行结果Extra字段有using temporary或者using filesort,本文主要是为了理解这两个短语的含义,从而有助于我们进行SQL语句优化. ...
- mysql中文乱码的一点理解
我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B. 如果你也遇到了这个问题,咱 ...
- MySQL笔记3:深入理解MySQL中的NULL
深入理解MySQL中的NULL NULL:表示没有值,无法比较两个没有值的量.
- 关于mysql触发器和存储过程的理解
内容源自:一篇很棒的 MySQL 触发器学习教程 一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊 ...
- mysql核心技术分析_深入理解MySQL核心技术
前言 第1章 MySQL的历史与架构 MySQL的历史 MySQL的架构 第2章 MySQL源代码基本要点 Unix Shell BitKeeper 准备系统:从BitKeeper树构建MySQL 从 ...
最新文章
- 组装简历必备的9大要件
- Mac电脑设置adb环境变量
- 朴素贝叶斯方法(Naive Bayes)原理和实现
- jenkins自动化构建iOS应用配置过程中遇到的问题
- 先天性脑部发育异常_儿童脑发育不良的3大“诱因”,若孩子出现这5种异常,要警惕...
- Java秒杀系统实战系列~分布式唯一ID生成订单编号
- apache实现手机访问www网站自动跳转到WAP站点
- URI和URL、URN的作用和区别
- web开源FlowPlayer视频播放器
- 组合数学+概率,期望+生成函数一文全精通
- win10计算机入门使用教程,win10系统使用教程_windows10基本使用教程图文步骤
- 使用Foxmail设置Gmail以及Hotmail
- js FOR循环效率问题
- A Game of Thrones(39)
- DBeaver小松鼠:数据库客户端界面工具DBeaver连接Hive
- 吉时利DMM6500数字万用表可视化数据,轻松发现测量趋势
- matlab2016 1935,李英冰农历
- [bzoj4889] [Tjoi2017]不勤劳的图书管理员
- 去掉最高分和最低分来评价成绩,用java实现
- windows7 bat自动批处理改变IP地址、DNS和代理设置