温馨提示×

linux lsnrctl为何报错

小樊
39
2026-09-17 05:56:36
栏目: 智能运维

lsnrctl 是 Oracle 数据库监听(Listener) 的管理工具,常见于 Linux 环境。如果你在 Linux 上执行 lsnrctl 报错,原因通常可以归为以下几类。下面我按常见原因 + 排查方法给你说明,你可以对照自己的报错信息。


一、最常见原因汇总

1️⃣ ORACLE_HOME / ORACLE_SID 未设置或设置错误

lsnrctl 依赖环境变量。

报错示例

command not found
bash: lsnrctl: command not found

或

TNS-12547: TNS:lost contact

解决

export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl

⚠️ 必须用 oracle 用户,不要用 root


2️⃣ 当前用户不是 oracle

报错示例

Permission denied

解决

su - oracle

3️⃣ listener.ora 配置错误

报错示例

TNS-01106: Listener using listener name LISTENER has already been started
TNS-01189: The listener could not be created

排查

vi $ORACLE_HOME/network/admin/listener.ora

常见错误:

  • HOST 写错
  • PORT 被占用
  • LISTENER 名称不一致

4️⃣ 监听端口被占用

报错示例

TNS-12542: TNS:address already in use

排查

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

5️⃣ Oracle 软件未正确安装

报错示例

lsnrctl: error while loading shared libraries

解决

  • 检查 $ORACLE_HOME/bin/lsnrctl 是否存在
  • 检查依赖库
ldd $ORACLE_HOME/bin/lsnrctl

6️⃣ 没启动监听却执行 status

报错示例

TNS-12541: TNS:no listener

解决

lsnrctl start
lsnrctl status

二、快速自检清单 ✅

whoami
echo $ORACLE_HOME
echo $PATH
lsnrctl status

三、如果你愿意,我可以更精准帮你

你可以直接把 完整报错信息 贴出来,例如:

[oracle@db ~]$ lsnrctl status
LSNRCTL for Linux: Version 19.3.0.0.0
TNS-12541: TNS:no listener

我可以根据报错码(如 TNS-12541)直接告诉你原因和修法。

你现在的报错是哪一种?

0 踩