温馨提示×

linux lsnrctl怎样配置

小樊
47
2026-10-02 02:37:40
栏目: 智能运维

lsnrctl 是 Oracle 数据库监听器(Listener) 的管理工具,用于启动、停止、查看和配置监听。下面从配置监听器的角度,系统地说明在 Linux 下如何使用 lsnrctl 及相关配置文件。


一、监听器配置文件位置

监听器核心配置文件是:

$ORACLE_HOME/network/admin/listener.ora

如果该文件不存在,可以手动创建。


二、基础 listener.ora 示例

1️⃣ 最简单配置(默认端口 1521)

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

2️⃣ 指定 IP 和主机名(推荐)

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

HOST 可写 IP 或主机名(需在 /etc/hosts 中可解析)


3️⃣ 多个监听端口

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

三、注册数据库到监听器(静态注册)

静态注册示例

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

多用于:

  • 数据库未启动
  • 使用 ASM
  • 需要远程管理

四、动态注册(推荐方式)

只需在数据库中设置:

ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))';
ALTER SYSTEM REGISTER;

监听器无需静态配置即可发现数据库。


五、使用 lsnrctl 管理监听器

1️⃣ 启动监听器

lsnrctl start

或指定监听器名:

lsnrctl start LISTENER

2️⃣ 停止监听器

lsnrctl stop

3️⃣ 查看监听器状态

lsnrctl status

输出包含:

  • 监听地址
  • 已注册服务
  • 实例状态

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

lsnrctl reload

六、常见问题排查

1️⃣ lsnrctl: command not found

确保环境变量正确:

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

2️⃣ 监听启动但数据库未注册

  • 检查 LOCAL_LISTENER
  • 执行 ALTER SYSTEM REGISTER;
  • 确认数据库已 OPEN

3️⃣ 端口被占用

netstat -tunlp | grep 1521

七、完整示例(生产常用)

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

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

如果你愿意,我可以:

  • 按 Oracle 版本(11g / 12c / 19c) 给你配置
  • 帮你 写一份可直接用的 listener.ora
  • 排查你当前的 lsnrctl status 报错

你可以把当前配置或报错贴出来。

0 踩