zoukankan      html  css  js  c++  java
  • Oracle的SCN与检查点机制

    Oracle的SCN与检查点机制

    SCN在Oracle的文档上以多种形式出现,一种是System Change Number,另一种是System Commit Number,在大多数情况下,Systems Change Numbers的定义更为确切。

    SCN(System Change Number)就是通常所说的系统改变号,是数据库中非常重要的一个数据结构,用以标识数据库在某个确切时刻提交的版本。在事务提交时,它被赋予一个唯一的标示事务的SCN。SCN同时被作为Oracle数据库的内部时钟机制,可以被看作逻辑时钟,每个数据库都有一个全局的SCN生成器。

    作为数据库内部的逻辑时钟,数据库事务依SCN而排序,Oracle也依据SCN来实现一致性读(Read Consistency)等重要数据库功能,另外对于分布式事务(Distributed Transactions),SCN也极为重要。SCN在数据库中是唯一的,并随时间而增加,但是可能并不连贯。除非重建数据库,SCN的值永远不会被重置为0。
    一直以来,对于SCN有很多争议,很多人认为SCN是指System Commit Number,而通常SCN在提交时才变化,所以很多时候,这两个名词经常在文档中反复出现。即使在Oracle的官方文档中,SCN也常以System Change/Commit Number两种形式出现。
    到底是哪个词其实不是最重要的,重要的是我们需要知道SCN是Oracle内部的时钟机制,Oracle通过SCN来维护数据库的一致性,并通过SCN实施Oracle至关重要的恢复机制。

    SCN在数据库中是无处不在的,常见的事务表、控制文件、数据文件头、日志文件、数据块头等都记录有SCN值。冠以不同前缀,SCN也有了不同的名称,比如检查点SCN(Checkpoint SCN)、Resetlogs SCN等。SCN由两部分组成,高位SCN Wrap由2 Bytes记录,低位SCN Base由4 Bytes记录,如图2-1所示。

    可以通过如下几种方式获得数据库的当前或近似SCN。

    select current_scn from v$database;

  • 相关阅读:
    MYSQL 日志参数与性能的关系
    mybatis 中 foreach collection的三种用法
    SqlServer查找引用存储过程的地方_字段在哪些表中
    ubuntu中sudo不用输入密码配置
    matlab练习程序(罗德里格斯变换)
    matlab练习程序(多边形扩展算法)
    matlab练习程序(生成gif图片)
    python3 mac环境 生成pdf
    requests 爬取 台州市 履行中状态的合同附件
    个人支付方案(免签约)-支付宝当面付
  • 原文地址:https://www.cnblogs.com/timlong/p/6240506.html
Copyright © 2011-2022 走看看