[Oracle] 知っているとちょっと便利なコマンド集

Oracle

Oracleを使っていて、エラーなどで困ったときに使えるコマンドを集めてみました。
随時更新していく予定です。

oerrコマンド

知っている方も多いと思いますが説明しておきます。
oerrコマンドは、エラーの内容を簡単にですが、教えてくれるコマンドです。
例えば、ORA-1が出力された場合に、どのような要因で発生しているかを教えてくれます。

$ORACLE_HOME/binにパスが通っている前提で、以下のコマンドを実行します。

$ oerr ora 1
00001, 00000, "unique constraint (%s.%s) violated"
// *Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
//         For Trusted Oracle configured in DBMS MAC mode, you may see
//         this message if a duplicate entry exists at a different level.
// *Action: Either remove the unique restriction or do not insert the key.

ORAエラーだけでなく、TNSエラーも同様に確認できます。
TNSエラーは主にネットワーク系のエラーで発生します。
(リスナーログやsqlnet.logに出力されるケースが多いです)

$ oerr tns 12542
12542, 00000, "TNS:address already in use"
// *Cause: Specified listener address is already being used.
// *Action: Start your listener with a unique address.

tnspingコマンド

Linux OS上でのpingコマンドはご存じの方も多いと思います。
tnspingもその動作に従ったコマンドですが、引数に接続識別子を渡します。
tnspingは、接続識別子で指定されたホスト名やポート番号のリスナーに対して、応答確認を行うことができます。

リスナー経由での接続でエラーが返ってきている場合や、接続識別子の記述が正しいかを確認する場合に、
tnspingコマンドを実行して、まずは応答がきちんと返ってくるかを確認することができます。

tnspingコマンドがエラーになっている場合は、リスナー経由の接続は必ずエラーになりますので、
問題の切り分けにも使えるコマンドとなります。

正常時
$ tnsping DB19C_OK

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 14-1月 -2025 22:21:55

Copyright (c) 1997, 2021, Oracle.  All rights reserved.

パラメータ・ファイルを使用しました:


エイリアスを解決するためにTNSNAMESアダプタを使用しました。
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = scanhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db19c.local)))に接続の試行中
OK (0ミリ秒)
エラー時
$ tnsping DB19C_NG

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 14-1月 -2025 22:22:00

Copyright (c) 1997, 2021, Oracle.  All rights reserved.

パラメータ・ファイルを使用しました:

エイリアスを解決するためにTNSNAMESアダプタを使用しました。
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = scanhost_dummy)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db19c.local)))に接続の試行中
TNS-12543: TNS: 接続先ホストに到達できません。

TNSエラーが発生しているので、oerrコマンドで内容を確認できます。

$ oerr tns 12543
12543, 00000, "TNS:destination host unreachable"
// *Cause: Contact can not be made with remote party.
// *Action: Make sure the network driver is functioning and the network is up.

コメント

タイトルとURLをコピーしました