Oracle Databaseに接続できない場合にまず疑うのがリスナーです。リスナーはOracleへの橋渡し役で、ログには接続元IPやどのプログラムから接続されたのかなどの情報が残っています。
今回はリスナーログファイルの場所を説明します。
リスナーログの場所
Oracleのアラートログですが、11g以降(12c,18c,19c)は以下の場所に存在します。
$ORACLE_BASE/diag/tnslsnr/<リスナー名>/trace/<リスナー名>.log
※$ORACLE_HOME 配下ではないことに注意してください。
リスナーの起動方法や確認方法は以下の記事を参照してください。
例えば、ol77というホスト名でlistenerというリスナー名での場合は以下の場所になります。
[oracle@ol77 ~]$ ls -l $ORACLE_BASE/diag/tnslsnr/ol77/listener/trace/listener.log
-rw-r----- 1 oracle oinstall 72400 Nov 19 02:25 /u01/app/oracle/diag/tnslsnr/ol77/listener/trace/listener.log
上記はテキスト形式のログですので、人間に見やすい形となっています。
SQL*Plusから正常に接続した際のログの内容は以下となり、プログラム名や接続元のIPが表示されていることが確認できます。
19-NOV-2020 02:08:33 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=hogepdb)(CID=(PROGRAM=sqlplus@ol77)(HOST=ol77)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.103)(PORT=64384)) * establish * hogepdb * 0
lsnrctlコマンドでリスナーログの場所を特定する方法
リスナーを管理できるコマンド lsnrctl でリスナーのログを特定することも可能です。
ですが、表示されるログは形式がXMLですので人間が見るには見づらいかと思います。
[oracle@ol77 ~]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-NOV-2020 02:30:41
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol77)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 19-NOV-2020 00:55:09
Uptime 130 days 1 hr. 35 min. 32 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19.0.3/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/ol77/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol77)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ol77)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/hoge/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
Instance "hoge", status READY, has 1 handler(s) for this service...
Service "a4597ce181b23829e055b63ca1051b58" has 1 instance(s).
Instance "hoge", status READY, has 1 handler(s) for this service...
Service "hoge" has 1 instance(s).
Instance "hoge", status READY, has 1 handler(s) for this service...
Service "hogeXDB" has 1 instance(s).
Instance "hoge", status READY, has 1 handler(s) for this service...
Service "hogepdb" has 1 instance(s).
Instance "hoge", status READY, has 1 handler(s) for this service...
The command completed successfully
上記の「Listener Log File」に表示されているファイルがXML形式のリスナーログファイルとなります。
XML形式のリスナーログは読めなくはないですが、とりあえず見たい場合はテキスト形式のファイルを見ることをオススメします。