仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1081|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL编程:关于scn的了解

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-16 22:35:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有了rowbase的binlog后,我们来分析一下怎么实现闪回。平时的DML无非三种操作,增删改,先说三种操作的日志格式。
关于scn的了解
体系反省点scn(v$database(checkpoint_change#))
数据文件反省点(v$datafile(checkpoint_change#))
数据文件停止scn(v$datafile(last_change#))

数据文件中寄存的反省点
启动scn(v$datafile_header(checkpoint_change#)

1、体系反省点scn
当一个反省点举措完成以后,Oracle就把体系反省点的SCN存储到把持文件中。
selectcheckpoint_change#fromv$database
2、数据文件反省点scn
当一个反省点举措完成后,Oracle就把每一个数据文件的scn独自寄存在把持文件中。
selectname,checkpoint_change#fromv$datafile
3、启动scn
Oracle把这个反省点的scn存储在每一个数据文件的文件头中,这个值称为启动scn,
由于它用于在数据库实例启动时,反省是不是必要实行数据库恢复。
selectname,checkpoint_change#fromv$datafile_header
4、停止scn
每一个数据文件的停止scn都存储在把持文件中。
selectname,last_change#fromv$datafile
在一般的数据库操纵过程当中,一切正处于联机读写形式下的数据文件的停止scn都为null.
5、在数据库运转时代的scn值
在数据库翻开并运转以后,把持文件中的体系反省点、把持文件中的数据文件反省点scn
和每一个数据文件头中的启动scn都是不异的。把持文件中的每一个数据文件的停止scn都为null.

在平安封闭数据库的过程当中,体系会实行一个反省点举措,这时候一切数据文件的停止scn
城市设置成数据文件头中的谁人启动scn的值。在数据库从头启动的时分,
Oracle将文件头中的谁人启动scn与数据库文件反省点scn举行对照,
假如这两个值互相婚配,oracle接上去还要对照数据文件头中的启动scn和把持文件
中数据文件的停止scn。假如这两个值也分歧,就意味着一切数据块多已提交,一切
对数据库的修正都没有在封闭数据库的过程当中丧失,因而此次启动数据库的历程
也不必要任何恢复操纵,此时数据库就能够翻开了。当一切的数据库都翻开以后,
存储在把持文件中的数据文件停止scn的值再次被变动为null,
这暗示数据文件已翻开并可以一般利用了。
------------------------------------------
廓清几个观点
1)体系以后SCN并非在任何的数据库操纵产生时城市改动,SCN是在事件提交或回滚时改动,
2)在把持文件,数据文件头,数据块,日记文件头,日记文件changevector中都有SCN,但其感化各不不异数据文件头中包括了该数据文件的checkpointSCN,暗示给数据文件比来一次实行反省点操纵时的SCN.日记文件头中包括了lowscn,nextscn,暗示给日记文件包括有从lowscn到nextscn的redorecord.把持文件中包括了每一个数据文件的checkpointSCN,stopSCN,每一个日记文件的lowscn,nextscn.把持文件中checkpointscn同数据文件头中checkpointscn不异,除非数据文件被手工交换失落.把持文件中的lowscn,nextscn同日记文件中lowscn和nextscn不异在数据库一般运转时,把持文件中对应数据文件的stopSCN都是最年夜值.在一般封闭数据库的情形下,在封闭前会实行一次反省点事情当oracle会将数据缓冲区上的内容全体写回到磁盘中,然后更新把持文件中对应数据文件的stopSCN,使其即是checkpointSCN

但在非常当机的情形下,因为最初一次反省点未举行或举行两头被中断,因此在把持文件,就存在部分的数据文件stopSCN为最年夜值,在数据库从头启动后,会反省把持文件中对应每一个数据文件的stopSCN,假如stopSCN不即是把持文件中对应每一个数据文件的checkpointSCN,就会利用日记文件redo从checkpointSCN开首到stopSCN为止的全体数据库操纵.在定位究竟是利用哪个redolog文件时,就用到了日记文件头中的lowscn,nextscn,也就是说要利用的redolog的lowscn,nextscn必需包括数据文件重做所须的changevector.

在断定了哪一个数据文件须redo后,oracle会对照changevector中的SCN和数据文件数据块中的SCN,假如changevector的SCN小于数据块的scn,则跳过此changevector,不然redo
数据块中ITL中另有SCN,但它的感化是用于发生分歧性读快照

MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。
飘灵儿 该用户已被删除
7#
发表于 2015-3-22 21:02:36 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
灵魂腐蚀 该用户已被删除
6#
发表于 2015-3-16 06:50:40 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
因胸联盟 该用户已被删除
5#
发表于 2015-3-8 16:44:54 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
谁可相欹 该用户已被删除
地板
发表于 2015-2-26 19:27:50 | 只看该作者
呵呵,这就是偶想说的
第二个灵魂 该用户已被删除
板凳
发表于 2015-2-9 02:51:54 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
老尸 该用户已被删除
沙发
发表于 2015-2-3 13:32:09 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
分手快乐 该用户已被删除
楼主
发表于 2015-1-25 18:50:47 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 11:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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