作者:Lunar©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]
1988年Oracle发布了Oracle V6,这一版本中Oracle引入了热备的操作,同时SCN使用48位存储的算法写死在代码中,一直沿用至12c以前(12c开始使用8个bytes存储SCN)。由于ORACLE的SCN是由48位来表示的,因此最大值不能超过2的48次方
Oracle为了确保48位的SCN能够用足够长的时间(500年),于是对SCN做出了一个限制,就是每秒钟SCN最大增长不能超过16K,Oracle从1988年1月1日0点0分0秒为基准时间,到当前的秒钟数乘以16K,就是当前SCN的最大允许值这就是SCN HEADROOM。
因此SCN天花板 的计算公式就类似于:
(当前时间-19880101 000000)*16384–(current_scn),其中 16384是SCN的内部增长速度16k,这是代码中的硬限制。
这个限制在11.2.0.2版本之前,scn 的最大增长频率是16k,在11.2.0.2版本开始,为32k。
此行为是受到下面参数_max_reasonable_scn_rate控制的:
SQL> @paras
Enter value for paras: scn
old 6: AND x.ksppinm LIKE '%¶s%'
new 6: AND x.ksppinm LIKE '%scn%'
NAME VALUE DESCRIB
-------------------------------------------------- -------------------- -------
最后
以上就是畅快朋友最近收集整理的关于Oracle数据文件scn不一致,使用ORACDEBUG 修改 数据库SCN的全部内容,更多相关Oracle数据文件scn不一致,使用ORACDEBUG内容请搜索靠谱客的其他文章。
发表评论 取消回复