SCN是什么

SCN是什么,第1张

SCN(System Change Number 简称 SCN)是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。

在Oracle中,有四种SCN,分别为:

1、系统检查点scn

当一个检查点动作完成后,Oracle就把系统检查点的SCN存储到控制文件中。

2、数据文件检查点scn

当一个检查点动作完成后,Oracle就把每个数据文件的scn单独存放在控制文件中。

3、启动scn

Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,因为它用于在数据库实例 启动时,检查是否需要执行数据库恢复。

4、终止scn

每个数据文件的终止scn都存储在控制文件中。

SCN的常识

SCN英文翻译:

有system change number和system commit number两种说法,表达的都是同一个意思,即SCN是数据库系统中顺序增长的一个数字,用来精确区别 *** 作的先后顺序。

其实 dblink同步的情况非常常见。

但是在Oracle的一些版本(如11.2.0.3)中有一个特别大的隐患。

可能会导致scn增长过快,无法同步,并且该症状会通过dblink传染到与之相关的所有数据库中。16年11月全国范围内就爆发了大范围的该事件。我当时所服务的客户也出现了很多这种故障。

经过我本人的测试,除了重建库之外无解,网上说的升级啥的可以解决其实无效(升级到11.2.0.4可以预防,但已经发生的不能解决)。

所以要分情况对待,如果该数据库版本有隐患且连接到它的其它数据库非常多非常复杂,dblink不建议。

可以搜索错误代码 ora-19706可以详细了解该问题的具体情况

有一家叫甲骨文的粮店,老板很严谨,为了防止仓库的粮食在买入卖出的时候发生问题,他制订一套流程,首先进出仓库的每一旦粮食都要求有一个编号(SCN),而且出入库之前必须先放到一个平台上(buffer cache),他命令仓库叫大头的伙计(datafile head)来首先记录这个编号,然后每隔一定的时间(log_checkpoint_timeout)或者库房平台上的粮食堆放到一定的数量或者仓库伙计换班(log swtich)的时候,一个叫“点点”(CKPT)的后院家奴就会把仓库伙计记录的信息拿给帐房先生同时还会催促码放在仓库平台的粮食入仓或者出仓(DBWn),帐房先生根据“点点”拿来的帐页记录到自己的帐本上。这样一来每天老板要和账房先生、仓库伙计进行账务的核对,一旦发现仓库伙计记录了而帐房先生没记录的情况就要求帐房先生把伙计记录的信息誊写到自己的帐本上,而如果发现帐房先生有记录了而仓库伙计这里却没有,那就麻烦大了,这说明仓库伙计有可能把之前的记录帐页给丢掉了,也就意味着粮食有丢失的危险,不过也不用过分担心,老板手下还有一个给力干将叫“SMON”, 是的,之所以给力就是因为是个洋和尚,外来的和尚会念经嘛。这个"SMON"的洋和尚会想办法去找这些编号的粮食,一旦找到就会让仓库伙计按照帐房先生的记录来重新同步自己的帐本,这事就算是完了,可一旦连“SMON”都搞不定,那么老板就头大了,生意就得关张,意味着有粮食可能会丢失。这时候要么从其他地方找来一摸一样的粮食充数,还要让帐房先生和仓库伙计的帐本都清空从0开始重新记录,以免又出现不同的情况。

不知道够不够白。。。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6754478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存