温馨提示×

debian怎么启动lsnrctl服务

小樊
37
2026-07-22 09:34:01
栏目: 智能运维

Debian 上,lsnrctlOracle 数据库监听器(Listener) 的管理工具,不是系统自带服务,因此不能直接用 systemctl 启动。需要按 Oracle 的标准方式来操作。

下面按常见情况说明。


一、确认环境

1. 是否已安装 Oracle

lsnrctl 一般位于 Oracle 安装目录,例如:

$ORACLE_HOME/bin/lsnrctl

先确认:

which lsnrctl

或:

echo $ORACLE_HOME

如果没有,说明 Oracle 还没安装或未配置环境变量


二、配置 Oracle 环境变量(非常重要)

oracle 用户 下操作(不要用 root):

su - oracle

编辑环境变量(以 bash 为例):

vi ~/.bash_profile

加入(示例):

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

生效:

source ~/.bash_profile

三、启动 lsnrctl(监听器)

1. 查看监听器状态

lsnrctl status

2. 启动监听器

lsnrctl start

成功后会看到类似:

The listener supports no services

或已注册实例。

3. 停止监听器

lsnrctl stop

四、让监听器开机自启(Debian 下)

Oracle 官方 不推荐 systemd 直接管理 lsnrctl,但可以用脚本实现。

方法 1:使用 Oracle 自带脚本(推荐)

lsnrctl start

配合数据库启动:

sqlplus / as sysdba
SQL> startup

方法 2: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
sudo systemctl start oracle-listener

⚠️ 注意:

  • 路径必须真实存在
  • 内核参数、权限要满足 Oracle 要求

五、常见问题

1. lsnrctl: command not found

  • 没装 Oracle
  • 或环境变量没配置

2. TNS-12541: TNS:no listener

  • 监听器没启动

3. Debian 上能用吗?

✅ 可以,但 Oracle 官方更推荐 RHEL / Oracle Linux
Debian 需要手动处理依赖和内核参数。


六、总结

✅ Debian 启动 lsnrctl 的标准方式:

su - oracle
lsnrctl start

它不是系统服务,而是 Oracle 组件。


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

  • Oracle 版本(11g / 12c / 19c / 21c)
  • Debian 版本
  • 新安装 还是 已有库

我可以给你更精确的配置步骤。

0