【Oracle Database】2017年1月1日実施「うるう秒」の対応は大丈夫ですか?:データベースサポート最前線の現場から(3)(1/2 ページ)
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は「2017年1月1日うるう秒の対応ポイント」を解説します。
来たる2017年1月1日(日)に、通算27回目の「うるう秒」が適用されます。日本標準時(JST)では、2017年1月1日の午前8時59分59秒と午前9時0分0秒の間に「8時59分“60”秒」が挿入され、2017年1月1日が1秒長くなります。
うるう秒(閏秒)とは、世界時 UT1(Universal Time 1)に対して協定世界時 UTC(Coordinated Universal Time)を±0.9秒以内に保つために、1秒単位で調整(追加/削除)される秒のことです。
(参考リンク)「うるう秒」挿入のお知らせ(総務省)
アシストのサポートセンターへの過去の問合せ履歴を確認すると、うるう秒実施日の約2カ月前から直前に、どう対応すべきかについての問い合わせが増加します。ちなみに前回は、2015年7月1日に+1秒の調整が行われましたが、皆さんはどう対応したでしょうか。今回はあらためて、2017年1月1日に向けたOracle Databaseにおける「うるう秒の対応手段」を紹介します。
Oracle Databaseにおけるうるう秒の対応
Oracle Databaseでは、うるう秒(2017/01/01 08:59:60)の扱いをサポートしておりません。そのためOracle Databaseそのものに限っては、うるう秒に備えた特別な対応は発生しません。ただしシステムとしては、データベースサーバのシステムクロックが実際の時刻より1秒進みます。時刻の同期が行われるまで、システムクロックは1秒進んでいる状態となります。
そのため、データベースサーバ側のOSがうるう秒をサポートしているシステムにおいて、アプリケーションが「SELECT SYSDATE」(OSのシステム日付/時刻を参照)を使用している場合には注意が必要です。具体的には、「2017/01/01 08:59:60」という通常では想定されていない値が戻ったときにどうなるか、などです。OSやデータベースなどの各種アプリケーションの情報収集や対応状況の確認をあらためて行ってください。
例えば、Oracle Database上で「2017/01/01 08:59:60」を扱う処理を行うと、「ORA-01852」エラーが発生する可能性があります。「秒」は0から59の間で指定する必要があり、挿入値の範囲外となるためです。
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の間で指定する必要があります
もし管理しているシステムが上記に該当する場合には、「"2017/01/01/08:59:60"のデータをOracle Databaseで扱わない」よう、事前にアプリケーションの調整をしておく必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 時を欠ける症状−うるう秒から考えるサステナビリティ
「Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします(編集部) - Linux時刻管理の仕組みと設定
本連載は、Linux 認定試験 LPICに対応しています。一般的なLinuxユーザーレベルのトピックは省略し、システム管理とサーバ管理の内容を取り上げています。また、LPIC対策だけでなく、関連するトピックについて系統的な理解を問う問題も出題しています。連載の特徴は、対象となるプログラムのバージョンを可能な限り明記していること、比較的新しくまとまった解説がまだ少ないトピック、重要だが理解しにくいトピックを優先して取り上げていることです。問題を解き、その解説を読むことにより実践でLinuxを活用できる力を身に付けます。 - 第1回 NTPとWindows時刻同期サービス
Windows OSは、複数のコンピュータ間でそれぞれの持っている時刻情報を同期させる機能を持っている。本連載ではWindowsシステム/ネットワークの管理者を対象に、この時刻同期機能の基本原理やWindows OSにおける設定方法、トラブルシューティングなどの方法を全4回で解説する。 - 障害発生! 問題切り分けはスピード勝負
Oracleデータベースの運用管理者は、突発的に直面するパフォーマンス障害にどうやって対処したらよいか。本連載は、非常に複雑なOracleのアーキテクチャに頭を悩ます管理者に向け、短時間で問題を切り分け、対処法を見つけるノウハウを紹介する。対象とするバージョンはOracle8から9iまでを基本とし、10gの情報は随時加えていく。(編集局) - それでは“ダメ”な「トラブル対応例」
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、「SQL Serverで起こりがちなトラブル」を厳選して、具体的な対処方法を紹介していきます。第1回目は「トラブルを適切に対処するための考え方」を解説します。 - パフォーマンス向上の最短コースを知る
本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局) - そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】