温馨提示×

debian怎样重装lsnrctl工具

小樊
42
2026-07-22 09:44:01
栏目: 智能运维

lsnrctlOracle Database 的监听控制工具,不属于 Debian 自带软件包,因此“重装”它的本质通常是:

重装或修复 Oracle 数据库软件(特别是 Oracle Net 组件)

下面按常见情况说明。


一、确认 lsnrctl 属于哪个 Oracle 环境

先确认当前 lsnrctl 的位置:

which lsnrctl

常见路径:

  • Oracle 11g:$ORACLE_HOME/bin/lsnrctl
  • Oracle 12c/19c:$ORACLE_HOME/bin/lsnrctl

查看 ORACLE_HOME:

echo $ORACLE_HOME

✅ 如果 lsnrctl 存在但报错,通常是:

  • ORACLE_HOME 没设置
  • Oracle 软件损坏
  • listener.ora / tnsnames.ora 配置问题

二、如果只是“找不到 lsnrctl”

1️⃣ 设置环境变量(最常见)

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

可写入:

vi ~/.bash_profile

或:

vi /etc/profile

三、如果 lsnrctl 文件被误删(真正“重装”)

✅ 方法一:使用 Oracle 安装包修复(推荐)

  1. 准备 Oracle Database 安装包
  2. 以 oracle 用户执行:
cd /path/to/oracle/install
./runInstaller
  1. 选择:
    • Modify / Repair Oracle Home
    • 或选择 Oracle Net Services

✅ 这样会重新生成:

  • lsnrctl
  • tnslsnr
  • listener 相关组件

✅ 方法二:从其他同版本 Oracle 拷贝(应急)

⚠️ 不推荐生产环境,但在测试环境可用:

从同版本 Oracle 服务器复制:

scp oracle@otherhost:$ORACLE_HOME/bin/lsnrctl $ORACLE_HOME/bin/
scp oracle@otherhost:$ORACLE_HOME/bin/tnslsnr $ORACLE_HOME/bin/

并确认权限:

chmod 755 $ORACLE_HOME/bin/lsnrctl
chown oracle:oinstall $ORACLE_HOME/bin/lsnrctl

四、如果监听配置损坏(不是程序问题)

lsnrctl status

报错但 lsnrctl 存在,可重建监听:

netca

或手动重建:

vi $ORACLE_HOME/network/admin/listener.ora

示例:

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

然后:

lsnrctl start

五、Debian 上特别注意

Debian 不是 Oracle 官方推荐系统,常见问题:

  • glibc 版本不兼容
  • 缺少 32 位库(Oracle 11g 常见)

检查依赖:

ldd $ORACLE_HOME/bin/lsnrctl

缺少库时安装(示例):

apt install libaio1 libaio-dev

六、总结

情况 解决方案
lsnrctl 不存在 设置 ORACLE_HOME / PATH
文件被删 修复 Oracle Home
监听起不来 重建 listener.ora
Debian 不兼容 检查 glibc / 依赖

如果你愿意,可以贴出:

  • lsnrctl status 的完整报错
  • ✅ Oracle 版本
  • ✅ Debian 版本

我可以精确告诉你该怎么修。

0