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/