LoginSignup
1

[OCI]最新版:Autonomous Databaseでsysdate、systimestampが日本時間を返すようにする方法

Last updated at Posted at 2022-10-12

はじめに

Autonomous DatabaaseでSYSDATE_AT_DBTIMEZONEがALTER SYSTEMで設定できるようになったということで、早速試してみました。

従来はALTER SESSIONのみの対応だったため、sysdate、systimestampが日本時間を返すようにするにはログオントリガーによるALTER SESSION文の実行等が必要でしたが、今回のアップデートにより、トリガーの作成等が不要になりました。

1. 事前確認

dateコマンドで現在時刻を確認します。

[opc@tools ~]$ date
Wed Oct 12 11:01:13 JST 2022
[opc@tools ~]$

SQL*PlusやDatabase Actions等のクライアントからadminユーザとしてAutonomous Databaseに接続します。

[opc@tools ~]$ sqlplus admin/adminユーザのパスワード@adb_medium

SQL*Plus: Release 19.0.0.0.0 - Production on 水 10月 12 11:02:15 2022
Version 19.16.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0
に接続されました。
SQL> 

sysdateとsystimestampの戻り値を確認します。

SQL> SELECT systimestamp FROM dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
22-10-12 02:02:38.812911 +00:00

SQL> SELECT TO_CHAR(sysdate,'YYYY/MM/DD HH24:MI:SS') FROM dual;

TO_CHAR(SYSDATE,'YY
-------------------
2022/10/12 02:03:42

SQL> 

プロビジョニング後のデフォルトの状態のAutonomous Databaseでは、sysdate、systimestampの戻り値がUTCになっています。

2. sysdate、systimestampが日本時間を返すようにするための設定

ALTER DATABASE SET TIME_ZONE文で、Autonomous Databaseのタイムゾーンを日本のタイムゾーン(+9:00)に設定します。

SQL> ALTER DATABASE SET TIME_ZONE='+09:00';

データベースが変更されました。

SQL> 

ALTER SYSTEM SET SYSDATE_AT_DBTIMEZONE文でSYSDATE_AT_DBTIMEZONEパラメータをTRUEに設定します。
この設定により、Autonomous Databaseがsysdateとsystimestampをデータベースのタイムゾーンで返すようになります。

SQL> ALTER SYSTEM SET SYSDATE_AT_DBTIMEZONE=TRUE;

システムが変更されました。

SQL> 

SQL*Plusを終了します。

SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0との接続が切断されました。
[opc@tools ~]$ 

設定を反映するために、Autonomous Databaseを再起動します。

3. 動作確認

再度、現在時刻を確認します。

[opc@tools ~]$ date
Wed Oct 12 11:07:37 JST 2022
[opc@tools ~]$ 

SQL*PlusやDatabase Actions等のクライアントからAutonomous Databaseに接続します。

[opc@tools ~]$ sqlplus admin/adminユーザのパスワード@adb_medium

SQL*Plus: Release 19.0.0.0.0 - Production on 水 10月 12 11:07:41 2022
Version 19.16.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

最終正常ログイン時間: 水 10月 12 2022 11:07:01 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.1.0
に接続されました。
SQL> 

改めて、sysdateとsystimestampの戻り値を確認します。

SQL> SELECT systimestamp FROM dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
22-10-12 11:07:48.582872 +09:00

SQL> SELECT TO_CHAR(sysdate,'YYYY/MM/DD HH24:MI:SS') FROM dual;

TO_CHAR(SYSDATE,'YY
-------------------
2022/10/12 11:07:53

SQL>

sysdate、systimestampの戻り値が日本時間になっていることが確認できました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1