如何在Ubuntu上通过lsnrctl配置Oracle服务实现自动启动以确保系统稳定运行?

更新于
2026-10-27 16:39:37
22阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关问答

嘿嘿,大家好!老实说,今天聊聊一个实用方法:如何在 Ubuntu 上使用 lsnrctl 配置 Oracle 服务自动启动。保证程序稳定运行,很多同学常常因为每次开机后手动启动 Oracle 耗时费力。甚至导致业务中断、程序不可靠,这正是我们要解决的痛点。跟着下面的步骤操作,轻松搞定自动启动,让你的服务器“飞起”。

一、什么是 lsnrctl?

lsnrctl 是 Oracle 数据库监听器的命令行管理工具,平时用于启动、停止和查询监听器状态。 虽然它主要负责监听器,但可以借助它配合程序服务。 实现 Oracle 实例的自动启动与关闭。

如何在Ubuntu上通过lsnrctl配置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服务实现自动启动以确保系统稳定运行?

标签:ubuntu

嘿嘿,大家好!老实说,今天聊聊一个实用方法:如何在 Ubuntu 上使用 lsnrctl 配置 Oracle 服务自动启动。保证程序稳定运行,很多同学常常因为每次开机后手动启动 Oracle 耗时费力。甚至导致业务中断、程序不可靠,这正是我们要解决的痛点。跟着下面的步骤操作,轻松搞定自动启动,让你的服务器“飞起”。

一、什么是 lsnrctl?

lsnrctl 是 Oracle 数据库监听器的命令行管理工具,平时用于启动、停止和查询监听器状态。 虽然它主要负责监听器,但可以借助它配合程序服务。 实现 Oracle 实例的自动启动与关闭。

如何在Ubuntu上通过lsnrctl配置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服务实现自动启动以确保系统稳定运行?

标签:ubuntu