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のフィールド業務とサポート業務を兼務中 ...show more


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

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Cloud
  • Oracle Database
2024.10.11

Oracle Cloud VMware Solutionを構築してみました!

前回の記事でOCVSの概要やメリットをお伝えしました。 本記事では実際にOCVSを構築する手順、および作成したvCenterへ実際に接続する手順をお伝えします!

  • Oracle Cloud
2024.09.19

OCIに構築したWindowsサーバーの管理者ユーザーのパスワードリセット方法 ~その②~

本記事では「インスタンス・コンソール接続」で、より簡単にパスワードをリセットする方法をご紹介します。

  • Oracle Cloud
2024.09.10

管理者ユーザー必見!OCI IAMポリシーでwhere句を使い条件式を設定する方法

OCI IAMポリシーは、where句を使った条件式を使用することで、柔軟な権限付与が可能になります。今回は、where句による条件式の設定例およびwhere句の有無による違いについてご紹介します。

ページの先頭へ戻る