DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 977|回复: 0
打印 上一主题 下一主题

[待整理] 什么是SCN

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 15:14:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
什么是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语句,何时进行了提交。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-15 15:43 , 耗时 0.090231 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表