« Windows还能删什么-ServicePackFiles or dllcache | Blog首页 | 今天将成为一个纪念日 »
Oracle与Linux/Unix下的时间处理
链接:https://www.eygle.com/archives/2007/03/linuxunix_timer.html
在Linux/Unix上,Oracle在很多地方都从系统取得时间。
记录一下Linux/Unix上的时间处理:
UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。
目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以后,负值则表示1970年以前。我们可以很简单地计算出其时间领域:
2^31/86400(s) = 24855.13481(天) ~ 68.0958(年)
1970+68.0958 = 2038.0958
1970-68.0958 = 1901.9042
时间领域为[1901.9042,2038.0958]。
准确的时间为2038年一月十八日星期一晚上十点十四分七秒。那一刻,时间将会转为负数,变成1901年十二月十三日黑色星期五下午三点四十五分五十二秒,然後Jason就会跑出来用斧头砸掉您的电脑。
这就是所谓的UNIX 2038 BUG,或者您也可戏称为Jason hatchet bug。在大部份的UNIX上,并没有所谓Y2K问题,不过都有2038年问题。
在一些64位元的平台上,例如Digital Alpha、SGI、Sparc等等,则用64位元来表示时间。
2^63/86400 ~ 1E14(天) ~ 2.92E11(年)
大约是292亿年。
因此,使用64位元的电脑可能会有Armageddon bug的问题。届时位於猎户座旋臂的太阳,已经是黑矮星或暗黑物质,猎户座旋臂大概也已经被重力波震断,银河系大概则已经变成小型似星体了。
虽然许多人认为UNIX的2038年问题会随着科技的进步,而将电脑逐步汰换成64位元电脑,因此无须担心。但我个人相信,在2038年,依然会有许多状况出现。因为,就事实而言,目前许多UNIX系统都有足够的能力服役到2038年而毫无问题。因此,如果有意添购电脑主机,而且有预期会使用到那个时候,最好是选购64位元电脑,确认只有世界末日问题(除非您想要把资料流传给下一个宇宙,那就要另当别论了)。
以上资料转引自网络。
-The End-
历史上的今天...
>> 2017-03-11文章:
>> 2016-03-11文章:
>> 2011-03-11文章:
>> 2009-03-11文章:
>> 2008-03-11文章:
By eygle on 2007-03-11 19:24 | Comments (6) | Internal | 1370 |
这个世纪的资料留到下个宇宙,不知道是不是古董啊
一定是了!超级古董。
因为,就事实而言,目前许多UNIX系统都有足够的能力服役到2038年而毫无问题
------- 一般硬件服务器服役超过5年 可靠性就比较差了,一般不大会做关键应用,如果超过10年还敢放心的使用…… 那算厉害了。
再者,时间过去10年,那服务器恐怕不管是cpu 还是内存还是硬盘还是io方面都难以满足时代的需要了,在财务上也早就报废了。 所以这句话说的实在有点扯。 31年,现在谁要是还在用 2007-31=1976 年的服务器来提供商业应用那才是笑话。
顺便再几句:
如果服务器在使用5年后还在提供相同的服务,除了少数投资比较大保修要求高的服务器外,对于大多数不曾升级的unix服务器而言,那么基本说明该业务并没有显著的增长,或者该业务逐渐成为很少关注的业务。 但投资再大的关键业务,10年服务器也应该更新换代了,即使不考虑性能和扩展性问题,可靠性肯定是个大问题。
我记录一下这个是因为Unix/Linux的计时问题。
因为C的计时起点是1970年1月1日起,Oracle有很多地方时间取自操作系统,所以很多Bug可能会出现,类似以前有过的497天的bug:
http://www.eygle.com/archives/2004/11/job_can_not_execute_auto.html
最近写作的过程中发现了很多好玩的东西。
喵
有点意思哈