ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle SCN 详解

oracle SCN 详解

原创 Linux操作系统 作者:JumFlow 时间:2011-06-03 16:47:35 0 删除 编辑

oracle SCN 详解

1. 什么是 scn 

        SCN(system change number) 就是系统改变号 , 是数据库非常重要的一种数据结构。  在数据库中scn 作为一种时钟机制来标记数据库动作,比如当 事物 的发生,数据库会用一个scn来标记它。同时这个SCN在数据库全局也是唯一的,它随时间的增长而增长除非重建数据。

      在数据库中,SCN可以说是无处不在,数据文件头, 控制文件, 数据块头 , 日志文件等等 都标记这 SCN。也正是这样,数据库的一致性维护和SCN密切相关。不管是数据的备份,恢复都是离不开SCN的。 

 

2. 获取当前的SNC

    随着oracle的版本的变化,获取 SNC也有相应的变化,下面是不同版本下 获取 SCN 的方法。

 

   1) 在 Oracle Database 10g  中获取当前SCN比较容易只要查看v$database视图就current_scn列就行。 

    SQL> select * from v$version ;

BANNER
------------------------------------------------------------
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for HPUX: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SQL> select current_scn from v$database ;

CURRENT_SCN
-----------
  102952636

 

    2) 在 oracle database 9i  中要麻烦些,v$database视图中没有current_scn这列,只有通过查询x$ktuxe视图来得到。 

    SQL> select * from v$version ;

BANNER
--------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE    9.2.0.1.0       Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SQL> select max(ktuxescnw*power(2,32)+ktuxescnb) scn from x$ktuxe  ;

       SCN
----------
    316755

(为了方便查询,建议将此查询创建为一个视图,前提是要你应用允许条件下。)

同时在 9i中也提供相应的包来查当前scn 。

SQL> select dbms_flashback.get_system_change_number from dual ;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                  317040

 

 

 

 

 

 

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25380220/viewspace-697133/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-03

  • 博文量
    72
  • 访问量
    185492