概要
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;
/
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
while [ $event -ne 10999 ]
do
event=`expr $event + 1`
oerr ora $event
done
なお、現在有効になっているイベントは以下で確認可能です。
※この方法は、11gR1以降のバージョンで可能となっています。 eventdumpsession
実行例
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
Statement processed.
SQL> oradebug eventdump session
sql_trace level=12
参考資料
Optimizing Oracle Performance: A Practitioner's Guide to Optimizing Response Time
- 作者: Cary Millsap,Jeff Holt
- 出版社/メーカー: O'Reilly Media
- 発売日: 2013/02/21
- メディア: Kindle版
- この商品を含むブログを見る