小记scn head room

小记一下前段时间看的scn head room的问题。

1. scn的最大值。scn的表示是SCN_WRAP.SCN_BASE,最大值是 ffff.ffffffff,即65535.4294967295,也就是每当scn_base到ffffffff(或者说4294967295)的时候,scn wrap翻一位。因此最大值是:65535*4294967295=281470681677825(281万亿)

2. scn head room的问题,并不是到达了scn的最大值(281万亿),而是接近或者达到了当前最大可用scn。

3. 当前最大可用scn定义,是以1988年1月1号为起点,值是1,然后以每秒递增16384(也就是16k)。得出当前最大可用的scn值。

4. 如果当前的scn(即dbms_flashback.get_system_change_number ),达到了当前最大可用scn,此时就hang了,等待下一秒新的SCN上限。

5. 安全值是当前scn,如果以每秒16k的速度增长,到当前最大可用scn需要超过62天的时间。

2012年之后的补丁或者新版本的数据库,带了3个防止dblink传播高scn的隐含参数:

11.2.0.2之后,默认每秒递增的速率是32k(即_max_reasonable_scn_rate=32768),不再是16k。可以解决上面3的问题。

SCN Compatibility问题:
打过补丁或者12c的数据库,

可以Alter Database Set SCN Compatibility 3;但是降低需要重启。注意,3是96k

参考:
《SCN Head Room 原理全解析》
SCN Compatibility问题汇总-2019年6月23日

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据