oracle SCN 详解

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25380220/viewspace-697133/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值