温馨提示×

debian下lsnrctl无法启动怎么办

小樊
37
2026-07-22 09:23:00
栏目: 智能运维

在 Debian 下 lsnrctl 无法启动,通常是 Oracle 数据库监听(Listener) 相关的问题,而不是 Debian 本身的问题。可以按下面步骤系统性排查。


一、先确认 lsnrctl 是否存在

which lsnrctl

如果提示找不到命令,说明 Oracle 环境变量未配置或 Oracle Client/DB 未安装

一般路径:

$ORACLE_HOME/bin/lsnrctl

二、检查并设置 Oracle 环境变量

Oracle 在 Debian 上是非原生支持的,必须手动配置环境变量。

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

可以写入:

vi ~/.bashrc

然后:

source ~/.bashrc

✅ 再试:

lsnrctl status

三、最常见的错误及解决方法

❌ 1. 报 command not found

说明:

  • ORACLE_HOME 设置错误
  • 或 Oracle 未安装

✅ 解决:

ls $ORACLE_HOME/bin/lsnrctl

若不存在,需重新安装 Oracle DB 或 Oracle Instant Client。


❌ 2. 报 TNS-12541: TNS:no listener

说明监听尚未启动。

✅ 启动监听:

lsnrctl start

❌ 3. 报 TNS-12555: TNS:permission denied

常见于 Debian 权限问题。

✅ 解决:

sudo chown -R oracle:oinstall $ORACLE_HOME
sudo chmod -R 775 $ORACLE_HOME

并确保你使用的是 oracle 用户

su - oracle

❌ 4. 报 TNS-12546: TNS:permission denied (端口)

Debian 默认 非 root 用户不能监听 1024 以下端口

✅ 解决方式之一(不推荐生产):

sudo setcap CAP_NET_BIND_SERVICE=+eip $ORACLE_HOME/bin/tnslsnr

✅ 推荐方式:

  • 使用 1521 以上端口
  • 或修改 listener.ora 端口

四、检查监听配置文件

vi $ORACLE_HOME/network/admin/listener.ora

基本示例:

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

修改后重启:

lsnrctl stop
lsnrctl start

五、确认监听端口是否被占用

ss -lntp | grep 1521

如果被占用:

kill -9 PID

六、Debian 特有注意事项

  1. Debian 不是 Oracle 官方支持系统
    • 建议用 Oracle Linux / RHEL / CentOS
  2. glibc 版本问题
    ldd $ORACLE_HOME/bin/tnslsnr
    
    若有 not found,需安装依赖:
    sudo apt install libaio1 libaio-dev
    

七、快速排查清单 ✅

  • [ ] 是否使用 oracle 用户
  • [ ] ORACLE_HOME 是否正确
  • [ ] lsnrctl 是否存在
  • [ ] listener.ora 是否存在
  • [ ] 端口是否被占用
  • [ ] 权限是否正确

八、如果你愿意,可以直接贴出错误

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

TNS-xxxxx

我可以帮你精确判断是哪一步导致的。

0