温馨提示×

debian lsnrctl无法启动咋办

小樊
52
2026-09-21 20:51:08
栏目: 智能运维

在 Debian 上 lsnrctl 无法启动,通常是 Oracle 监听(Listener)相关环境或配置问题。下面按「最常见 → 进阶」逐步排查,基本能解决 90% 的情况。


一、先确认你是不是在用 Oracle

lsnrctl 是 Oracle Database 的监听控制工具,不是系统自带命令。

which lsnrctl

如果提示 lsnrctl: command not found:

  • 说明 Oracle 客户端/服务端没装,或环境变量没配置

二、最常见原因 & 解决办法

1️⃣ ORACLE_HOME / PATH 没配置(最常见)

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)


2️⃣ 没切到 oracle 用户

必须用 oracle 用户运行 lsnrctl

su - oracle
lsnrctl start

用 root 直接跑通常会失败。


3️⃣ listener.ora 配置错误

检查:

$ORACLE_HOME/network/admin/listener.ora

最小可用示例:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

改完执行:

lsnrctl reload

4️⃣ 端口被占用(1521)

netstat -tunlp | grep 1521
# 或
ss -tunlp | grep 1521

如果被占:

  • 改 listener.ora 端口
  • 或杀掉占用进程

5️⃣ 没有 listener 服务名

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 不存在

四、Debian 特有注意点

1️⃣ 依赖库问题(老 Oracle)

ldd $ORACLE_HOME/bin/lsnrctl

如果缺 .so:

apt install libaio1

2️⃣ systemd(如果用了)

如果你用 service 启动:

systemctl status oracle-listener
journalctl -xe

五、快速自检清单 ✅

  • [ ] 用的是 oracle 用户
  • [ ] ORACLE_HOME 设置正确
  • [ ] PATH 包含 $ORACLE_HOME/bin
  • [ ] listener.ora 存在且正确
  • [ ] 1521 端口未被占用
  • [ ] 报错信息已查看

六、如果你愿意,我可以更精确帮你

你可以直接贴出:

lsnrctl start

的完整报错信息,或者:

  • Oracle 版本
  • Debian 版本
  • 是否新装 / 升级后

我可以一步一步帮你定位到具体原因。

0 踩