温馨提示×

debian lsnrctl怎样加监听

小樊
48
2026-09-03 13:44:07
栏目: 智能运维

在 Debian 上(通常是安装了 Oracle DatabaseOracle Client 后才会有 lsnrctl),lsnrctl 本身不能直接“添加监听”,它是用来**管理监听器(listener)**的,真正“加监听”需要修改 listener.ora 配置文件,然后用 lsnrctl 启动/重载。

下面按常见场景说明。


一、确认环境

which lsnrctl

通常路径类似:

/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl

需要 oracle 用户执行:

su - oracle

二、添加监听(修改 listener.ora)

1. 找到 listener.ora

一般在:

$ORACLE_HOME/network/admin/listener.ora

2. 示例:新增一个监听 LISTENER2(端口 1522)

编辑 listener.ora

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

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

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

HOST 可用 IP 或主机名
PORT 不能冲突


三、用 lsnrctl 启动新监听

lsnrctl start LISTENER2

查看状态:

lsnrctl status LISTENER2

四、重载已有监听(不重启)

如果你只是改了已有监听:

lsnrctl reload

五、让监听开机自启(Debian)

Oracle 不自带 systemd 服务,可手动建:

/etc/systemd/system/oracle-listener.service

[Unit]
Description=Oracle Listener
After=network.target

[Service]
Type=forking
User=oracle
Environment=ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable oracle-listener

六、常见问题

  • 没有 lsnrctl:没装 Oracle 或环境变量未设
  • TNS-12545:HOST 不对或端口被占
  • 监听起来但连不上:检查 tnsnames.ora 和防火墙

如果你能告诉我:

  • Oracle 版本
  • 是想加端口还是加实例
  • Debian 版本

我可以给你完全对应的配置示例

0