多くの国は DST の変更に従っていません。デフォルトでは、DST 時間の変更により、システム時間や実行中のデータベース時間さえも変更されるように構成されています。この投稿では、Linux サーバーで DST を無効にしてタイムゾーンを変更する手順の概要を説明します。
この例では、時間はブラジルの国ごとに設定され、タイムゾーンは GST-3 です。
関連する OS ファイル:
/etc/sysconfig/clock /etc/localtime
ディレクトリ /usr/share/zoneinfo/Etc を見ると、 サーバーでは、国別、さらには国内のタイムゾーン別のサブディレクトリが表示されます。ターゲット ホストのディレクトリとサブファイルを特定する必要があります。
この例では、ブラジルの東海岸、GST-3:00 にいます。ハードコーディングされた DST とは異なる zoneinfo ファイルがあります:
GMT GMT0 GMT-0 GMT+0 GMT-1 GMT+1 GMT-2 GMT+2 GMT-3 GMT+3 GMT-4 GMT+4 GMT-5 GMT+5 GMT-6 GMT+6 GMT-7 GMT+7 GMT-8 GMT+8 GMT-9 GMT+9 GMT-10 GMT+10 GMT-11 GMT+11 GMT-12 GMT+12 GMT-13 GMT-14
したがって、それらのディレクトリ/ファイルは次のようになります:/usr/share/zoneinfo/Et/GMT-3
1. ファイル /etc/sysconfig/clock を変更します 読む:
# vi /etc/sysconfig/clock ZONE="Etc/GMT-3" UTC=true ARC=false
2. 次の手順に従って、ファイル/リンク /etc/localtime を正しく設定します。 :
# cd /etc # rm /etc/localtime # ln -s /usr/share/zoneinfo/Etc/GMT-3 /etc/localtime # ls -al localtime # date
上記の「ls -la localtime」コマンドは、ファイル /etc/localtime を /usr/share/zoneinfo/Etc/GMT-3 へのシンボリック リンクとして表示する必要があります。また、「date」コマンドは、ブラジル東部 GST-3:00 の正しい時刻を返す必要があります。
3. データベースの場合 - DB OS 所有者が「TZ」セットの環境変数を持っていないことだけを確認する必要があります。データベースの起動時 (TZ 変数が設定されていない場合) は、OS 時間を DB 時間として使用します。
– DB ユーザーとして接続して実行:
# env |grep -i TZ
上記のコマンドの出力には、OS で「TZ=」として設定されているものは何も表示されません。タイムゾーンがすでに設定されている場合は、Oracle Db ユーザーのプロファイルを変更して設定を解除する必要があります。