UNIFORM_LOG_TIMESTAMP_FORMAT 初期化パラメータについて

*以下は、サポート契約締結中のお客様に毎月配信しているサポートレターより一部抜粋して掲載しています。

12.2 以降では一部のログファイルのタイムスタンプの表示形式がかわりました。
この変更については UNIFORM_LOG_TIMESTAMP_FORMAT 初期化パラメータで従来の表示形式へ戻すことができます。
今回は上記初期化パラメータとパラメータの変更によって出力するログファイルの変化についてご紹介します。

12.2 以降のログファイルのタイムスタンプについて

12.1 までの環境ではローカル時間がタイムスタンプとして採用されていましたが、12.2以降のトレースファイルやアラートログのタイムスタンプはデフォルトではミリ秒の精度で世界標準時に標準化されています。

UNIFORM_LOG_TIMESTAMP_FORMAT パラメータについて

12.2 で変更されたタイムスタンプの設定を制御するのが UNIFORM_LOG_TIMESTAMP_FORMAT初期化パラメータです。
パラメータの概要と変更方法については以下のようになります。

UNIFORM_LOG_TIMESTAMP_FORMAT

設定値

true(デフォルト): UTC(世界協定時刻)と時差±で表示
false: 12.1 までと同じ形式のローカル時刻

* PDB単位や各RACインスタンス単位で異なる値を設定することはできません。

設定が有効になるログファイル

DATABASE と ASM のアラートログとトレースファイルのみが対象になります。
なお、上記以外のログファイル(リスナーや監査ログ等)は対象外となります。

変更方法

ALTER SYSTEM 文での動的変更可能です。
DATABASE インスタンスでは通常通り ALTER SYSTEM 文での変更となりますが、ASMインスタンスの場合で実施すると ORA-15021 が発生しますので、以下のように設定を行います。

DATABASE インスタンスの場合
alter system set UNIFORM_LOG_TIMESTAMP_FORMAT=false SCOPE=both;
ASM インスタンスの場合
alter system set "_disable_instance_params_check"=true scope=both;
alter system set UNIFORM_LOG_TIMESTAMP_FORMAT=false SCOPE=both;

* _disable_instance_params_check を false に戻した状態で再起動を行うと ORA-15021 が発生し起動ができません。初期化パラメータを true に変更後起動しなおしてください。

その他

マニュアルには以下のような記載があり、以前のバージョンの出力と混在する点が記載されています。

UNIFORM_LOG_TIMESTAMP_FORMATの値がFALSEの場合、トレース・ファイルでは、一部のタイムスタンプはローカル時間を示し、その他のタイムスタンプは世界標準時を示し、異なる精度を使用するタイムスタンプが混在します。

変更後の出力について

変更前後でのログファイルの比較をすると、以下のように変化します。

Database トレース・ファイル

変更前: db122_mmon_4664.trc

*** CLIENT DRIVER:() 2017-08-02T11:46:46.218040+09:00

AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1
dbkrfssm: mmon not open

*** 2017-08-02T11:46:49.279215+09:00
AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1

変更後: db122_mmon_1204.trc

*** CLIENT DRIVER:() 2017-08-02T15:42:32.128686+09:00 <<★12.2形式

AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1
dbkrfssm: mmon not open

*** 2017-08-02 15:42:35.248 <<★12.1形式
AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1

*** 2017-08-02T15:43:36.341399+09:00 <<★12.2形式
AUTO SGA: kmgs_parameter_update_timeout gen0 0 mmon alive 1

DATABASE アラート・ログ

変更前

2017-08-02T12:44:22.434544+09:00
Completed: ALTER DATABASE OPEN
2017-08-02T12:45:45.367289+09:00
Shared IO Pool defaulting to 96MB.
Trying to get it from Buffer Cache for process 4248.
:
:
2017-08-02T13:35:41.770630+09:00
Shutting down instance (immediate) (OS id: 7464)
Stopping background process SMCO
Shutting down instance: further logons disabled

変更後

Wed Aug 02 15:42:53 2017 <<★12.1形式
Completed: ALTER DATABASE OPEN
Wed Aug 02 15:43:32 2017 <<★12.1形式
Shared IO Pool defaulting to 96MB.
Trying to get it from Buffer Cache for process 1204.
:
:
2017-08-02T15:49:34.241849+09:00 <<★12.2形式
Thread 1 advanced to log sequence 9 (LGWR switch)
Current log# 3 seq# 9 mem# 0: C:\APP\XXXXX\ORADATA\DB122\REDO03.LOG
2017-08-02T16:50:59.606980+09:00 <<★12.2形式
Shutting down instance (immediate) (OS id: 7372)
Stopping background process SMCO

なお、混在が起こることはマニュアルに記載がありますが、どのような条件で上記のような混在がおこるのかは公開されていません。

まとめ

12.2以降ではログファイルのタイムスタンプの出力形式が変わり、以前の形式への変更は UNIFORM_LOG_TIMESTAMP_FORMAT 初期化パラメータの変更で対応する必要があります。 一部の出力形式を従来のものに変更したい場合は、検討して頂ければと思います。

(オラクル事業部 サポート・サービス担当 加藤)

UNIFORM_LOG_TIMESTAMP_FORMAT 初期化パラメータについて