温馨提示×

lsnrctl监听怎样修改

小樊
41
2026-10-13 21:43:13
栏目: 编程语言

在 Oracle 数据库中,lsnrctl 本身不能直接修改监听配置,它是监听控制工具(用于启动、停止、查看监听状态)。
要“修改监听”,实际上是修改 listener.ora 配置文件,然后用 lsnrctl 重新加载或重启监听。

下面按常见场景说明。


一、监听配置文件位置

通常在:

$ORACLE_HOME/network/admin/listener.ora

查看当前监听配置:

lsnrctl status

二、常见修改方式

1️⃣ 修改监听端口(如 1521 → 1522)

编辑 listener.ora:

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

使配置生效:

lsnrctl reload

或

lsnrctl stop
lsnrctl start

2️⃣ 修改监听 IP / 主机名

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))

修改后:

lsnrctl reload

3️⃣ 增加多个监听地址

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

4️⃣ 修改 SID 注册(静态监听)

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

三、修改后验证

lsnrctl status
lsnrctl services

数据库注册检查:

SQL> show parameter local_listener;

如未自动注册:

SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))';
SQL> alter system register;

四、注意事项

  • ✅ 修改前建议备份 listener.ora
  • ✅ 防火墙需放行新端口
  • ✅ RAC 环境需用 srvctl 管理监听
  • ❌ lsnrctl 不能直接“改端口”,只能 reload/start/stop

如果你能告诉我:

  • Oracle 版本(11g / 12c / 19c)
  • 单机还是 RAC
  • 想改什么(端口 / IP / 新增监听)

我可以给你针对性配置示例。

0 踩