温馨提示×

如何修复ubuntu lsnrctl

小樊
42
2026-10-14 04:06:36
栏目: 智能运维

在 Ubuntu 上 lsnrctl 不是系统自带命令,它来自 Oracle Database / Oracle Instant Client(Listener Control)。如果你在 Ubuntu 上执行 lsnrctl 报错或找不到命令,通常有以下几种情况和对应修复方法。


一、常见错误现象

  1. command not found: lsnrctl
  2. lsnrctl: command not found
  3. bash: lsnrctl: No such file or directory
  4. TNS-12541: TNS:no listener
  5. TNS-12560: TNS:protocol adapter error

二、确认你是否安装了 Oracle

which lsnrctl
echo $ORACLE_HOME
  • 如果 which lsnrctl 为空 → 没安装或没配置环境变量
  • lsnrctl 通常在:
    $ORACLE_HOME/bin/lsnrctl
    

三、修复方法

✅ 方法 1:安装 Oracle(完整数据库)

如果你需要 lsnrctl(监听器),必须安装 Oracle Database,不能只装客户端。

1️⃣ 安装 Oracle Database(示例 19c)

(过程较复杂,简要步骤)

# 示例目录
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

然后验证:

lsnrctl status

✅ 方法 2:只装 Oracle Instant Client(⚠️ 注意)

❗ Oracle Instant Client 不包含 lsnrctl

Instant Client 只能连接数据库,不能启动监听器。

如果你只是连接远程 Oracle:

  • 不需要 lsnrctl
  • 用 sqlplus 或 tnsping 即可

✅ 方法 3:配置环境变量(最常见问题)

如果你已经安装了 Oracle,但仍提示找不到:

vi ~/.bashrc

添加:

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

生效:

source ~/.bashrc

验证:

lsnrctl status

✅ 方法 4:监听器未启动

如果命令能运行但报错:

TNS-12541: TNS:no listener

启动监听器:

lsnrctl start

查看状态:

lsnrctl status

✅ 方法 5:listener.ora 配置错误

文件位置:

$ORACLE_HOME/network/admin/listener.ora

示例:

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

修改后重启:

lsnrctl stop
lsnrctl start

四、Ubuntu 上的注意事项

  • Ubuntu 不是 Oracle 官方支持系统
  • 推荐使用:
    • Oracle Linux
    • RHEL / CentOS
  • 在 Ubuntu 上安装 Oracle 需要额外依赖:
    sudo apt install alien libaio1 unixodbc
    

五、快速自检清单 ✅

  • [ ] 已安装 Oracle Database(非 Instant Client)
  • [ ] ORACLE_HOME 已设置
  • [ ] lsnrctl 在 $ORACLE_HOME/bin
  • [ ] listener.ora 配置正确
  • [ ] 监听器已启动

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • Oracle 版本
  • 具体报错信息

我可以给你精确修复命令。

0 踩