温馨提示×

如何配置linux lsnrctl

小樊
44
2026-10-22 15:20:47
栏目: 智能运维

在 Linux 上配置和使用 lsnrctl(Oracle Listener Control)主要涉及 Oracle 数据库监听器的配置。下面按常见场景给你一个清晰、可操作的指南。


一、lsnrctl 是什么?

lsnrctl 是 Oracle 提供的命令行工具,用于:

  • 启动 / 停止 / 查看监听器
  • 管理 listener.ora
  • 查看监听状态

⚠️ 注意:lsnrctl 不是 Linux 自带工具,而是 Oracle Database 安装的一部分。


二、前提条件

  1. 已安装 Oracle Database 或 Oracle Client
  2. 环境变量已配置(非常重要)

1️⃣ 设置环境变量(示例)

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

可用 which lsnrctl 验证是否能找到命令


三、监听器配置文件位置

监听器配置文件通常位于:

$ORACLE_HOME/network/admin/listener.ora

四、基础 listener.ora 配置示例

示例:监听默认端口 1521

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

示例:多端口监听

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

五、启动 / 停止 / 查看监听器

1️⃣ 启动监听器

lsnrctl start

2️⃣ 停止监听器

lsnrctl stop

3️⃣ 查看状态

lsnrctl status

输出中关注:

  • 监听端口
  • 服务名(Service)
  • 实例状态(READY / BLOCKED)

六、配置数据库注册到监听器

方式一:动态注册(推荐)

在 init.ora 或 spfile 中:

local_listener='LISTENER'

然后:

ALTER SYSTEM REGISTER;

方式二:静态注册(listener.ora)

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )

修改后重启监听:

lsnrctl stop
lsnrctl start

七、常见配置场景

✅ 修改监听端口

  1. 改 listener.ora
  2. 重启监听
  3. 客户端 tnsnames.ora 同步修改

✅ 多个监听器

lsnrctl start LISTENER2

八、常见问题排查

❌ lsnrctl: command not found

  • 未配置 PATH
  • Oracle 未安装

❌ TNS-12541: TNS:no listener

  • 监听器未启动
  • 主机名解析错误

❌ 服务未注册

ALTER SYSTEM REGISTER;

九、最小可用配置总结

ORACLE_HOME/bin/lsnrctl start
  • 正确 listener.ora
  • 数据库已启动

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

  • Oracle 版本(11g / 12c / 19c)
  • 是单机 / RAC
  • 是否使用 ASM

我可以给你更精确的配置示例。

0 踩