IT中的闰秒问题

简介: 虽然闰秒的考验已经结束了,不少IT人都为这一秒付出了很大的代价。 我也是在周末知道闰秒的说法,自己听到时也是一知半解,原本以为是个很新鲜的名词,看着微信朋友圈和微信群里大家都在热烈讨论,因为都是oracle圈子的,大家讨论的更多关注点都在数据库层面了。
虽然闰秒的考验已经结束了,不少IT人都为这一秒付出了很大的代价。
我也是在周末知道闰秒的说法,自己听到时也是一知半解,原本以为是个很新鲜的名词,看着微信朋友圈和微信群里大家都在热烈讨论,因为都是oracle圈子的,大家讨论的更多关注点都在数据库层面了。
 讨论比较多的说法是:
这个问题将影响部分开启ntp服务的Linux操作系统——会导致Linux内核Crash!Linux kernel是在2.6.18-164.e15之后的版本中解决了这个问题。换句话说,Linux kernel低于2.6.18-164的Linux系统,无论是什么公司的Linux都将受到影响。闰秒产生后,由于NTP同步时间,则对于10.2.0.4 (不包括)之前的RAC系统, 存在BUG 5015469 和BUG 6022204 可能在一定场景下会导致节点重启。
参考oracle 官方文档,          Leap seconds (extra second in a year) and impact on the Oracle database. (文档 ID 730795.1)
建议解决办法:在6月30日停掉所有Linux及Oracle版本在上述影响范围内的Oracle RAC数据库服务器的NTP网络时间同步服务,到7月1日零点以后再重新打开。该方法对应用系统无影响(只是短时间内不自动校时罢了,服务器自己的时间精度短时间内足够应付一般应用)。

自己也潮了一把。也顺便看看公司是否也有相应的防范措施,结果一查看邮件历史,真是让人大跌眼镜。公司早在今年1月份就已经明确发出邮件,而且讨论的邮件列表已经很长了。着实让我感慨了一把。
官方结构的宣布是在1月5日左右。http://datacenter.iers.org/web/guest/eop/-/somos/5Rgv/latest/16
To authorities responsible for the measurement and distribution of time                                         


                                   UTC TIME STEP
                            on the 1st of July 2015
                      

 A positive leap second will be introduced at the end of June 2015.
 The sequence of dates of the UTC second markers will be:		
		
                          2015 June 30,     23h 59m 59s
                          2015 June 30,     23h 59m 60s
                          2015 July  1,      0h  0m  0s
所以可以很明显的看到,时间会多出一秒来。关于闰秒,也简单说几句,因为自己确实是文化水平不够:)。闰秒是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),会使世界时(民用时)和原子时之间相差超过到±0.9秒时,就把世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒)
当然还有一些数据来看看,可能还有点意思。
下面是闰秒实施的一些时间情况,都是正闰秒。看到这我就在想,下一次是什么时候呢,结果百度了一大圈,没有任何收获,最后又认真读了读闰秒的百科,才发现闰秒的添加频率是不固定的,有时一年添加两次闰秒,有时7年添加一次闰秒,而这一次添加闰秒的时间是4年,如此“漂浮不定”,大体意思应该是说取决于地球的转速了。这样来看以后可能还有一些这种补丁要做。
实施年份
6月30日23:59:60
12月31日23:59:60
实施年份
6月30日23:59:60
12月31日23:59:60
1972年
+1秒
+1秒
1989年
——
+1秒
1973年
——
+1秒
1990年
——
+1秒
1974年
——
+1秒
1992年
+1秒
——
1975年
——
+1秒
1993年
+1秒
——
1976年
——
+1秒
1994年
+1秒
——
1977年
——
+1秒
1995年
——
+1秒
1978年
——
+1秒
1997年
+1秒
——
1979年
——
+1秒
1998年
——
+1秒
1981年
+1秒
——
2005年
——
+1秒
1982年
+1秒
——
2008年
——
+1秒
1983年
+1秒
——
2012年
+1秒
——
1985年
+1秒
—— 2015年 +1秒 ——
大概了解了一下闰秒,当然从IT层面来看,是不是只有 2.6.18-164.e15之后的才不会有影响呢。以redhat为例,在不同的版本中,其实还是有一些不同。

Required Kernel Updates 

RHEL 4

RHEL 4 Update 8  - kernel-2.6.9-89.EL

建议升级为RHEL 4 update 9 – kernel-2.6.9- 100
RHEL 5.x

5.x: Kernel must be updated to a release >=kernel-2.6.18-164.el5

RHEL 6.x minimum required patch levels:

6.1: kernel-2.6.32-131.30.2

6.2: kernel-2.6.32-220.25.1.el6

6.3: kernel-2.6.32-279.5.2

6.4 and later already contain the patch.

7.x: currently not affected
各大厂商都会或多或少的影响到,在2012年很多互联网公司就受到很大的影响。
所以这次的闰秒时间应该是格外重视。
redhat官方的讨论文章。 https://access.redhat.com/articles/15145      
                                  https://rhn.redhat.com/errata/RHEA-2015-0141.html
HP 官方的讨论。    
http://h30499.www3.hp.com/t5/General/HP-Support-Statement-for-XNTPD-Leap-Second-Processing/td-p/3663790?notmigrated#.VZOQjpWKDcs

IBM的官方讨论     http://www-03.ibm.com/support/techdocs/atsmastr.nsf/5cb5ed706d254a8186256c71006d2e0a/f592455a33db567086257a35005d4028/$FILE/IBM%20AIX%20Oracle%20Database%20Leap%20Second%20REDER%20%2030JUN2012.pdf
 
从数据库层面,在Oracle RAC 11.1.0.7版本基于AIX和Solaris时,如果使用了集群,在闰秒问题发生时,很可能会出现莫名其妙的重启情况,所以还是强烈建议打上对应的补丁。metalink的文章还是很值得推荐的。 Leap seconds (extra second in a year)   a nd  impact on the Oracle database. (文档 ID 730795.1)
从这一点来看,很多问题和我们都是紧密相关的,处理问题也需要与时俱进,能够前瞻的预见问题和分析排查,就能在出现的问题的时候更加从容一些。

目录
相关文章
|
15天前
|
Unix
UTC时间戳与北京时间转换
UTC时间戳与北京时间转换
48 2
|
3月前
|
小程序
获取本月1号0时间 获取本周一的0点时间
获取本月1号0时间 获取本周一的0点时间
|
8月前
获取未来时间年月日
获取未来时间年月日
|
XML 安全 调度
时间戳:互联网上的日期和时间
日期和时间格式在 Internet 上引起了很多混乱和互操作性问题。本文档解决了在 Internet 协议中表示和使用日期和时间时遇到的许多问题,并提出了改进一致性和互操作性的建议。
651 0
时间戳:互联网上的日期和时间
|
Unix
遇到的各种时间类型:UTC时间、GMT时间、本地时间、Unix时间戳
每次遇到各种时间傻傻分不清,特意记录一下,给自己提个醒。
220 0
|
弹性计算 运维 关系型数据库
听过闰年闰月,可你听过闰秒吗?
闰年闰月大家都知道,可是你听说过闰秒这回事情吗?
听过闰年闰月,可你听过闰秒吗?
1185. 一周中的第几天 : 简单日期统计模拟题
1185. 一周中的第几天 : 简单日期统计模拟题
|
Linux Shell
Linux 获取前一天日期、前一个月日期
获取前一天日期的方法 .. 写SHELL时,有时候很有用的.. linux下 前一天的日期 date -d "1 day ago" +"%y%m%d" 前一个月的日期 date -d "1 month ago" +"%y%m%d" 类似的还有 date...
2617 0