RDS for Oracleにてタイムゾーンの変更がサポートされました

2014.01.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。望月です。
昨日、OracleのRDSのタイムゾーンに関するブログを書きました。
RDS for Oracleでのsysdateに要注意

ブログの内容としては「RDS for OracleではsysdateがUTCになるからしっかり対策しましょうねー」という話だったのですが、
本日のAWSアップデートにより、RDS for OracleのOSタイムゾーン変更がサポートされました!

なんとタイムリーな!!!

早速試してみた

タイムゾーンの変更は、Option Groupsの一つとして実装されています。RDSの画面から、Option Groupsをひとつ作ってみましょう。Option Groupsについては、公式ドキュメントを参照して下さい。既にOracleのOption Groupsが作られている場合は、このステップは飛ばしても大丈夫です。

2014-01-14_0738

次はOption GroupsにOptionを追加していきます。Option Groupsの一覧で、今作ったOption Groupsを選択し、[Add Option]をクリックしてみましょう。

2014-01-14_0739

この設定を行うと、既に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になりました。