DBシステム・タイム・ゾーン

コンソールおよびAPIの「タイム・ゾーン」フィールドでは、UTC (デフォルト)以外のタイム・ゾーンを使用して、ベア・メタル、仮想マシンまたはExadata DBシステムを起動できます。UTCは使用をお薦めするタイム・ゾーンですが、データベース・クライアントとアプリケーション・ホストに共通のタイム・ゾーンを持つことで、データベース管理者の管理とトラブルシューティングを簡素化できます。

DBシステムの作成時に指定したタイム・ゾーンは、ホストおよびOracle Grid Infrastructure (システムにGrid Infrastructureがある場合)に適用され、データベース・ログ・ファイルのタイム・ゾーンを制御します。データベース自体のタイム・ゾーンには影響しませんが、データベースのタイム・ゾーンはタイムスタンプ・データ型にのみ影響します。データベースのタイム・ゾーンを手動で変更することもできますが、データ変換を回避し、データベース間のデータ転送時のパフォーマンスを改善するために、UTC (デフォルト)のまま使用することをお薦めします。この構成は、分散データベース、レプリケーションおよびエクスポート操作とインポート操作には特に重要です。

タイム・ゾーン・オプション

コンソールとAPIのどちらを使用する場合でも、選択可能なタイム・ゾーン・オプションが指定したリージョン・フォーマットで表示されます(America/Los_Angelesなど)。コンソールでは、UTC (ブラウザで検出されるタイム・ゾーン) (ブラウザでタイム・ゾーン検出がサポートされている場合)、または代替タイム・ゾーンを選択できます。

代替タイム・ゾーン(「別のタイム・ゾーンの選択」オプション)を指定するには、最初に「地域または国」フィールドで値を選択して、「タイム・ゾーン」フィールドで選択するタイム・ゾーンのリストを絞り込みます。America/Los_Angelesという例では、Americaが地域、Los_Angelesがタイム・ゾーンです。これら2つのフィールドに表示されるオプションは、Java.util.TimeZoneクラスおよびLinuxオペレーティング・システムの両方でサポートされるタイム・ゾーンとほぼ相関しています。探しているタイム・ゾーンが表示されていない場合は、「地域と国」フィールドで「その他」を選択してみてください。

ヒント

APIを使用していて、サポートされるタイム・ゾーンのリストを表示する場合は、コンソールでタイム・ゾーン・オプションを調べることができます。DBシステムのシェイプを選択した後で拡張オプションを表示すると、これらのオプションが「DBシステムの作成」ページに表示されます。

プロビジョニング後のタイム・ゾーンの変更

DBシステムの起動後にDBシステム・ホスト、Oracle Grid Infrastructureまたはデータベースのタイム・ゾーンを変更する必要がある場合は、次のステップに従います:

Grid Infrastructureを使用するDBシステム上のホストのタイム・ゾーンを変更するには
  1. rootとしてホスト・システムにログインします。
  2. すべてのコンピュート・ノードでCRSスタックを停止します。

    #Grid_Home/bin/crsctl stop crs
  3. 次のコマンドを実行して、現在のタイム・ゾーンを確認し、選択したタイム・ゾーンに変更します:

    
    $ cat /etc/sysconfig/clock
    ZONE="America/New_York"
    $ cp -p /etc/sysconfig/clock /etc/sysconfig/clock.20160629
    
    $ vi /etc/sysconfig/clock
    ZONE="Europe/Berlin"
    
    $ date
    Wed Jun 29 10:35:17 EDT 2016
    $ ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
    $ date
    Wed Jun 29 16:35:27 CEST 2016

    この例では、タイム・ゾーンがAmerica/New_YorkからEurope/Berlinに変更されました。

    ヒント

    有効なタイム・ゾーンのリストをホストに表示するには、ls -l /usr/share/zoneinfoコマンドを実行します。
  4. (オプション) Exadata DBシステムで、/opt/oracle.cellos/cell.confが正しいタイム・ゾーンを示していることを確認できます。この例では、このファイルのタイム・ゾーンエントリは<Timezone>Europe/Berlin</Timezone>です。
  5. すべてのコンピュート・ノードでCRSスタックを再起動します。

    #Grid_Home/bin/crsctl start crs
論路ボリューム・マネージャを使用するDBシステム上のホストのタイム・ゾーンを変更するには

ストレージ管理のためにGrid Infrastructureではなく論理ボリューム・マネージャを使用する、高速プロビジョニング仮想マシンDBシステムでこの手順を使用します。

  1. rootとしてホスト・システムにログインします。
  2. すべてのコンピュート・ノードでデータベースとリスナーを停止します。

    #sqlplus / as sysdba
    SQL> shutdown immediate
    #lsnrctl stop
  3. Oracle Database Homeのその他すべての実行中プロセスを停止します。
  4. 次のコマンドを実行して、現在のタイム・ゾーンを確認し、選択したタイム・ゾーンに変更します:

    
    $ cat /etc/sysconfig/clock
    ZONE="America/New_York"
    $ cp -p /etc/sysconfig/clock /etc/sysconfig/clock.20160629
    
    $ vi /etc/sysconfig/clock
    ZONE="Europe/Berlin"
    
    $ date
    Wed Jun 29 10:35:17 EDT 2016
    $ ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
    $ date
    Wed Jun 29 16:35:27 CEST 2016

    この例では、タイム・ゾーンがAmerica/New_YorkからEurope/Berlinに変更されました。

    ヒント

    有効なタイム・ゾーンのリストをホストに表示するには、ls -l /usr/share/zoneinfoコマンドを実行します。
  5. Oracleとして、すべてのコンピュート・ノードでリスナーとデータベースを再起動します。

    lsnrctl start
    sqlplus / as sysdba
    startup
    
Oracle Grid Infrastructureのタイム・ゾーンを変更するには

Oracle Grid Infrastructureのタイム・ゾーンによって、データベース・ログ・ファイルのタイム・ゾーンが決まります。このタイム・ゾーンは、GRID_HOME/crs/install/s_crsconfig_<node_name>_env.txt構成ファイルのTZプロパティを更新することで変更できます。

ノート

この手順は、ストレージ管理のためにGrid Infrastructureではなく論理ボリューム・マネージャを使用する、高速プロビジョニング仮想マシンDBシステムには適用されません。
  1. ホストにrootとしてログインし、CRSスタックがすべてのコンピュート・ノードで停止していることを確認します。Grid Infrastructureを使用するDBシステム上のホストのタイム・ゾーンを変更するにはを参照してください。
  2. GRID_HOME/crs/install/s_crsconfig_<node_name>_env.txtファイルの現在のタイム・ゾーン値を調べます。

    $ cat /u01/app/19.0.0.0/grid/crs/install/s_crsconfig_node1_env.txt
    #########################################################################
    #This file can be used to set values for the NLS_LANG and TZ environment
    #variables and to set resource limits for Oracle Clusterware and
    #Database processes.
    #1. The NLS_LANG environment variable determines the language and
    #   characterset used for messages. For example, a new value can be
    #   configured by setting NLS_LANG=JAPANESE_JAPAN.UTF8
    #2. The Time zone setting can be changed by setting the TZ entry to
    #   the appropriate time zone name. For example, TZ=America/New_York
    #3. Resource limits for stack size, open files and number of processes
    #   can be specified by modifying the appropriate entries.
    #
    #Do not modify this file except as documented above or under the
    #direction of Oracle Support Services.
    #########################################################################
    TZ=UTC
    NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    CRS_LIMIT_STACK=2048
    CRS_LIMIT_OPENFILE=65536
    CRS_LIMIT_NPROC=16384
    TNS_ADMIN=

    この例では、タイム・ゾーンはUTCに設定されています。

  3. 必要に応じてタイム・ゾーン値を変更します。クラスタ内のすべてのノードに対してこのタスクを実行します。

  4. すべてのコンピュート・ノードでCRSスタックを再起動します。

    #Grid_Home/bin/crsctl start crs

Grid Infrastructureのタイム・ゾーンの変更の詳細は、Grid Infrastructureのタイム・ゾーンの変更方法(ドキュメントID 1209444.1)を参照してください。

データベースのタイム・ゾーンを変更するには

ALTER DATABASE SET TIME_ZONEコマンドを使用して、データベースのタイム・ゾーンを変更します。このコマンドには、America/Los_Angelesなどの指定済リージョンか、UTCからの絶対オフセットを使用します。

この例では、タイム・ゾーンをUTCに設定しています:

ALTER DATABASE SET TIME_ZONE = '+00:00';

変更を有効にするには、データベースを再起動する必要があります。詳細は、データベースのタイム・ゾーンの設定を参照してください。