如何在Ubuntu上通过lsnrctl配置Oracle服务实现自动启动以确保系统稳定运行?
- 内容介绍
- 文章标签
- 相关问答
嘿嘿,大家好!老实说,今天聊聊一个实用方法:如何在 Ubuntu 上使用 lsnrctl 配置 Oracle 服务自动启动。保证程序稳定运行,很多同学常常因为每次开机后手动启动 Oracle 耗时费力。甚至导致业务中断、程序不可靠,这正是我们要解决的痛点。跟着下面的步骤操作,轻松搞定自动启动,让你的服务器“飞起”。
一、什么是 lsnrctl?
lsnrctl 是 Oracle 数据库监听器的命令行管理工具,平时用于启动、停止和查询监听器状态。
虽然它主要负责监听器,但可以借助它配合程序服务。
实现 Oracle 实例的自动启动与关闭。
二、为什么必须在 Ubuntu 上设置 Oracle 自动启动?
-
⏰手动启动耗时每次程序重启后都需要登录并手动执行
dbstart/dbshut浪费宝贵时间。 - ⚠️业务中断风险如果忘记手动启动。数据库不可用,会导致应用报错、数据不可访问。
- 🔧程序稳定性需求自动化保证了服务在程序 boot 完成后即刻可用,提高整体可靠性。
三、通过 lsnrctl 配置 Systemd 自动启动 Oracle 服务的完整步骤
1. 创建 Systemd 服务单元文件
打开终端并执行:
# sudo nano /etc/systemd/system/oracle.service
2. 在编辑器中写入下面内容
Description=Oracle Database Service
After=network.target
Type=forking
User=oracle
Group=oinstall
# 根据实际安装目录修改下面两行
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.0.0/dbhome_1
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.0.0/dbhome_1
Restart=on-failure
WantedBy=multi-user.target
痛点提醒:如果方法写错或使用者权限不足,服务会一直失败; 不过,这会让你 面对“服务无法启动”的尴尬局面。
3. 保存并退出编辑器
按 Ctrl + X → 输入 Y → 回车确认保存。
4. 重新加载 Systemd 配置并启用服务
# sudo systemctl daemon-reload
# sudo systemctl enable oracle.service
# sudo systemctl start oracle.service
痛点解决:启用后即使程序重启。Oracle 会随 Systemd 自动拉起,再也不用担心忘记手动启动导致业务停摆。
四、使用 lsnrctl` 检查监听器状态
*可选步骤*:在服务成功启动后你仍然需要确认监听器正常工作。
# sudo -u oracle lsnrctl status
If listener is up and shows registered services。your Oracle instance is fully operational.
五、验证服务运行状态
# sudo systemctl status oracle.service
If you see ,恭喜你!Oracle 已经实现了开机自启,程序的稳定性得到明显提高。
六、常见故障排查技巧
- No such file or directory:检查 ExecStart/ExecStop 中的方法是否拼写错误或文件不存在。
- PAM auntication failure:- 确认 Service 中指定的 User拥有执行 dbstart/dbshut 的权限。
-
Status shows failed:- 看日志:
# journalctl -u oracle.service -b -
Lsnrctl reports TNS-12541 after boot:- 确认 listener 配置文件 ) 与实例相匹配,并在 service 启动脚本里加入
lnsrctl start** 命令。
\end{ul}
七、 & 接下来建议
- 将 Oracle 实例交给 Systemd 管理,可彻底摆脱“每次开机手动启动”的痛苦。- 使用 /etc/systemd/system/oracle.service.d/override.conf) 可以进一步自定义 Restart 策略或添加环境变量。- 定期检查日志,确保没有隐藏的错误导致服务意外退出。
嘿嘿,大家好!老实说,今天聊聊一个实用方法:如何在 Ubuntu 上使用 lsnrctl 配置 Oracle 服务自动启动。保证程序稳定运行,很多同学常常因为每次开机后手动启动 Oracle 耗时费力。甚至导致业务中断、程序不可靠,这正是我们要解决的痛点。跟着下面的步骤操作,轻松搞定自动启动,让你的服务器“飞起”。
一、什么是 lsnrctl?
lsnrctl 是 Oracle 数据库监听器的命令行管理工具,平时用于启动、停止和查询监听器状态。
虽然它主要负责监听器,但可以借助它配合程序服务。
实现 Oracle 实例的自动启动与关闭。
二、为什么必须在 Ubuntu 上设置 Oracle 自动启动?
-
⏰手动启动耗时每次程序重启后都需要登录并手动执行
dbstart/dbshut浪费宝贵时间。 - ⚠️业务中断风险如果忘记手动启动。数据库不可用,会导致应用报错、数据不可访问。
- 🔧程序稳定性需求自动化保证了服务在程序 boot 完成后即刻可用,提高整体可靠性。
三、通过 lsnrctl 配置 Systemd 自动启动 Oracle 服务的完整步骤
1. 创建 Systemd 服务单元文件
打开终端并执行:
# sudo nano /etc/systemd/system/oracle.service
2. 在编辑器中写入下面内容
Description=Oracle Database Service
After=network.target
Type=forking
User=oracle
Group=oinstall
# 根据实际安装目录修改下面两行
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.0.0/dbhome_1
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.0.0/dbhome_1
Restart=on-failure
WantedBy=multi-user.target
痛点提醒:如果方法写错或使用者权限不足,服务会一直失败; 不过,这会让你 面对“服务无法启动”的尴尬局面。
3. 保存并退出编辑器
按 Ctrl + X → 输入 Y → 回车确认保存。
4. 重新加载 Systemd 配置并启用服务
# sudo systemctl daemon-reload
# sudo systemctl enable oracle.service
# sudo systemctl start oracle.service
痛点解决:启用后即使程序重启。Oracle 会随 Systemd 自动拉起,再也不用担心忘记手动启动导致业务停摆。
四、使用 lsnrctl` 检查监听器状态
*可选步骤*:在服务成功启动后你仍然需要确认监听器正常工作。
# sudo -u oracle lsnrctl status
If listener is up and shows registered services。your Oracle instance is fully operational.
五、验证服务运行状态
# sudo systemctl status oracle.service
If you see ,恭喜你!Oracle 已经实现了开机自启,程序的稳定性得到明显提高。
六、常见故障排查技巧
- No such file or directory:检查 ExecStart/ExecStop 中的方法是否拼写错误或文件不存在。
- PAM auntication failure:- 确认 Service 中指定的 User拥有执行 dbstart/dbshut 的权限。
-
Status shows failed:- 看日志:
# journalctl -u oracle.service -b -
Lsnrctl reports TNS-12541 after boot:- 确认 listener 配置文件 ) 与实例相匹配,并在 service 启动脚本里加入
lnsrctl start** 命令。
\end{ul}
七、 & 接下来建议
- 将 Oracle 实例交给 Systemd 管理,可彻底摆脱“每次开机手动启动”的痛苦。- 使用 /etc/systemd/system/oracle.service.d/override.conf) 可以进一步自定义 Restart 策略或添加环境变量。- 定期检查日志,确保没有隐藏的错误导致服务意外退出。

