在 Debian 上,lsnrctl 是 Oracle Database Listener 的管理工具(来自 oracle-instant-client 或完整 Oracle 数据库安装)。如果你说“怎样调试 lsnrctl”,通常可以从下面几个方面入手。
which lsnrctl
lsnrctl status
如果提示 command not found:
在 Debian 上常见环境变量:
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_BASE=/u01/app/oracle
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
如果你只装了 Instant Client:
export TNS_ADMIN=/usr/lib/oracle/21/client64/network/admin
lsnrctl status
lsnrctl status LISTENER
如果失败,看错误信息(TNS-xxx)
lsnrctl
LSNRCTL> set current_listener LISTENER
LSNRCTL> set log_status on
LSNRCTL> set trc_level admin
LSNRCTL> set trc_file lsnr.trc
日志位置:
$ORACLE_HOME/network/log/listener.log
$ORACLE_HOME/network/trace/listener.trc
lsnrctl start LISTENER
如果失败:
$ORACLE_HOME/network/log/listener.logtnsping ORCL
如果失败,检查:
$TNS_ADMIN/tnsnames.ora
$TNS_ADMIN/listener.ora
/etc/hostshostname
ping $(hostname)
示例 listener.ora:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
如果用 systemd:
systemctl status oracle-listener
journalctl -u oracle-listener
在 sqlnet.ora 中:
DIAG_ADR_ENABLED=ON
TRACE_LEVEL_CLIENT=16
TRACE_DIRECTORY_CLIENT=/tmp
lsnrctl statuslistener.logtnspinglistener.ora / tnsnames.oraHOST / /etc/hoststrc_level admin如果你愿意,可以贴出:
lsnrctl status 报错listener.log 内容我可以帮你精准定位问题。