微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 什么是SCN

什么是SCN

时间:06-23 来源:IT专家网 点击:
什么是SCN(system change number)?它在redo中是何时分配的?它是被分配给我们发出的每个DML或者DDL,还是只给已经提交的事务?在我们回滚事务的时候,会发生什么?

  Brian Peasland:在会话过程中,系统变更码(system change number)被赋值了很多次。每一条DML语句(包括select)会得到一个SCN。每一条DDL也会得到一个SCN。当语句开始的时候,它就收到一个SCN。赋值不会等待提交或者回滚。系统使用SCN来了解语句发给数据库的次序。一个较小的SCN在一个较大的SCN之前的某个点发生的。假设UserA对表EMP执行了UPDATE。这条UPDATE语句被赋予15734的SCN。在一段时间之后,UserB对表EMP执行了SELECT。此时,UserA还没有提交更新。这条SELECT被赋予16014的SCN。Oracle知道UserA还没有提交更新,不会阻止UserB对表进行查询,即使UserA锁住了表。Oracle为UserB创建了一份读一致性的镜像数据。Oracle知道UserB的SQL语句发生在UserA的UPDATE之后,并且使用SCN保证UserB看到正确的数据镜像。一旦UserA提交了事务,提交的语句(或者回滚)也被赋予它自己的一个SCN。这样,Oracle就会知道相对于其他的SQL语句,何时进行了提交。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top