LoginSignup
6
2

More than 1 year has passed since last update.

[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の戻り値が日本時間になっていることが確認できました。

6
2
0

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
  3. You can use dark theme
What you can do with signing up
6
2