温馨提示×

debian lsnrctl为何启动报错

小樊
43
2026-08-31 17:39:55
栏目: 智能运维

Debian 上执行 lsnrctl start 报错的常见原因一般分为 Oracle 环境配置问题系统层面问题。下面按最常见 → 次常见的顺序给你排查思路。


一、最常见原因:Oracle 环境变量未配置

lsnrctlOracle Database 的监听管理工具,必须依赖正确的 Oracle 环境。

1️⃣ 是否设置了这些环境变量

执行:

echo $ORACLE_HOME
echo $ORACLE_BASE
echo $PATH

正常情况应类似:

ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
PATH 中包含 $ORACLE_HOME/bin

如果 ORACLE_HOME 为空,必报错。

✅ 解决方法:

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

建议写入:

vi ~/.bashrc

或 oracle 用户下:

vi ~/.bash_profile

二、没有使用 oracle 用户执行

lsnrctl 必须用 oracle 用户运行,不能用 root。

su - oracle
lsnrctl start

❌ 常见错误:

bash: lsnrctl: command not found

TNS-12547: TNS:lost contact

三、lsnrctl 命令不存在

说明 Oracle 客户端/数据库未正确安装,或 PATH 错误。

检查:

which lsnrctl

无输出 → Oracle 未安装或路径错误。

✅ 解决:

  • 确认 $ORACLE_HOME/bin/lsnrctl 是否存在
  • Debian 上 必须手动安装 Oracle,官方不提供 apt 包

四、监听配置文件错误(非常常见)

配置文件位置:

$ORACLE_HOME/network/admin/listener.ora

常见错误

  • 主机名无法解析
  • 端口被占用
  • 文件格式错误

测试配置:

lsnrctl status

查看报错行号,例如:

TNS-01106: Listener using listener name LISTENER has already been started

TNS-12541: TNS:no listener

✅ 修复示例:

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

重启:

lsnrctl stop
lsnrctl start

五、端口被占用(Debian 常见)

netstat -tunlp | grep 1521

ss -tunlp | grep 1521

被占用则:

  • 更换端口
  • 或杀掉占用进程

六、Debian 与 Oracle 的兼容性问题

⚠️ Oracle 官方不支持 Debian

常见现象:

  • lib 缺失
  • glibc 版本问题

✅ 解决方案:

apt install libaio1

或手动创建软链接(以 19c 为例):

ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1 /lib64/libaio.so.1

七、常见错误对照表

报错 原因
command not found PATH / ORACLE_HOME 错误
TNS-12541 listener.ora 错误
TNS-12560 网络配置错误
TNS-01106 监听已启动
Permission denied 非 oracle 用户

八、建议你直接贴出错误信息

如果你愿意,直接把 完整报错内容 发出来,比如:

lsnrctl start

后终端输出的所有内容。

我可以 逐行帮你定位到具体原因(比自己猜效率高很多)。

0