Database Support Blog

  • Oracle Database
2016.10.27

【Oracle Database】うるう秒の対応

うるう秒(閏秒)

うるう秒(閏秒)とは、世界時UT1に対して協定世界時(UTC)を±0.9秒以内に保つよう、1秒単位で追加/削除される秒です。次回のうるう秒の調整は平成29年(2017年)1月1日(日)に行われ、2017/01/01 08:59:60が挿入されることで元旦が1秒長くなります。

総務省:「うるう秒」挿入のお知らせ
URL: http://www.soumu.go.jp/menu_news/s-news/01tsushin03_02000177.html

平成29 年(2017 年)1月1日(日)午前8時59 分59 秒と午前9時00 分00 秒の間に「8時59 分60 秒」を挿入します。


弊社の過去のお問い合わせ履歴を確認しますと、うるう秒については実施の2ヶ月前~直前に対応の必要性についてのお問い合わせが増加する傾向があります。そこで、今回はうるう秒について紹介します。


Oracle Databaseでのうるう秒の対応

Oracle Databaseではうるう秒(2017/01/01 08:59:60)の扱いをサポートしていないため、Oracle Database側でうるう秒に備えた特別な対応は必要ありません。DBサーバのシステム時刻が実際の時刻より1秒進むのみです。

DBサーバ側のOSがうるう秒をサポートしており、アプリケーションがSELECT SYSDATEを使用している場合は、"2017/01/01 08:59:60"が戻る可能性があるため、そのようなデータが戻されても問題ないかアプリケーションをご確認ください。

また、アプリケーション側のOSがうるう秒をサポートしており、Oracle Database上で"2017/01/01 08:59:60"を扱うような処理を行う場合は、ORA-01852が発生する可能性があります。

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


OS側がうるう秒をサポートしている場合には、"2017/01/01/08:59:60"のデータをOracle Databaseで扱わないよう、事前にアプリケーションの調整をしておいてください。

うるう秒でずれたシステム時刻の調整はSlew方式で行う

OSがうるう秒をサポートしていない場合は、システム時刻が実際の時刻より1秒進むため時刻調整が必要です。時刻調整の方法としては、時刻を瞬間的に戻すStep方式と、時刻の進みを遅くすることで徐々に時刻を合わせるSlew方式があります。

システム時刻をStep方式で合わせる場合は時刻が逆進することになりますが、Oracle Databaseとしては時間が戻ることは想定されていないため、意図しない動作を行う可能性があります。

Oracle Databaseではデータの一貫性はSCNによって保証されていますが、UNDOの保持期間のように一部では時間で管理されている情報も存在します。システム時刻の調整を行う際には十分な注意が必要です。

うるう秒に限らず、大幅にシステム時刻がずれていないのであれば、時刻調整はStep方式ではなくSlew方式で行うことを推奨します。特にRAC環境の場合はノード間のハートビートの動作に影響する可能性があるため、クラスタが起動した状態でStep方式での時刻調整は行わないようにしましょう。

OSがうるう秒に対応しているかや、時刻調整の詳細についてはご利用のOSベンダーにご確認ください。


まとめ

冒頭でお伝えしたとおり、次回は平成29年(2017年)の元旦にうるう秒の調整が行われます。年明け早々にトラブル対応とならないよう、事前にOSがうるう秒をサポートしているかや、時刻合わせの方法を確認しておきましょう。

My Oracle Supportにログインできる方は以下のドキュメントに情報がまとまっていますので、併せてご確認ください。

Note 1710981.1(KROWN:33273)うるう秒について
Note 1704324.1(KROWN:16785) システム時刻の変更にともなう注意点

筆者情報

大野 高志

サービス事業部 サポートセンター

2007年にアシスト入社後、Oracle Databaseのサポート業務に従事。現在はサポート業務の傍ら、未解決のトラブルを一つでも多く減らせるよう、サポートセンターに蓄積されているノウハウを社内外に伝える活動を行っている。


■本記事の内容について
 本記事に記載されている製品およびサービス、定義及び条件は、特段の記載のない限り本記事執筆時点のものであり、予告なく変更になる可能性があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Cloud
  • Oracle Database
2025.12.12

Oracle AI World2025視察記

今年もオラクル社の年次イベント「Oracle AI World 2025」が開催され、アシストからも11名の社員がラスベガス現地で参加しました。 本記事では「Oracle AI World 2025 視察記」として「Oracle AI World 2025のハイライト」と「アシストの注目ポイント」を、Oracle AI World 2025全体の雰囲気とともにお伝えします。

  • Oracle Database
2025.12.08

【続・Blockchain Table入門】Oracle AI DB 26aiのV2が解く「運用のジレンマ」という鎖

Oracle AI Database 26aiでBlockchain TableのV2が実装されました。これは堅牢なガバナンスと開発・運用の柔軟性という相反する課題を両立させるものでありデータガバナンスやセキュリティを向上させます。V2はどのようにアップデートされたのかを動作検証しました。

  • Oracle Database
  • Oracle Cloud
2025.11.25

【OCI】BaseDBのクローン機能でデータベースのコピーを瞬時に実現する!

データベースの環境準備に時間を要していませんか?OCI BaseDBのクローン機能なら、検証環境を30分未満で作成可能です。本記事では、実際の操作手順から開発・テストでの活用法、コストやIP変更などの注意点までを画像付きで徹底解説します。

ページの先頭へ戻る