GAGA LIFE.

DBAブログ

Oracle 診断イベントのリスト

概要

Oracleデータベースで何らかの問題が発生した場合の調査のためにSR(Oracleサポート)より診断イベントの設定を依頼される場合があります。発生した問題によってSRが案内してくる診断イベントは異なりますが、そもそも診断イベントにはどのようなものがあるのかを確認方法を踏まえて確認しました。

確認方法

Eventは、ほとんど10000〜10999の範囲で番号が付与されています。以下のPL/SQLで上記範囲のイベントメッセージを出力しています。

SET SERVEROUTPUT ON
DECLARE
   err_msg VARCHAR2(150);
BEGIN
   dbms_output.enable (1000000);
   FOR err_num IN 10000..10999
   LOOP
     err_msg := SQLERRM (-err_num);
     IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN
       dbms_output.put_line (err_msg);
     END IF;
   END LOOP;
END;
/

UNIX環境では、以下のファイルの番号「10000-10999」を参照することでより詳細情報が取得可能になっています。

  $ORACLE_HOME/rdbms/mesg/oraus.msg

補足ですが、上記ファイルは、oerrの参照先です。

参照方法

event=10000
while [ $event -ne 10999 ]
do
   event=`expr $event + 1`
   oerr ora $event
done

なお、現在有効になっているイベントは以下で確認可能です。※この方法は、11gR1以降のバージョンで可能となっています。

oradebug eventdump [ session | process | system ]

実行例

SQL> alter session set events '10046 trace name context forever, level 12';
Session altered.
SQL> oradebug setmypid
Statement processed.
SQL> oradebug eventdump session
sql_trace level=12

参考資料

Optimizing Oracle Performance: A Practitioner's Guide to Optimizing Response Time

http://onefact.jp/wp/2015/05/31/oerr%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B/