lsnrctl(Oracle監聽器控制工具)的日志文件默認存儲在Oracle的診斷目錄中,路徑遵循以下結構:
/u01/app/oracle/diag/tnslsnr/<hostname>/listener/alert/<listener_name>.log
其中:
<hostname>
:服務器的主機名(可通過hostname
命令查看);<listener_name>
:監聽器的名稱(通常為LISTENER
,可通過lsnrctl status
命令確認)。ubuntu-server
,監聽器名稱為LISTENER
,則日志文件路徑為:/u01/app/oracle/diag/tnslsnr/ubuntu-server/listener/alert/listener.log
。若Oracle安裝時自定義了路徑,可通過以下環境變量快速定位日志目錄:
ORACLE_HOME
:Oracle數據庫的安裝根目錄(如/u01/app/oracle/product/19c/dbhome_1
);DIAGNOSTIC_DEST
:診斷信息的目標目錄(通常與ORACLE_BASE
一致,如/u01/app/oracle
)。$DIAGNOSTIC_DEST/diag/tnslsnr/<hostname>/listener/alert/listener.log
,或直接通過$ORACLE_HOME/network/log/listener.log
訪問。執行lsnrctl status
命令,輸出結果中會明確標注日志文件的路徑(查找“Listener Log File”或“Log File”字段)。例如:
$ lsnrctl status
...
Listener Log File: /u01/app/oracle/diag/tnslsnr/ubuntu-server/listener/alert/listener.log
...
該方法可直接獲取當前監聽器的日志路徑,無需猜測。
若啟動監聽器時通過listener.ora
文件修改了日志路徑(如設置LOG_DIRECTORY
或LOG_FILE
參數),需檢查以下配置文件:
$ORACLE_HOME/network/admin/listener.ora
;LOG_DIRECTORY_LISTENER = /custom/log/directory # 日志目錄
LOG_FILE_LISTENER = listener.log # 日志文件名
修改后需重啟監聽器(lsnrctl stop
→lsnrctl start
)使配置生效。
定位到日志文件后,可使用以下命令查看內容:
tail -f /path/to/listener.log
(如tail -f /u01/app/oracle/diag/tnslsnr/ubuntu-server/listener/alert/listener.log
);tail -n 50 /path/to/listener.log
(查看最后50行);grep "ERROR" /path/to/listener.log
(篩選包含“ERROR”的日志行)。注:若無法找到日志文件,請檢查Oracle用戶對日志目錄的權限(通常需oracle
用戶或root
用戶訪問),或確認監聽器是否正常啟動(lsnrctl status
應顯示“RUNNING”狀態)。