在 Debian 上 lsnrctl 无法启动,通常是 Oracle 监听(Listener)相关环境或配置问题。下面按「最常见 → 进阶」逐步排查,基本能解决 90% 的情况。
lsnrctl 是 Oracle Database 的监听控制工具,不是系统自带命令。
which lsnrctl
如果提示 lsnrctl: command not found:
echo $ORACLE_HOME
echo $PATH
正常应类似:
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
PATH 包含 $ORACLE_HOME/bin
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
(建议写入 ~/.bashrc 或 /etc/profile)
必须用 oracle 用户运行 lsnrctl
su - oracle
lsnrctl start
用 root 直接跑通常会失败。
检查:
$ORACLE_HOME/network/admin/listener.ora
最小可用示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
改完执行:
lsnrctl reload
netstat -tunlp | grep 1521
# 或
ss -tunlp | grep 1521
如果被占:
listener.ora 端口lsnrctl status
如果提示:
TNS-01101: Could not find service name LISTENER
说明:
listener.ora 不存在LISTENER 配置lsnrctl start
如果失败,看最上面几行错误,例如:
| 错误 | 原因 |
|---|---|
| TNS-12545 | HOST 写错 |
| TNS-12541 | 端口没监听 |
| TNS-01106 | listener 已在运行 |
| TNS-03505 | listener.ora 不存在 |
ldd $ORACLE_HOME/bin/lsnrctl
如果缺 .so:
apt install libaio1
如果你用 service 启动:
systemctl status oracle-listener
journalctl -xe
你可以直接贴出:
lsnrctl start
的完整报错信息,或者:
我可以一步一步帮你定位到具体原因。