在 Debian 上排错 lsnrctl(Oracle Listener 控制工具),通常可以按下面步骤系统性排查。
lsnrctl 是否存在which lsnrctl
如果找不到,说明:
一般路径类似:
$ORACLE_HOME/bin/lsnrctl
echo $ORACLE_HOME
echo $ORACLE_SID
echo $PATH
推荐配置(示例):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
如果是 64 位 Debian,确保安装的是 Oracle 64 位版本
lsnrctl 看报错lsnrctl status
常见错误及含义:
command not foundlsnrctl 不在 PATH✅ 解决:
export PATH=$ORACLE_HOME/bin:$PATH
TNS-12541: TNS:no listener说明:
✅ 解决:
lsnrctl start
TNS-12560: TNS:protocol adapter error常见原因:
ORACLE_HOME 错误✅ 排查:
file $ORACLE_HOME/bin/lsnrctl
listener.orals $ORACLE_HOME/network/admin/listener.ora
示例内容:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)
hostname
cat /etc/hosts
⚠️ 如果 listener.ora 中用的是主机名,必须能解析。
$ORACLE_HOME/diag/tnslsnr/$(hostname)/listener/alert/log.xml
或旧版本:
$ORACLE_HOME/network/log/listener.log
查看错误:
tail -f listener.log
ss -lntp | grep 1521
Oracle 不能用 root 启动
✅ 正确做法:
su - oracle
lsnrctl start
ldd $ORACLE_HOME/bin/lsnrctl
常见缺失:
libaio1libstdc++6安装:
sudo apt update
sudo apt install libaio1 libaio-dev libstdc++6
如果你用 systemd 管理 listener:
systemctl status oracle-listener
journalctl -xe
ORACLE_HOME 是否正确lsnrctl 在 PATHlistener.ora 配置是否正确$ lsnrctl status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux
Start Date 12-JAN-2026
Uptime 0 days 0 hr. 5 min.
如果你愿意,可以直接把报错信息贴出来(例如 TNS-xxxxx 或命令输出),我可以精准帮你分析。