Eine Sekunde mehr

Wir haben es nicht so oft, deswegen der Hinweis: Am Samstag springt die Zeit von 01:59:59 Uhr (CEST) nicht auf 02:00:00, sondern auf 01:59:60. Weitere Infos bei Wikipedia. Moderne Betriebssysteme sollten sicher sein, sofern

  • entweder ein ein NTP-Server verwendet wird, der “leap second pre-announcements” verschickt (also z.B. der firmeneigene NTP-Server, der sich mit den Servern der PTB abgleicht) oder
  • die entsprechenden Betriebssystem-Updates installiert sind (unter Linux typischerweise enthalten im tzdata-Paket).

Falls man NTP nicht einsetzt, kann man die Aktualität der tzdata-Informationen mit folgendem Befehl überprüfen:

LANG=C zdump -v right/UTC | less

Zu suchen ist dann nach den beiden folgenden Zeilen:

right/UTC  Sat Jun 30 23:59:60 2012 UTC = Sat Jun 30 23:59:60 2012 UTC isdst=0 gmtoff=0
right/UTC  Sun Jul  1 00:00:00 2012 UTC = Sun Jul  1 00:00:00 2012 UTC isdst=0 gmtoff=0

Update: Bei NTP wie er unter Linux üblicherweise implementiert ist gilt es, zwei Fälle zu beachten: Wenn die Zeit via Kernel Time Discipline geregelt wird (im Standardfall, also z.B. wenn man NICHT mit der Option -x startet) wird via Syscall ntp_adjtime() dem Kernel mitgeteilt, daß er eine Sekunde einfügen muß, was er dann auch tut. Wenn man die Kernel Time Discipline deaktiviert hat (tinker-Befehl mit Step/Stepout oder eben, siehe Oracle Clusterware, die -x-Option) dann wird die Zeit mit dem Syscall settimeofday() um eine Sekunde in die Vergangenheit gesetzt, und zwar irgendwann während der ersten Sekunde des neuen Monats. Das heißt aber nicht, daß die Systemzeit dann nach hinten springt, die steht nur für eine Sekunde still. Was das für unsere Oracle-Datenbanken bedeutet, sehen wir am Sonntag, hoffen wir mal, daß es besser läuft als 2009.