SCN
简单说一下scn,问了tom,他是这样说的:“the system change number (SCN) is Oracle's clock- every time we commit, the clock increments. The SCN just marks a consistent point in time in the database.”
比较核心的一点就是,SCN会增长,那么啥时候会是个头呢?ORACLE声称每一套数据库的SCN再怎么涨,都可以使用500年。但是从2019年6月开始,ORACLE开始使用scn新机制,这个新机制增加了SCN增长速率,会使得SCN更快的增长,大概率是陡增哦。
当然增长速率变大,SCN容量也会增加,后者是根据前者算出来的,即scn rate 最大增长可达96kb,远超之前的32kb,如果库与库之间没有dblink链接存在,那么没问题;但是如果库与库之间存在dblink链接,而且两个库的版本不同,比方说A库启用了新的SCN机制,而B库未启用新的SCN机制,那么A库的scn rate最大可增长96KB,B库的scn rate最大可增长32KB,当事务提交需要同步SCN时,以两库中最大的SCN值为准,这样一来,B库的SCN值会与A库SCN值同步,实现跳跃式增长,很容易就到达天花板,很难活到500岁。
当然了,不是所有版本的数据库都受到影响,受影响的版本有:12.1.0.1、11.2.0.3、11.1.0.7 、10.2.0.5
怎么办?打补丁,这个补丁打上去就一劳永逸了吗?不是的
这个补丁的作用是什么?
这些补丁增加了数据库当前最大SCN(system change number)的限制。
在任何时间点上,数据库都会计算一个数据库能够使用的最大SCN值,这个值是基于从1988年开始到现在经历的时间长度(单位秒)计算得出的,这个被称作数据库当前最大SCN限制值。做这个限制的目的是让数据库的SCN随着时间稳定增长,保证任何数据库的SCN都可以使用500年。
应用补丁只是允许数据库有一个更高的“SCN 速率”,从而数据库会有更高的SCN阀值,这也会让应用了补丁的数据库可以支持更多的事务量,是以前数据库版本的很多倍。
请注意,上面推荐的补丁,只是增加当前SCN阀值,当前SCN值不受影响。如果您的数据库在事务上没有大的变化,那么当前SCN仍然低于最大SCN限制值,并且在应用了上面补丁的数据库和没有上面补丁的数据库间使用DBLINK,也没有问题。应用了上面的补丁,只是保证了万一您的事务有大的变化,也不会影响DBLINK 使用。
应用了上面的补丁后,从2019年6月23日开始,当前最大SCN 限制值就会改变。
打哪个PSU?怎么打?
重要通告: 2019 年 6 月之前-对于 12.1.0.1, 11.2.0.3 以及 11.2.0.3 之前版本的数据库需要应用的补丁和采取的操作 (文档 ID 2519571.1)
Mark:一定要看ReadMe,ReadMe万岁!