温馨提示×

linux lsnrctl怎么用

小樊
51
2026-10-16 18:05:49
栏目: 智能运维

lsnrctl 是 Oracle 数据库监听控制工具(Listener Control),用来管理 Oracle 的监听器(Listener),在 Linux/Unix 上非常常用。

下面从 基本概念 → 常用命令 → 实际使用场景 给你讲清楚。


一、什么是 lsnrctl

lsnrctl 用于:

  • 启动 / 停止 / 查看 Oracle 监听器
  • 查看监听状态、服务、客户端连接
  • 管理 listener.ora 配置的监听

监听器的作用:

客户端 → 监听器 → Oracle 实例


二、基本前提

  1. 必须是 Oracle 用户(通常是 oracle)
su - oracle
  1. 环境变量要正确(尤其是 ORACLE_HOME)
echo $ORACLE_HOME

示例:

/u01/app/oracle/product/19.3.0/dbhome_1

三、最常用命令

1️⃣ 查看监听状态

lsnrctl status

如果监听名不是默认的 LISTENER:

lsnrctl status LISTENER_NAME

输出重点:

  • 监听端口(1521)
  • 注册的服务(Service)
  • 实例状态(READY / BLOCKED)

2️⃣ 启动监听器

lsnrctl start

指定监听:

lsnrctl start LISTENER_NAME

3️⃣ 停止监听器

lsnrctl stop

⚠️ 停止后客户端无法连接数据库


4️⃣ 重新加载配置(不中断连接)

lsnrctl reload

常用场景:

  • 修改 listener.ora
  • 新增服务

5️⃣ 查看监听服务

lsnrctl services

可以看到:

  • 哪个实例注册到了监听
  • 使用什么协议(TCP)
  • 当前连接数

四、常见使用场景

✅ 场景 1:数据库连不上

lsnrctl status
  • 没有 LISTENER → 启动
  • 没有 Service → 实例未注册

✅ 场景 2:修改端口或 IP

编辑:

$ORACLE_HOME/network/admin/listener.ora

修改后:

lsnrctl reload

✅ 场景 3:查看监听日志

$ORACLE_HOME/network/log/listener.log

查看实时日志:

tail -f $ORACLE_HOME/network/log/listener.log

五、监听器没启动的常见原因

  1. ORACLE_HOME 不对
  2. listener.ora 配置错误
  3. 端口被占用
  4. 主机名解析问题(/etc/hosts)

六、一个完整示例

su - oracle
lsnrctl status
lsnrctl start
lsnrctl status

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

  • Oracle 版本(11g / 12c / 19c)
  • 报错信息
  • listener.ora 内容

我可以帮你 精准排查问题 ✅

0 踩