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;

时间: 2024-11-03 03:35:34

Oracle的SCN与检查点机制的相关文章

Oracle Share Pool内部管理机制

SHARE POOL利用堆(HEAP)的内存管理方式管理,在物理上由多个内存区(EXTENT)组成,内存区又由多个不同大小的CHUNK组成.而CHUNK又有可重用和空闲之分,并且它们分别有LRU LIST.FREE LIST.RESERVED LIST串联起来. 堆管理 Shared Pool是利用堆内存管理方式管理的(KGH:Kernel Generic Heap).从Oracle 9i开始,可以有多个最高级堆(TOP-LEVLE HEAP),最高级堆可以分成多个副堆,副堆下面还拥有子堆.堆和

[Oracle] Golden Gate - 概念和机制

Golden Gate(简称OGG)提供异构环境下交易数据的实时捕捉.变换.投递. OGG支持的异构环境有: OGG的特性: 对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制 以交易为单位复制,保证交易一致性:只同步已提交的数据 高性能 智能的交易重组和操作合并 使用数据库本地接口访问 并行处理体系 灵活的拓扑结构:支持一对一.一对多.多对一.多对多和双向复制等 支持数据过滤和转换 可以自定义基于表和行的过滤规则. 可以对实时数据执行灵活影射和变换. 提供数据压缩和加密:

后台使用oracle前台使用easyui分页机制

前台easyui 的datagrid中设置分页属性: pagination:true,//显示分页 pagePosition:'bottom',//分页栏位置 both 上下 bottom.top pageList:[12,24,36]//分页数据大小 后台java代码中 int page ,int rows写set. get方法. page = Integer.parseInt(request.getParameter("page")); rows = Integer.parseIn

实例恢复与Oracle的SCN

简单理解oracle的SCN就是自己的时间功能,好比linux系统自己的时间一样,oracle它也有自己的一套时间. 在你干净的关闭数据库时shutdown immediate或者使用alter system checkpoint都会把SCN的值写入4个位置,其中有3个位于controlfile内,还有1个位于datafile header内 controlfile里面的三个SCN分别是:1.system checkpoint SCN  2.datafile checkpoint SCN  3.

存储引擎之必知必会 -- 检查点机制

检查点机制 圆满事务:日志中记录了事务的开始和commit提交事务,这说明日志已经完整地记录了事务的所有更新活动. 中止事务:日志中记录了事务的开始记录,但没有日志的提交记录,这说明日志记录的事务没有最后提交. 数据库的故障及恢复机制都离不开日志文件.每次恢复过程都需要从头到尾扫描日志文件以确定哪些事务是圆满事务,哪些事务是中止事务,才能分别进行Redo或Undo操作. 设想一下,如果日志文件的内容很大,这样的扫描和恢复操作将耗费大量的资源.而且尽管一些圆满事务的结果已经写入数据库(不需要Red

【JDBC】使用JDBC连接Oracle数据库(JAVA反射机制)

db.properties文件 driverClassName=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@localhost:1521:xe username=system password=123456 db.properties JDBCUtilProperties.java文件 对数据连接和释放资源的封装, package com.xdl.util; import java.io.IOException; import java.io.I

ORACLE 利用SCN恢复误delete的表

--kg是误删除的表 SQL> select count(*) from kg; COUNT(*) ---------- 820861 SQL> delete from kg; 820861 rows deleted SQL> commit; Commit complete SQL> select count(*) from kg; COUNT(*) ---------- 0 SQL> rollback; Rollback complete SQL> select co

Oracle SCN机制解析

SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用.理解SCN的运作机制,可以帮助你更加深入地了解上述功能. 在理解SCN之前,我们先看下oracle事务中的数据变化是如何写入数据文件的: 1.事务开始: 2.在buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中: 3.事务修改buffer cache的数据块,该数据被

oracle之检查点(Checkpoint)

检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件.检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件.触发命令:svmrgrl>alter system checkpoint local;这条命令显示的触发一个局部检查点.2)全局检查点:所有实例(对应并行数据服务器)执行数据库所有所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件.触发命令svrmgrl>alter system