[Oracle] イベントトレース | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

Oracleではイベントを設定することで、問題発生時の原因調査などに有益なトレース情報を取得することができます。

(マニュアルには記載されていませんが、わりとよく知られているようです。)


たとえば、10046を設定すればSQLトレースを取得することができますし、

alter system set events '10046 trace name context forever, level 4';
1403を設定すればORA-01403(no data found.)発生時にトレースを取得することができます。

alter system set events '1403 trace name errorstack level 3';
※levelなどの設定を変えることで、取得できる情報も変わってきます。


ただし、これらの設定はパフォーマンスにも影響しますし、大量のトレースファイルを出力するため、必要な時に一時的に設定するにとどめるよう注意が必要です。

(実際に設定しっぱなしで、ディスクがあふれてしまったということがありました...)


設定は以下のようなコマンドを実行すれば解除することができます。

alter system set events '1403 trace name errorstack off';
alter system set events '10046 trace name context off';


なお、これらの設定がビューなどで確認できるのかはよくわかりません。

ただ、アラートログには設定/解除/動作の履歴が記録されるようですので、少なくともここから追うことはできそうです。

Fri Nov 02 15:39:44 2012
OS Pid: 4084 executed alter system set events '1403 trace name errorstack level 3'

Fri Nov 02 15:43:56 2012
Errors in file c:\app\oracle\diag\rdbms\orcl\orcl\trace\orcl_m000_3832.trc:
ORA-01403: データが見つかりません。
Fri Nov 02 15:43:58 2012
Trace dumping is performing id=[cdmp_20121102154358]

Fri Nov 02 16:14:42 2012
OS Pid: 4084 executed alter system set events '1403 trace name errorstack off'


※本来はサポートの指示にしたがって設定するものなので、サポートの指示なく設定する場合は自己責任ということで...