在 Debian 上,lsnrctl 是 Oracle 数据库监听器(Listener) 的管理工具,不是系统自带服务,因此不能直接用 systemctl 启动。需要按 Oracle 的标准方式来操作。
下面按常见情况说明。
lsnrctl 一般位于 Oracle 安装目录,例如:
$ORACLE_HOME/bin/lsnrctl
先确认:
which lsnrctl
或:
echo $ORACLE_HOME
如果没有,说明 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 status
lsnrctl start
成功后会看到类似:
The listener supports no services
或已注册实例。
lsnrctl stop
Oracle 官方 不推荐 systemd 直接管理 lsnrctl,但可以用脚本实现。
lsnrctl start
配合数据库启动:
sqlplus / as sysdba
SQL> startup
创建服务文件:
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
⚠️ 注意:
lsnrctl: command not foundTNS-12541: TNS:no listener✅ 可以,但 Oracle 官方更推荐 RHEL / Oracle Linux
Debian 需要手动处理依赖和内核参数。
✅ Debian 启动 lsnrctl 的标准方式:
su - oracle
lsnrctl start
它不是系统服务,而是 Oracle 组件。
如果你愿意,可以告诉我:
我可以给你更精确的配置步骤。