在 Debian 上,lsnrctl 是 Oracle Database Listener 的控制工具,它本身不是 systemd 服务,所以“开机启动”一般有两种做法:
sudo vi /etc/systemd/system/oracle-listener.service
内容示例(按实际路径修改):
[Unit]
Description=Oracle Net Listener
After=network.target
[Service]
Type=forking
User=oracle
Group=oinstall
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
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable oracle-listener
sudo systemctl start oracle-listener
✅ 开机自动启动 listener
sudo vi /etc/rc.local
添加:
su - oracle -c "/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start"
确保:
chmod +x /etc/rc.local
⚠️ Debian 新版本默认没有 rc.local
如果你也启动数据库:
vi /etc/oratab
把:
orcl:/u01/app/oracle/product/19.3.0/dbhome_1:N
改成:
orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y
然后:
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
| 方式 | 推荐度 |
|---|---|
| systemd 服务 | ⭐⭐⭐⭐⭐ |
| rc.local | ⭐⭐ |
| dbstart | ⭐⭐⭐ |
如果你告诉我 Oracle 版本 + Debian 版本,我可以给你一份完全可用的 service 文件。