ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何获取SCN

如何获取SCN

原创 Linux操作系统 作者:杨奇龙 时间:2010-04-19 16:58:24 0 删除 编辑

SCN(System Change Number) ,也就是通常我们所说的系统改变号,是数据库中非常重要的一个数据结构。

它定义数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的 SCN 。 SCN 提供 Oracle 的内部时钟机制,
可被看作逻辑时钟,这对于恢复操作是至关重要的 ( Oracle 仅根据 SCN 执行恢复)。

 

9i之前:

    select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
x$ktuxe中查询出来的是当前结束事物最大SCN值,并不完全是系统当前SCN

9i之后:

    select dbms_flashback.get_system_change_number from dual;dbms_flashback查询出来的是系统当前的SCN值,可能是当前末结束事务所产生的SCN
dbms_flashback查询的SCN >= X$KTUXE查询的SCN 

对于上面这一点,结束事务 与 末结束事务做一个小结:

   1)  SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
       SCN
    ----------
       157421
 2) SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
        SCN
      ----------
       157421
    
   3)SQL> select dbms_flashback.get_system_change_number from dual;
 
   GET_SYSTEM_CHANGE_NUMBER
   ------------------------
                157441
     
  4) SQL> select dbms_flashback.get_system_change_number from dual;
    GET_SYSTEM_CHANGE_NUMBER
    ------------------------
                      157443
    
 5)  SQL> select dbms_flashback.get_system_change_number from dual;
     
  GET_SYSTEM_CHANGE_NUMBER
   ------------------------
                      157444
    
   6) SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
   
          SCN
   ----------
        157421  

通过上面简单查询可以发现:

1. dbms_flashback.get_system_change_number得出的SCN值一直在变化

2 x$ktuxe查询出来的scn值基本不变动

1) SQL> create table t as select *from all_objects;
 表已创建。
2)SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe;
        SCN
     ----------
        157511
     
 3)   SQL> select dbms_flashback.get_system_change_number from dual;
      GET_SYSTEM_CHANGE_NUMBER
    ------------------------
                     157513
经历一次事务之后,再次查询发现,x$ktuxe增加了,与dbms_flashback得到的scn基本一致(执行前后问题)这也验证了前面所说的 最近结束事务 与 末结束事务!!!

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

请登录后发表评论 登录
全部评论
MySQL DBA NoSQL DEVOPS

注册时间:2009-10-07

  • 博文量
    1026
  • 访问量
    8205978