現在地

Oracle 製品 (DB、WLS、BI) のうるう秒に対する対応について

*以下は、サポート契約締結中のお客様に2015年4月号として配信しているサポートレターより一部抜粋して掲載しています。

平成 27 年(2015年)7 月 1 日(水)に 3 年ぶりの実施となる「うるう秒」について、弊社オラクルプロダクトサポートにも Oracle Database, Oracle WebLogic Server, Oracle Business Intelligence への影響のお問合せが増加しております。
そこで今回は、Oracle Database, Oracle WebLogic Server, Oracle Business Intelligence のうるう秒に対する対応についてご案内いたします。

「うるう秒」とは

うるう秒は、原子時計と天文時のずれを調整する仕組みで、両者のずれが 0.9 秒以内に保たれる様に実施されます。今回のうるう秒は現在のうるう秒が取り入れられた 1972 年以降 26 回目で、平日に実施されるのは平成 9 年以来、18 年ぶりのことだそうです。

「うるう秒」の調整とは
時刻は、かつて地球の公転・自転に基づく天文時(世界時)から決められていましたが、1958年より原子の振動を利用した原子時計(注)に基づく国際原子時が開始され、1秒の長さが非常に高精度なものとなった結果、原子時計に基づく時刻と天文時に基づく時刻との間でずれが生じるようになりました。
そこで、原子時計に基づく時刻を天文時とのずれが0.9秒以内におさまるように調整を行った時刻を世界の標準時(協定世界時)として使うことにしており、今回その調整を行うために「うるう秒」の挿入が行われるものです。
「うるう秒」の調整は1972年から数年に1回程度行われています。
(注)セシウム133原子の遷移周波数を使い、数十万年に1秒ずれるだけの高精度な時計

(総務省 「「うるう秒」挿入のお知らせ」より)

Oracle Database, Oracle WebLogic Server, Oracle Business Intelligence のうるう秒への対応について

結論から記載しますと、Oracle Database, Oracle WebLogic Server, Oracle Business Intelligence の各製品は OSより時刻を取得しておりますが、60 秒のハンドリングをすることが想定されていないため、うるう秒の取り扱いをサポートしておりません。
OS がうるう秒に対応していない(2015/7/1 8:59:60 を返さない)場合、実際の時刻よりシステム時刻が 1 秒進むこと以外に問題はございません。適宜時刻合わせを実施ください。
OS がうるう秒に対応している(2015/7/1 8:59:60 を返す)場合、うるう秒のタイミングで 60秒 を返さない様に設定してください。
OS がうるう秒に対応しており、かつ、うるう秒のタイミングで 60 秒を返す場合、予期しないエラー等が発生する可能性がございます。

参考)うるう秒として " 2015/7/1 8:59:60 " が Oracle Database に入った場合、以下のエラーを返します。

SQL> select to_date('2015/07/01/08:59:60','YYYY-MM-DD/HH:MI:SS') from dual;
select to_date('2015/07/01/08:59:60','YYYY-MM-DD/HH:MI:SS') from dual
               *
行1でエラーが発生しました。:
ORA-01852: 秒は0から59の間で指定する必要があります

なお、OS がうるう秒に対応しているか否かについては各 OS のベンダーにお問合せください。

時刻補正における、Oracle Database, Oracle WebLogic Server, Oracle Business Intelligence 製品に対する影響

OS がうるう秒に対応していない場合、今回のうるう秒によって、システム時刻が実際の時刻より 1 秒進むことになります。この時刻のずれを補正する場合の Oracle Database, Oracle WebLogic Server, Oracle Business Intelligence への影響について案内いたします。
まず、うるう秒に限らず時刻が戻ることは Oracle Database, Oracle WebLogic Server, Oracle Business Intelligence としては想定しておりません。そのため、NTP の同期方式として、時刻を戻すことなく調整する方式(slew)であれば、特に問題はございません。(※)
しかし、時刻を瞬間的に戻して調整する方式(step)では、予期しない動作となる可能性があります。

※ Oracle Business Intelligence (BIEE) ではセッション ID の生成にも OS の時刻を使用しております。
そのため、BIEEが稼働している際に時刻合わせを行った場合、予期しないセッションの切断等が発生する可能性などが懸念されるため、Oracle 社では BIEE を停止したうえでの時刻合わせを推奨いたしております。

OS 側の時刻補正の方法については、各 OS のベンダー、サポートへご確認ください。
直前になってあわてることのないように、早めに内容を確認いただくことをお勧めします。

(オラクル事業部 技術担当サポートセンターG 長瀬)