RDS for Oracleにてタイムゾーンの変更がサポートされました
こんにちは。望月です。
昨日、OracleのRDSのタイムゾーンに関するブログを書きました。
・RDS for Oracleでのsysdateに要注意
ブログの内容としては「RDS for OracleではsysdateがUTCになるからしっかり対策しましょうねー」という話だったのですが、
本日のAWSアップデートにより、RDS for OracleのOSタイムゾーン変更がサポートされました!
- Amazon Web Services Blog - Amazon RDS for Oracle Database - New Database Version & Time Zone Option
- Release note
- RDS Developer Guide - Oracle Time Zone
なんとタイムリーな!!!
早速試してみた
タイムゾーンの変更は、Option Groupsの一つとして実装されています。RDSの画面から、Option Groupsをひとつ作ってみましょう。Option Groupsについては、公式ドキュメントを参照して下さい。既にOracleのOption Groupsが作られている場合は、このステップは飛ばしても大丈夫です。
次はOption GroupsにOptionを追加していきます。Option Groupsの一覧で、今作ったOption Groupsを選択し、[Add Option]をクリックしてみましょう。
この設定を行うと、既にOption Groupsがインスタンスに紐付いている場合は再起動がかかります。これからインスタンスを作成する際は、今作成したOption GroupsをDBインスタンスに関連付けて下さい。なお、db.t1.microクラスの場合、Default以外のOption Groupsを選択できない(=タイムゾーンを変更できない)ので注意して下さい。
再起動されたインスタンスに接続し、昨日のブログと同じSQLを実行してみました。
$ LANG=C date Tue Jan 14 09:20:32 JST 2014 $ sqlplus oracleuser/password@oracle.xxxxxxxxxxx.rds.ap-northeast-1.amazonaws.com:1521/orcl SQL*Plus: Release 11.2.0.3.0 Production on Tue Jan 14 09:20:34 2014 Copyright (c) 1982, 2012, Oracle. All rights reserved. Connected to: Oracle Database 11g Release 11.2.0.2.0 - 64bit Production SQL> select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2014-01-14 09:20:37 #<= JSTの時刻が取得できている SQL> exit Disconnected from Oracle Database 11g Release 11.2.0.2.0 - 64bit Production $
完璧ですね!
注意点
ドキュメントによると、このTimeZoneオプションは一度設定すると値の変更や削除ができなくなります。つまり、一度JSTで作成したDBインスタンスはUTC等の他タイムゾーンに切り替えることができなくなります。
また、OSのタイムゾーンが変更されることは、既存のシステムに大きな影響を与えることが予想されます。これからRDS for Oracleで構築する場合は問題無いと思いますが、既に稼働中のOracleインスタンスのタイムゾーン変更は、十分に検証を行ってから設定して下さい。
最後に
昨日の私のブログは、1日でDeprecatedになりました。