温馨提示×

debian怎么用lsnrctl管理

小樊
42
2026-09-24 22:53:34
栏目: 智能运维

在 Debian 上使用 lsnrctl 主要是用于管理 Oracle 数据库监听器(Listener)。下面按常见场景给你一个实用指南。


一、前提条件

  1. 已安装 Oracle 数据库(通常是 Oracle Database)
    • lsnrctl 是 Oracle 自带工具,不在 Debian 默认仓库里
  2. 使用 Oracle 用户(通常是 oracle)
    su - oracle
    
  3. 环境变量已配置
    export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
    export PATH=$ORACLE_HOME/bin:$PATH
    

二、查看监听器状态

lsnrctl status

查看指定监听器:

lsnrctl status LISTENER

三、启动监听器

lsnrctl start

指定监听器名:

lsnrctl start LISTENER

四、停止监听器

lsnrctl stop

或:

lsnrctl stop LISTENER

五、重启监听器

Oracle 没有 restart 命令,一般这样操作:

lsnrctl stop
lsnrctl start

六、查看监听器配置

lsnrctl services

显示当前监听器服务的详细信息(实例、端口等)


七、修改监听器配置(listener.ora)

监听器配置通常在:

$ORACLE_HOME/network/admin/listener.ora

示例:

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

修改后需要重启监听器:

lsnrctl stop
lsnrctl start

八、设置开机自启(Debian)

Debian 不像 RHEL 有 oratab + rc.local 的成熟方案,可以:

方法 1:systemd(推荐)

创建:

sudo vi /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.3.0/dbhome_1
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl stop

[Install]
WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload
sudo systemctl enable oracle-listener

九、常见问题

1. command not found

  • 检查 PATH 和 ORACLE_HOME
  • 确认 Oracle 已安装

2. 权限问题

  • 必须用 oracle 用户
  • 不要用 root 直接跑

3. 端口被占用

ss -tulnp | grep 1521

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

  • Oracle 版本(11g / 12c / 19c)
  • Debian 版本
  • 是本地还是远程连接

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

0 踩