阅读本文前您首先需要了解一下SCN(系统改变号)它的英文全拼为System Change Number 它是数据库中非常重要的一个数据结构
SCN提供了Oracle的内部时钟机制可被看作逻辑时钟这对于恢复操作是至关重要的
注释Oracle 仅根据 SCN 执行恢复
它定义了数据库在某个确切时刻提交的版本在事物提交时它被赋予一个唯一的标示事物的SCN 一些人认为 SCN 是指 System Commit Number 而通常 SCN 在提交时才变化所以很多情况下
这两个名词经常被交替使用
究竟是哪个词其实对我们来说并不是最重要的重要的是我们知道 SCN 是 Oracle 内部的时钟机制 Oracle 通过 SCN 来维护数据库的一致性并通过SCN 实施 Oracle 至关重要的恢复机制
下面我们来介绍一下获得当前SCN的几种有效方式
一在Oraclei中可以使用dbms_flashbackget_system_change_number来获得
示例
SQL> select dbms_flashbackget_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER
二在Oraclei之前你可以通过查询x$ktuxe来获得
X$KTUXE[K]ernel [T]ransaction [U]ndo Transa[x]tion [E]ntry (table) SQL> select max(ktuxescnw*power()+ktuxescnb) from x$ktuxe;MAX(KTUXESCNW*POWER()+KTUXESCNB)