Database Support Blog

  • Oracle Cloud
2021.09.08

再作成不要!Oracle CloudのDBシステムのタイム・ゾーン変更手順

Oracle Cloud Infrastructure(以降、OCI)でDBシステムを利用する場合、UTCがデフォルトのタイム・ゾーンとして選択され作成・起動されます。
現在は、OCIのアップグレードによりUTC以外のタイム・ゾーンを選択して作成することができますが、選択できることに気づかなったり、アップグレード前に作成されたDBシステムではUTCが設定されています。
オラクル社はUTCの使用を推奨していますが、お客様の管理業務やアプリケーションの観点などから、UTCから変更する必要もあるかと思います。

今回は、タイム・ゾーンの変更方法をご紹介します。


タイム・ゾーンの指定方法

DBシステムのタイム・ゾーンは、以下のように作成画面で選択することが可能です。

しかし、「拡張オプション」内の項目であるため、項目に気づかずにUTCで作成してしまい、意図したタイム・ゾーンに変更したいというケースがあります。
以降でタイム・ゾーン変更方法をご紹介します。


タイム・ゾーン変更のその前に

本題に入る前に、補足があります。それは、変更手順がDBシステム作成時に選択したストレージ管理方法によって変わることです。

今回は、デフォルトで選択される「Oracle Grid Infrastructure」を選択した環境における変更方法をご紹介します。


タイム・ゾーンの変更が必要な箇所と方法

Oracle Grid Infrastructureを選択した環境の場合、以下の三箇所を変更する必要があります。

 ・ホストOS
 ・Oracle Grid Infrastructure
 ・データベース

それでは、それぞれの変更方法を見てみましょう。


ホストOSの変更方法

まずは、ホストOSのタイム・ゾーンの変更です。
ホストOSの再起動は不要ですが、Oracle ClusterwareのCRSスタックの再起動が必要です。

1.ホストOSにopcユーザでログイン後、rootユーザにスイッチします。

 
 (opc) $ sudo su -
 

2.crsctlユーティリティを使用して、CRSスタックを停止します。

 
 #ここでは「19.0.0.0」の場合のパスとします
 (root) # /u01/app/19.0.0.0/grid/bin/crsctl stop crs
 

3.現在のタイム・ゾーンを確認し、任意のタイム・ゾーンに変更します。

 
 #現在の設定を確認します(ここでは「America/Los_Angeles」です)
 (root) # cat /etc/sysconfig/clock | grep ZONE
 ZONE="America/Los_Angeles"
 
 #ファイルをバックアップします
 (root) # cp -p /etc/sysconfig/clock /etc/sysconfig/clock.backup
 
 #設定を変更し、変更されたことを確認します(ここでは日本時間「Asia/Tokyo」に変更します)
 (root) # vi /etc/sysconfig/clock
 (root) # cat /etc/sysconfig/clock | grep ZONE
 ZONE="Asia/Tokyo"
 
 #現在のタイム・ゾーンを確認します(このタイミングでは、UTC形式のままです)
 (root) # date
 Fri Aug  6 22:30:18 UTC 2021
 
 #lnコマンドでリンクを変更します(「Tokyo /etc」の間の空白は必要です)
 (root) # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
 
 #再度、タイム・ゾーンを確認します(このタイミングで、JTS形式に変わっています)
 (root) # date
 Sat Aug  7 07:31:22 JST 2021
 

4.crsctlユーティリティを使用して、CRSスタックを起動します。

 
 (root) # /u01/app/19.0.0.0/grid/bin/crsctl start crs -wait
 

以上でホストOSのタイム・ゾーンの変更は完了です。


Oracle Grid Infrastructureの変更方法

次に、Oracle Grid Infrastructureのタイム・ゾーンの変更です。
Oracle ClusterwareのCRSスタックの再起動が必要です。

1.ホストOSと同様に、まずはCRSスタックを停止します。
2.「GRID_HOME/crs/install/s_crsconfig_<node_name>_env.txt」ファイルから、現在のタイム・ゾーンを”TZ”から確認し、任意のタイム・ゾーンに変更します。

 
 #ノード名「aaa」という環境の例です。現在は「UTC」が設定されています。
 (root) # cat /u01/app/19.0.0.0/grid/crs/install/s_crsconfig_aaa_env.txt | grep TZ=
 #   the appropriate time zone name. For example, TZ=America/New_York ※ここはコメントです
 TZ=UTC ※ここが変更箇所です
  
 #ファイルをバックアップします(画面表示上、改行しています。)
 (root) # cp -p /u01/app/19.0.0.0/grid/crs/install/s_crsconfig_aaa_env.txt 
 /u01/app/19.0.0.0/grid/crs/install/s_crsconfig_aaa_env.txt.backup
 
 
 #設定を変更し、変更されたことを確認します(ここでは日本時間「Asia/Tokyo」に変更します)
 (root) # vi /u01/app/19.0.0.0/grid/crs/install/s_crsconfig_aaa_env.txt 
 (root) # cat /u01/app/19.0.0.0/grid/crs/install/s_crsconfig_aaa_env.txt | grep TZ= 
 #   the appropriate time zone name. For example, TZ=America/New_York
 TZ=Asia/Tokyo ※変更されていることを確認します
 

3.ホストOSと同様に、CRSスタックを起動します。
以上でOracle Grid Infrastructureのタイム・ゾーンの変更は完了です。


データベースの変更方法

最後に、データベースのタイム・ゾーンの変更です。
DBシステムの場合、マルチテナント構成のデータベースが作成されますが、CDBとPDBの両方で変更が必要であり、変更の反映にデータベースインスタンスの再起動も必要です。

 
 #SQL*Plusでデータベースに接続します
 (oracle) $ sqlplus / as sysdba
 
 #CDBで現在のタイム・ゾーンを確認します(現在は”+00:00”です)
 SQL> SELECT dbtimezone FROM DUAL;
 DBTIME
 ------
 +00:00
 
 #タイム・ゾーンを”+09:00”に変更します
 SQL> ALTER DATABASE SET TIME_ZONE = '+09:00';
 Database altered.
 
 #PDBに接続します
 alter session set container=
 Session altered.
 
 #PDBで現在のタイム・ゾーンを確認します(現在は”+00:00”です)
 SQL> SELECT dbtimezone FROM DUAL;
 DBTIME
 ------
 +00:00
 
 #タイム・ゾーンを”+09:00”に変更します
 SQL> ALTER DATABASE SET TIME_ZONE = '+09:00';
 Database altered.
 
 #CDBに接続します
 SQL> alter session set container=;
 Session altered.
 
 #データベースインスタンスを再起動します
 SQL> shutdown immediate
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
  
 SQL> startup
 ORACLE instance started.
 Database mounted.
 Database opened.
 
 #タイム・ゾーンが”+09:00”に変更されたことを確認します
 SQL> SELECT dbtimezone FROM DUAL;
 DBTIME
 ------
 +09:00
  
 SQL> alter session set container=;
 Session altered.
  
 SQL> SELECT dbtimezone FROM DUAL;
 DBTIME
 ------
 +09:00
 

以上でデータベースのタイム・ゾーンの変更は完了です。


まとめ

今回は、DBシステムのタイム・ゾーンを変更する方法をご紹介しました。

作成直後であれば意図するタイム・ゾーンを選択して作り直すことも許されるかと思いますが、すでに運用を開始されているという場合には手動で変更する必要がありますので、以下マニュアルとあわせて、本記事をご参考いただければ幸いです。

DBシステム・タイム・ゾーン
 →プロビジョニング後のタイム・ゾーンの変更

 https://docs.oracle.com/ja-jp/iaas/Content/Database/References/timezones.htm


執筆者情報

いちじょう だいさく プロフィール画像

2018年アシスト入社後、Oracle Databaseフィールド業務に従事。
2019年からはOracle Cloudのフィールド業務とサポート業務を兼務中。

保有資格
・Oracle Cloud Infrastructure 2019 Certified Architect Associate


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
 文中の社名、商品名等は各社の商標または登録商標である場合があります。


Oracle Databaseライセンスのご相談ならアシスト

関連している記事

  • Oracle Database
  • Oracle Cloud
  • PostgreSQL
  • AWS
  • Exadata
2022.05.24

入社2年目がレポート!Cloud Database Days 2022技術セッションの見どころ

2022年5月26日~6月3日に開催される「Cloud Database Days 2022」。その中でも10個に分かれた技術セッションについて、ポイントを押さえてそれぞれご紹介いたします!

  • Oracle Cloud
2022.04.14

【Oracle Cloud】opcユーザー以外のssh接続を許可する方法

Oracle Cloud上にComputeインスタンスやDBシステムを構築すると、システム管理者ユーザーであるopcユーザーが作成されますが、お客様の中にはopcユーザー以外からSSH接続を必要とするケースもあるかと思います。今回は、opcユーザー以外のユーザーからSSH接続を行う方法をご紹介します。

  • Oracle Cloud
2022.03.10

【Oracle Cloud】Cloud Shellで簡単にComputeへシリアルコンソール接続する方法!

Oracle Cloudで構築したComputeインスタンスは、ハードウェア等インフラ周りはオラクル社が管理しますが、OSやアプリケーションはお客様が管理する必要があります。今回は、事前準備不要で簡単に操作可能なCloud Shellによるコンソール接続をご紹介します。

ページの先頭へ戻る