IBM Support

[DB2 LUW] うるう秒が DB2 に与える影響

技術情報(FAQs)


質問

うるう秒が挿入されると、コンピューターのシステム時刻が協定世界時 (UTC) より 1 秒進んだ状態になります。
進んだシステム時刻を現地時刻に再調整するときに、システム時刻が 1 秒戻されることになりますが、DB2 への考慮点はありますか?

回答

協定世界時 (UTC) は原子時計をもとに決定されていますが、地球の自転に基づく世界時とずれが生じます。
このずれが 0.9 秒以上にならないよう、うるう秒の挿入が実施されることがあります。
次回のうるう秒挿入は、日本時間で 2017 年 1 月 1 日 午前 9 時に実施されます。
(8:59:59 秒の次に 8:59:60 秒が挿入されます。)

うるう秒が挿入されると、稼動しているコンピューターのシステム時刻は、協定世界時や現地時刻より 1 秒進んだ状態になります。
現地時刻と一致させるため、NTP などでシステム時刻を 1 秒戻す場合、DB2 には以下の影響があります。

a) Point-in-Time (PIT) を指定したロールフォワードで、戻した 1 秒を指定できない

DB2 のログは、トランザクションのタイムスタンプだけでなく、ログ順序番号 (LSN) で管理されているため、ロールフォワード自体は問題なく実行できます。
しかし、戻した 1 秒の間を指定した厳密な PIT のロールフォワードは実行できません。

b) モニター時刻がシステム時刻とずれる

DB2 のシステム・モニター機能 (イベント・モニターやスナップショット・モニターなど) は経過時間を正確に把握するため、インスタンス起動時に取得したシステム時刻と、起動時からの積算時間で時刻を管理しています。
このため、インスタンスの起動中にシステム時刻を変更すると、システム時刻とモニターが報告する時刻にずれが生じます。
たとえば、以下のような SQL は通常ほぼ同じ時刻を返しますが、システム時刻に従う CURRENT TIMESTAMP と、モニター時刻に従う SNAPSHOT_TIMESTAMP が約 1 秒ずれます。

select CURRENT_TIMESTAMP CURRENT_TIMESTAMP, SNAPSHOT_TIMESTAMP from table(SNAP_GET_DB('SAMPLE', NULL)) as t

CURRENT_TIMESTAMP          SNAPSHOT_TIMESTAMP
-------------------------- --------------------------
2017-01-01-10.00.04.588980 2017-01-01-10.00.05.588787

このずれはインスタンスの停止で解消できます。

c) HADR の通信が切れることがある

高可用性災害時リカバリー (HADR) が稼動しているときに、1 秒に満たない時間でもシステム時刻が戻されると HADR の通信が切れることがあります。

この問題は以下の APAR として報告されており、V9.7 FP4、V9.5 FP8、V9.1 FP10 以降で修正されています。

IC72330/IC72329/IC68989 HADR may disconnect with 'HADR_TIMEOUT' message after system clock is set backwards.

運用上の考慮点
- NTP 使用上の考慮点

NTP を slew モードで運用している場合、システム時刻が戻ることはありません。slew モードが上記の各現象に与える影響は以下の通りです。(slew モードでも微細な時刻戻りを伴う NTP システムでは、以下の記述は当てはまらないことがあります。)

a) Point-in-Time を指定したロールフォワードで、戻した 1 秒を指定できない
時刻の戻りが発生しないため、PIT で指定できない時間はなくなります。

b) モニター時刻がシステム時刻とずれる
最大 1 秒、少しずつシステム時刻とモニター時刻がずれるようになります。

c) HADR の通信が切れることがある
システム時刻が戻ることはないため、通信が切れる問題は発生しません。

- pureScale コンポーネント

pureScale を構成するコンポーネントの一部である TSAMP 3.2 および 4.1 (RSCT を含む)、GPFS 3.5 および Spectrum Scale 4.1 はうるう秒の影響を受けません。

- Linux の tzdata 使用上の考慮点

Linux の tzdata パッケージをインストールし、NTP を利用せずにうるう秒対応の TZ でうるう秒を調整する場合、localtime サブルーチンや date コマンドはうるう秒 (2017-01-01-08:59:60 秒) を挿入します。
DB2 はこのような時刻を想定していないため、タイムスタンプ列にこの時刻を挿入しようとすると SQL0181N で失敗します。また、DB2 の current timestamp 特殊レジスターは GMT を利用して時刻を返すため、システムのタイムゾーンにかかわらず、2016-12-31-23:59:59 の次に 23:59:60 を返します。このため、right/Asia/Tokyo タイムゾーンを設定したシステムにおいて、うるう秒挿入日の 0 時から 9 時まで、current stamp は localtime より1秒遅れた時刻を返します。

DB2 は right/* タイムゾーンによって実現される時系列をサポートしません。
Impact of Leap Second on DB2


この文書は DB2 が稼動するオペレーティング・システム自体の考慮点を網羅するものではありません。
各オペレーティング・システムの考慮点は、それぞれの提供元に確認してください。

関連情報
[DB2 LUW] システム・クロックの変更が DB2 に与える影響について (IM-10-00X)
2017 年うるう秒に関するガイド ~ソフトウェア製品~
2017 年うるう秒に関するガイド ~ハードウェア製品~
IBM 2015年うるう秒に関するガイド ハードウェア製品 ソフトウェア製品
RedHat: tzdata enhancement update

「うるう秒」挿入のお知らせ (2016年7月8日発表)
総務省
国立研究開発法人情報通信研究機構

お問合せ先
技術的な内容に関して、サービス契約のもと IBM サービス・ラインにお問い合わせください。
IBM サービス・ライン

変更履歴
2012/05/24 slew モードでは HADR TIMEOUT の問題は起きないと修正。
2015/02/19 tzdata の考慮点を追記。

Document information

More support for: DB2 for Linux, UNIX and Windows
OTHER - Uncategorised

Software version: 9.5, 9.7, 10.1, 10.5, 11.1

Operating system(s): AIX, HP-UX, Linux, Solaris, Windows

Reference #: 1589759

Modified date: 30 August 2016


Translate this page: