在 Debian 上,lsnrctl 是 Oracle Database Listener 的管理工具,不是系统自带命令。出现问题时,通常按下面思路排查。
which lsnrctl
echo $ORACLE_HOME
echo $ORACLE_SID
echo $PATH
正常应类似:
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
command not found: lsnrctl原因:未安装或未配置 PATH
解决:
source ~/.bash_profile
# 或手动
export ORACLE_HOME=...
export PATH=$ORACLE_HOME/bin:$PATH
TNS-12541: TNS:no listener原因:监听未启动
解决:
lsnrctl start
查看状态:
lsnrctl status
TNS-12545: Connect failed because target host or object does not exist原因:
检查:
cat $ORACLE_HOME/network/admin/listener.ora
示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
测试:
ping localhost
hostname
TNS-12560: TNS:protocol adapter error常见原因:
检查:
id
应类似:
uid=1001(oracle)
老版本 Oracle 在 Debian 上常见缺失库:
ldd $ORACLE_HOME/bin/lsnrctl
缺哪个装哪个,例如:
apt install libaio1
$ORACLE_HOME/network/log/listener.log
查看错误:
tail -f $ORACLE_HOME/network/log/listener.log
which lsnrctlORACLE_HOMElsnrctl statuslistener.oralistener.log如果你愿意,可以把 具体报错信息 或 lsnrctl status 的输出贴出来,我可以帮你精准分析。