什么是SCN?SCN有什么用?这些问题百度谷歌很多讲解,这里不赘述。
我在纠结的是SCN的计算问题。
在好多文章中都提到了SCN的最大值的计算方法是power(2,48)【在Oracle12.2之前都是用6Bytes记录的,从12.2开始改用8Bytes】。
我的问题是:用6Bytes为什么用power(2,48)来计算呢?
首先,需要搞清楚power()函数的意义。
power是用来计算指定底数(number)的乘幂(power)。语法:power(number,power)。
第二,要知道为什么是用2作底数。
一般来说,n比特的信息量可以表现出2的n次方种选择。
根据规定,1Byte(B) = 8bits(b)。
【Byte意为“字节”,bit意为“位”或“比特”】
1bit=2^1=2
10bits=2^10=1024
2Bytes=2^(8×2)=65536
1个位的信息量等于2的1次方,1个字节的信息容量等于2的8次方。
因此:
6Bytes=2^(8×6)=281,474,976,710,656
使用Oracle的函数即为:power(2,48)。