エラー・メッセージとトラブル・シューティング

エラーメッセージとトラブルシューティング

トラブルシューティング

トラブルシューティング用トレースファイルの取得

ロック情報の取得

ネットワークサービストレースの取得

Error Message

概要

オラクルはエラーコードでエラーを識別している。

最初の準備

バージョン互換性の確認

エラーメッセージ一覧

ORA-0 - ORA-847 jp
ORA-910 - ORA-1497 jp
ORA-1500 - ORA-2098 jp
ORA-2140 - ORA-4099 jp
ORA-4930 - ORA-7499 jp
ORA-7500 - ORA-9859 jp
ORA-9870 - ORA-12100 jp
ORA-12150 - ORA-12236 jp
ORA-12315 - ORA-12354 jp
ORA-12400 - ORA-12497 jp
ORA-12500 - ORA-12699 jp
ORA-12700 - ORA-13990 jp
ORA-14000 - ORA-15605 jp
ORA-16000 - ORA-19400 jp
ORA-19500 - ORA-19960 jp
ORA-19999 - ORA-24279 jp
ORA-24280 - ORA-27550 jp
ORA-28000 - ORA-28674 jp
NZE-28750 - NZE-29249 jp
ORA-29250 - ORA-30996 jp
ORA-31000 - ORA-32775 jp
ORA-32800 - ORA-32857 jp
ORA-33000 - ORA-37999 jp
ORA-38290 - ORA-39962 jp
ORA-41000 - ORA-43610 jp
ORA-41100 - ORA-42399 jp
NZE-43000 - NZE-43210 jp
ORA-43750 - ORA-44913 jp
ORA-46000 - ORA-46180 jp
ORA-47000 - ORA-47999 jp
DIA-48100 - DIA-51316 jp
ORA-53000 to ORA-5436 jp
ORA-54500 - ORA-56974 jp
ORA-57000 - ORA-57000 jp
ORA-61000 - ORA-62500 jp
EXP-0 - EXP-113 jp
IMP-0 - IMP-401 jp
SQL*Loader-100 - SQL*Loader-3120 jp
KUP-552 - KUP-1121 jp
UDE-1 - UDE-53 jp
UDI-1 - UDI-53 jp
DBV-200 - DBV-201 jp
NID-1 - NID-604 jp
DGM-1690 - DGM-179 jp
LCD-100 - LCD-219 jp
OCI-601 - OCI-31199 jp
QSM-501 - QSM-3120 jp
RMAN-550 - RMAN-2512 jp
LRM-100 - LRM-123 jp
LFI-2 - LFI-1523 jp
PLS-49 - PLS-1916 jp
PLW-5000 - PLW-7206 jp
AMD-100 - AMD-160 jp
CLSR-1 - CLSR-6507 jp
CLSS-1 - CLSS-3202 jp
CRS-184 - CRS-2292 jp
EVM-1 - EVM-901 jp
CLST-1 - CLST-3203 jp
CLSD-1001 - CLSD-2009 jp
PROC-1 - PROC-106 jp
PROT-1 - PROT-807 jp
TNS-0 - TNS-12699 jp
NNC-1 - NNC-501 jp
NNO-50 - NNO-854 jp
NNL-1 - NNL-1078 jp
NPL-100 - NPL-420 jp
NNF-1 - NNF-4009 jp
NMP-1 - NMP-11 jp
NCR-1 - NCR-4028 jp
O2F-301 - O2F-341 jp
O2I-101 - O2I-133 jp
O2U-200 - O2U-212 jp
PCB-1 - PCB-903 jp
PCC-1 - PCC-1515 jp
PCC-2010 - PCC-2460 jp
SQL-1075 - SQL-2158 jp
AUD-611 - AUD-809 jp
IMG-1 - IMG-2014 jp
VID-611 - VID-721 jp
DRG-10 - DRG-5235 jp
LPX-0 - LPX-1093 jp
LSX-1 - LSX-344 jp
PGA-2900 - PGA-2214 jp
PGU-100 - PGU-5101 jp

ORA-4031 ORA-04031
ORA-18008 ORA-08104
ORA-1041 ORA-01041

バグ

bug:6814520
bug:5761185

エラー検出

キーワードによる自動監視

Oracle従来のエラーコード

ORA-
NZE-
DIA-
EXP-
IMP-
SQL*Loader-
KUP-
UDE-
UDI-
DBV-
NID-
DGM-
LCD-
OCI-
QSM-
RMAN-
LRM-
LFI-
PLS-
PLW-
AMD-
CLSR-
CLSS-
CRS-
EVM-
CLST-
CLSD-
PROC-
PROT-
TNS-
NNC-
NNO-
NNL-
NPL-
NNF-
NMP-
NCR-
O2F-
O2I-
O2U-
PCB-
PCC-
SQL-
AUD-
IMG-
VID-
DRG-
LPX-
LSX-
PGA-
PGU-

OSのエラーコード

  • 戻り値 != 0
  • Linux-x86_64 Error:
  • rm: cannot remove

Example:

rm: cannot remove `/u01/oradata/somesid/exp/*.dmp': No such file or directory removing

推奨エラー処理の組み方

  • 全てのステップに戻り値・結果チェックを組む
  • バッチの場合戻り値は特別の意味以外を0 - 正常、その他 - エラーと返す
  • ログに処理詳細とエラーコード、メッセージを残す
  • エラーコードメッセージを明確にエラーのあるかどうかと明記する
  • エラーのある場合、継続処理か、完全に異常終了かオプションで選択できるようにする

SQLERRMよりいいエラー処理方法

階層方エラーが起こった場合、根本的なエラーはSQLERRMで処理すると、わからなくなることがありえる。
DBMS_UTILITY.FORMAT_ERROR_STACKで処理すると安全である。

  BEGIN
    RAISE NO_DATA_FOUND;
  EXCEPTION
     WHEN OTHERS
     THEN
        DBMS_OUTPUT.put_line (DBMS_UTILITY.FORMAT_ERROR_STACK);
  END;
  /
 
ORA-01403: no data found

DBMS_UTILITY

DBMS_UTILITYサブプログラムの要約

ACTIVE_INSTANCESプロシージャ アクティブなインスタンスを戻します。
ANALYZE_DATABASEプロシージャ データベース内にあるすべての表、クラスタおよび索引を分析します。「推奨されないサブプログラム」も参照してください。
ANALYZE_PART_OBJECTプロシージャ 指定した表および索引を分析します。
ANALYZE_SCHEMAプロシージャ スキーマ内にあるすべての表、クラスタおよび索引を分析します。「推奨されないサブプログラム」も参照してください。
CANONICALIZEプロシージャ 指定した文字列を正規化します。
COMMA_TO_TABLEプロシージャ カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。
COMPILE_SCHEMAプロシージャ 指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージおよびトリガーをコンパイルします。
CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ ALTER TYPE文のEXCEPTION句で使用するエラー表を作成します。
CURRENT_INSTANCEファンクション 現在接続しているインスタンス番号を戻します。
DATA_BLOCK_ADDRESS_BLOCKファンクション データ・ブロック・アドレスのブロック番号部分を取得します。
DATA_BLOCK_ADDRESS_FILEファンクション データ・ブロック・アドレスのファイル番号部分を取得します。
DB_VERSIONプロシージャ データベースに関するバージョン情報を戻します。
EXEC_DDL_STATEMENTプロシージャ parse_stringでDDL文を実行します。
FORMAT_CALL_STACKファンクション 現行のコール・スタックをフォーマットします。
FORMAT_ERROR_BACKTRACEファンクション 現行のエラーのポイントから、エラーがキャッチされた例外ハンドラまでのバックトレースをフォーマットします。
FORMAT_ERROR_STACKファンクション 現行のエラー・スタックをフォーマットします。
GET_CPU_TIMEファンクション 現在のCPU時間を100分の1秒単位で戻します。
GET_DEPENDENCYプロシージャ 渡されたオブジェクトの依存関係を示します。
GET_HASH_VALUEファンクション 指定した文字列についてハッシュ値を計算します。
GET_PARAMETER_VALUEファンクション 指定したinit.oraパラメータの値を取得します。
GET_TIMEファンクション 現在の時間を100分の1秒単位で検出します。
INVALIDATEプロシージャ データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。
IS_CLUSTER_DATABASEファンクション このデータベースがクラスタ・データベース・モードで実行しているかどうかを検出します。
MAKE_DATA_BLOCK_ADDRESSファンクション ファイル番号とブロック番号を指定して、データ・ブロック・アドレスを作成します。
NAME_RESOLVEプロシージャ 指定した名前を解決します。
NAME_TOKENIZEプロシージャ 指定した名前を解析するためにパーサーをコールします。
PORT_STRINGファンクション Oracleとオペレーティング・システムのバージョンを一意に識別する文字列を戻します。
TABLE_TO_COMMAプロシージャ 名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。
VALIDATEプロシージャ 名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。

Reference:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-02/d_util.htm

また、DBMS_UTILITY.FORMAT_CALL_STACK は実行のスタックを表示できる。デバッグに役に立つ。

バッチ・処理エラーメッセージキーワード

  • エラーを検知しました
  • エラーが検出されました
  • … に失敗しました
  • エラーがある

エラーメッセージを確認する

Windows:
echo msgtxt rdbms ora 10046 | oratclsh | findstr "ora-10046"
 
Linux/Unix:
echo msgtxt rdbms ora 10046 | oratclsh | grep "ora-10046"

See Also

http://yong321.freeshell.org/freeware/Windowsoerr.html
http://yong321.freeshell.org/freeware/oerr_pl.txt