在 Debian 上 lsnrctl 不是系统服务,而是 Oracle 监听器的管理工具。
所以“开启 lsnrctl 服务”本质上是 启动 Oracle Listener。
下面按常见情况说明。
lsnrctl 一般位于:
$ORACLE_HOME/bin/lsnrctl
检查:
which lsnrctl
如果没有,说明 Oracle 没装或环境变量没配。
以 oracle 用户为例:
su - oracle
编辑 ~/.bash_profile 或 ~/.bashrc:
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
lsnrctl stop
lsnrctl reload
Oracle 不会自动随系统启动,需要手动配置。
创建服务文件:
sudo nano /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"
Environment="ORACLE_BASE=/u01/app/oracle"
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
查看状态:
sudo systemctl status oracle-listener
/etc/rc.local(老方法)sudo nano /etc/rc.local
添加:
su - oracle -c "lsnrctl start"
并确保:
chmod +x /etc/rc.local
lsnrctl: command not foundTNS-12541: TNS:no listenerlsnrctl✅ 这是 Oracle 组件,不是 Debian 自带软件
Debian 上不存在 lsnrctl 服务,它是 Oracle 的监听管理工具,用
lsnrctl start启动即可,想开机自启就配 systemd。
如果你愿意,可以告诉我:
我可以给你更精确的配置方案。