GAGA LIFE.

DBAブログ -APとロジックとAKがある-

Oracle 診断イベントのリスト

概要

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

確認方法

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環境では、以下のファイル(oerrの参照先)の番号10000-10999を
参照することでより詳細情報が取得可能です。

$ORACLE_HOME/rdbms/mesg/oraus.msg

参照方法

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

参考資料

有効になっている診断イベントを調べる方法(8.1.6〜10.2)(KROWN:38891) (Doc ID 1713266.1)