この記事ではコマンドにてOracleのエラーメッセージを確認する方法を解説します。
エラーメッセージを確認するコマンド
Oracleにはoerrというコマンドが用意されています。
このコマンドを使うとエラーメッセージの内容を確認することができます。
表示内容はエラーコードに対する原因と対応策になります。
インターネット環境が使えない状態でも使用できるため、急いで調べたい場合などにも便利です。
使い方
下記のコマンドでエラー内容を確認することができます。
$ oerr ora <エラーコードの番号>
oerrは$ORACLE_HOME/binに存在するため、$ORACLE_HOMEへパスを通しておく必要があります。
実行例
ORA-01017のエラーを調査してみます。
[oracle@XXXXXX ~]$ oerr ora 1017
01017, 00000, "invalid username/password; logon denied"
// *Cause: An invalid username or password was entered in an
// attempt to log on to Oracle. The username and password must be
// the same as was specified in a GRANT CONNECT statement. If the
// username and password were entered together, the format was:
// username/password.
// *Action: Enter a valid username and password combination in the
// correct format.
oraエラーだけではなくtnsエラーなども確認することができます。
[oracle@XXXXXX ~]$ oerr tns 12154
12154, 00000, "TNS:could not resolve the connect identifier specified"
// *Cause: A connection to a database or other service was requested using
// a connect identifier, and the connect identifier specified could not
// be resolved into a connect descriptor using one of the naming methods
// configured. For example, if the type of connect identifier used was a
// net service name then the net service name could not be found in a
// naming method repository, or the repository could not be
// located or reached.
// *Action:
// - If you are using local naming (TNSNAMES.ORA file):
// - Make sure that "TNSNAMES" is listed as one of the values of the
// NAMES.DIRECTORY_PATH parameter in the Oracle Net profile
// (SQLNET.ORA)
// - Verify that a TNSNAMES.ORA file exists and is in the proper
// directory and is accessible.
// - Check that the net service name used as the connect identifier
// exists in the TNSNAMES.ORA file.
// - Make sure there are no syntax errors anywhere in the TNSNAMES.ORA
// file. Look for unmatched parentheses or stray characters. Errors
// in a TNSNAMES.ORA file may make it unusable.
// - If you are using directory naming:
// - Verify that "LDAP" is listed as one of the values of the
// NAMES.DIRETORY_PATH parameter in the Oracle Net profile
// (SQLNET.ORA).
// - Verify that the LDAP directory server is up and that it is
// accessible.
// - Verify that the net service name or database name used as the
// connect identifier is configured in the directory.
// - Verify that the default context being used is correct by
// specifying a fully qualified net service name or a full LDAP DN
// as the connect identifier
// - If you are using easy connect naming:
// - Verify that "EZCONNECT" is listed as one of the values of the
// NAMES.DIRETORY_PATH parameter in the Oracle Net profile
// (SQLNET.ORA).
// - Make sure the host, port and service name specified
// are correct.
// - Try enclosing the connect identifier in quote marks.
//
// See the Oracle Net Services Administrators Guide or the Oracle
// operating system specific guide for more information on naming.