尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Oracle数据库在Linux系统上设置开机自启动详细教程
1. 引言Oracle数据库作为企业级关系型数据库管理系统在Linux服务器上部署后通常需要配置为开机自启动以确保数据库服务在服务器重启后能够自动恢复运行保障业务连续性。本文将详细介绍在主流Linux发行版如CentOS/RHEL 7、Ubuntu 20.04上为Oracle数据库配置开机自启动的多种方法。2. 环境准备与检查在开始配置之前请确保您已具备以下条件操作系统已安装并运行Oracle数据库的Linux服务器本文以CentOS 8/RHEL 8为例原理适用于其他systemd系统。权限使用root用户或具有sudo权限的用户执行配置操作。Oracle环境Oracle数据库已成功安装ORACLE_HOME、ORACLE_SID等环境变量已正确设置。服务状态手动启动数据库确认数据库可以正常启动和关闭。检查当前Oracle服务状态# 切换到Oracle软件所有者通常是oracle用户su- oracle# 检查数据库实例状态sqlplus / as sysdba SQLselectstatus fromv$instance;SQLexit3. 方法一使用Oracle自带的dbstart/dbshut脚本传统方式Oracle安装后在$ORACLE_HOME/bin目录下提供了dbstart和dbshut脚本可用于启动和关闭数据库。3.1 配置/etc/oratab文件/etc/oratab文件是dbstart和dbshut脚本读取的配置文件用于决定哪些数据库实例需要自动启动。编辑/etc/oratab文件sudovi/etc/oratab修改目标实例行找到对应您的数据库实例的行格式为ORACLE_SID:ORACLE_HOME:Y|N将最后的N改为Y表示允许自动启动。示例# 修改前 orcl:/u01/app/oracle/product/19.0.0/dbhome_1:N # 修改后 orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y验证配置# 手动测试dbstart脚本sudosu- oracle-c$ORACLE_HOME/bin/dbstart3.2 创建Systemd服务单元文件推荐用于CentOS/RHEL 7、Ubuntu 16.04对于使用systemd的现代Linux发行版创建服务文件是最规范的方式。创建Oracle数据库服务文件sudovi/etc/systemd/system/oracle-database.service添加以下内容请根据实际路径修改[Unit] DescriptionOracle Database Service Afternetwork.target syslog.target [Service] Typeforking EnvironmentORACLE_HOME/u01/app/oracle/product/19.0.0/dbhome_1 EnvironmentORACLE_SIDorcl EnvironmentPATH/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:$ORACLE_HOME/bin Useroracle Groupoinstall ExecStart/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME ExecStop/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME TimeoutSec300 Restarton-failure [Install] WantedBymulti-user.target重新加载systemd配置sudosystemctl daemon-reload启用开机自启动sudosystemctlenableoracle-database.service启动服务并检查状态# 启动服务sudosystemctl start oracle-database.service# 检查服务状态sudosystemctl status oracle-database.service# 查看服务日志sudojournalctl-uoracle-database.service-f4. 方法二使用Oracle Restart适用于单实例和RACOracle Restart是Oracle提供的高可用性解决方案的一部分可以管理Oracle数据库、监听器、ASM等组件的自动启动。4.1 安装和配置Oracle Restart以root用户执行root.sh脚本cd$ORACLE_HOMEsudo./root.sh在提示是否配置Oracle Restart时选择y。将数据库注册到Oracle Restart# 切换到grid用户如果使用Grid Infrastructure或oracle用户srvctladddatabase-dborcl-oraclehome$ORACLE_HOME配置自动启动策略srvctl modify database-dborcl-startoptionAUTO验证配置# 查看数据库配置srvctl config database-dborcl# 手动测试启动srvctl start database-dborcl# 查看状态srvctl status database-dborcl4.2 创建Systemd服务调用Oracle Restart为了让systemd管理Oracle Restart可以创建如下服务文件sudovi/etc/systemd/system/oracle-restart.service添加内容[Unit] DescriptionOracle Restart Service Afternetwork.target [Service] Typeforking EnvironmentORACLE_HOME/u01/app/grid Usergrid Groupasmadmin ExecStart/u01/app/grid/bin/crsctl start has ExecStop/u01/app/grid/bin/crsctl stop has TimeoutSec300 [Install] WantedBymulti-user.target然后启用服务sudosystemctl daemon-reloadsudosystemctlenableoracle-restart.service5. 方法三自定义启动脚本兼容旧系统对于使用SysV init的旧系统如CentOS 6可以使用init.d脚本。5.1 创建init.d脚本创建脚本文件sudovi/etc/init.d/oracledb添加脚本内容#!/bin/bash# chkconfig: 345 99 10# description: Oracle Database Startup/Shutdown ScriptORACLE_HOME/u01/app/oracle/product/19.0.0/dbhome_1ORACLE_OWNERoraclecase$1instart)echoStarting Oracle Database...su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbstart$ORACLE_HOME;;stop)echoStopping Oracle Database...su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbshut$ORACLE_HOME;;restart)echoRestarting Oracle Database...$0stop$0start;;*)echoUsage:$0{start|stop|restart}exit1esacexit0设置权限sudochmod750/etc/init.d/oracledb添加到开机启动# CentOS/RHEL 6sudochkconfig--addoracledbsudochkconfigoracledb on# Ubuntu/Debian使用update-rc.dsudoupdate-rc.d oracledb defaults6. 配置监听器自启动数据库自启动通常需要监听器也一同启动。6.1 修改dbstart脚本可选默认情况下dbstart可能不启动监听器。可以修改$ORACLE_HOME/bin/dbstart脚本取消以下行的注释# 找到并修改大约在第78行附近# START_LSNRTRUE# 改为START_LSNRTRUE6.2 在systemd服务中同时启动监听器修改之前的systemd服务文件在ExecStart中添加监听器启动ExecStart/bin/bash -c $ORACLE_HOME/bin/dbstart $ORACLE_HOME $ORACLE_HOME/bin/lsnrctl start7. 验证与故障排除7.1 验证自启动配置重启服务器测试sudoreboot重启后检查服务状态# 检查systemd服务状态sudosystemctl status oracle-database.service# 检查数据库实例状态su- oracle sqlplus / as sysdba SQLselectinstance_name, status, startup_time fromv$instance;SQLexit# 检查监听器状态lsnrctl status7.2 常见问题与解决方案问题可能原因解决方案服务启动失败ORACLE_HOME路径错误检查服务文件中的路径是否正确数据库无法启动/etc/oratab配置错误确认oratab文件中实例行末尾为:Y权限不足服务运行用户错误确保服务以oracle用户运行监听器未启动dbstart脚本未配置修改dbstart脚本或单独启动监听器启动超时数据库启动慢增加systemd的TimeoutSec值7.3 查看启动日志# 查看systemd服务日志sudojournalctl-uoracle-database.service-n50# 查看Oracle alert日志tail-f$ORACLE_BASE/diag/rdbms/orcl/orcl/trace/alert_orcl.log8. 最佳实践建议测试环境先行在生产环境配置前先在测试环境验证。备份重要文件修改前备份/etc/oratab、服务文件等配置。使用systemd在新系统上优先使用systemd服务管理更规范。监控资源确保服务器有足够内存和存储供Oracle启动。依赖关系确保数据库在网络服务之后启动。文档记录记录所有配置变更便于维护和故障恢复。9. 总结通过本文介绍的三种方法您可以根据自己的Linux发行版和Oracle版本选择合适的开机自启动配置方案。对于现代Linux系统推荐使用systemd服务文件的方式它提供了更好的服务管理、日志记录和依赖控制。无论选择哪种方法都要记得在配置完成后进行充分的测试确保数据库在服务器重启后能够正常自动启动。配置成功后您的Oracle数据库将具备高可用性基础减少因服务器重启导致的服务中断时间为业务系统提供更稳定的数据服务支持。
RELATED

相关推荐

分形思维构建认知体系:从数学到人生的跨学科实践

分形思维构建认知体系:从数学到人生的跨学科实践

1. 项目背景与核心价值这个对话记录项目源于一次关于认知科学的深度探讨,记录了两个思考者从分形几何的基本概念出发,逐步构建出一套完整人生认知体系的思想历程。这种跨学科的思维碰撞非常珍贵,它展现了抽象数学概念如何启发我们对生命本质的…

📅 2026/9/28 18:29:16
Conda 与 uv 对比:Windows 指定 D 盘安装完整指南

Conda 与 uv 对比:Windows 指定 D 盘安装完整指南

Conda 与 uv 到底怎么选?Windows 指定 D 盘安装、避免 C 盘占满的完整指南 本文适用于 Windows 10/11,默认使用 PowerShell,并以 D:\DevTools 作为示例安装目录。 核心目标不是保证 C 盘“一字节都不写入”,而是把真正占空间的程序…

📅 2026/8/24 12:50:54
Unity集成Newtonsoft.Json完整指南:从配置到性能优化

Unity集成Newtonsoft.Json完整指南:从配置到性能优化

1. 项目概述:为什么Unity开发者绕不开Newtonsoft.Json? 如果你在Unity里做过稍微复杂一点的数据处理,比如从服务器拉取一个玩家背包的列表,或者保存一个包含嵌套结构的游戏配置,那你大概率已经和C#自带的 JsonUtility…

📅 2026/9/8 7:11:04
MORE NEWS

更多资讯

📰

RAG实战指南:为AI Agent打造知识获取管道

做 AI Agent 快两年了,有个场景我印象特别深:用户拿着企业内部一堆散落文档来问——"我们的报销制度,单笔超过多少需要分管副总审批?"你让大模型硬答,它要么编一个数字,要么理直气壮地说"我…

📰

【保姆级教程】大模型应用开发:用Python搭建自己的MCP服务并接入TaoToken统一Key通道!

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

mcp sdk——io.modelcontextprotocol.sdk(1)开发mcp server:用 TaoToken 统一 Key 打通 JSON-RPC 调试链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Jev模型接入全指南:从密钥申请到Codex集成实践

最近后台留言被一个词刷屏了——Jev。问什么的都有:Jev模型到底是什么?官网在哪?密钥怎么申请?能不能在Codex里直接用?甚至还有人问它开源了没有。作为一个常年泡在各种开发工具和模型服务里的老技术人,我也…

📰

C++ 与 Lua 的协程交互:从原理到实战

1. 引言 在游戏开发与嵌入式脚本领域,Lua 凭借轻量、高效、可嵌入的特性成为最受欢迎的脚本语言之一。而 C 作为高性能底层语言,与 Lua 的结合早已是业界标配。当业务逻辑越来越复杂,异步任务、状态机、迭代器生成等场景不断涌现时&#xff0…

📰

2.8 配置项:constants/ 全局常量体系与 TaoToken 统一 Key 接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬