Linux下如何建立Oracle服务并实现开机自启动

来源:程序开发作者:新加坡程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《Linux下如何建立Oracle服务并实现开机自启动》,敬请观看详情。很多Linux系统部署Oracle数据库的用户都会遇到服务管理和开机启动的问题,手动启动Oracle不仅操作繁琐,系统重启后还需要重新执行启动命令,影响业务连续性。本文详细介绍在Linux环境下建立Oracle系统服务的完整流程,包括服务脚本的编写、权限配置、服务注册等步骤,同时讲解如何配置开机自启动功能,让Oracle数据库在系统启动时自动运行。内容覆盖不同Linux发行版的适配方法,提供可直接使用的脚本示例,帮助用户快速完成Oracle服务的标准化管理,减少日常运维的工作量。

在Linux系统中部署Oracle数据库后,手动启动服务不仅步骤繁琐,系统重启后还需要重新执行一系列命令,不利于业务的稳定运行。建立标准的Oracle系统服务并配置开机自启动,可以让数据库随系统启动自动运行,大幅降低运维成本。

Linux下如何建立Oracle服务并实现开机自启动

环境准备与前置说明

本文操作基于Oracle 19c版本,Linux系统为CentOS 7及以上发行版,其他版本操作逻辑类似,仅需调整服务管理命令即可。操作前需要确认Oracle已经成功安装,且ORACLE_HOMEORACLE_SID等环境变量配置正确,数据库实例可以正常手动启动。

编写Oracle服务启动脚本

首先需要编写Oracle服务的启动、停止、重启脚本,后续会将这个脚本注册为系统服务。脚本需要兼容系统服务的调用规范,接收start、stop、restart等参数。

#!/bin/bash
# Oracle服务管理脚本
# 配置Oracle环境变量
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

# 获取操作参数
case "$1" in
  start)
    echo "启动Oracle服务..."
    # 启动监听
    lsnrctl start
    # 启动数据库实例
    sqlplus / as sysdba <<EOF
    startup;
    exit;
EOF
    echo "Oracle服务启动完成"
    ;;
  stop)
    echo "停止Oracle服务..."
    # 停止数据库实例
    sqlplus / as sysdba <<EOF
    shutdown immediate;
    exit;
EOF
    # 停止监听
    lsnrctl stop
    echo "Oracle服务停止完成"
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "用法: $0 {start|stop|restart}"
    exit 1
    ;;
esac
exit 0

将脚本保存为/usr/local/bin/oracle_service.sh,然后赋予执行权限:

chmod +x /usr/local/bin/oracle_service.sh

注册Oracle为系统服务

CentOS 7及以上版本使用systemd管理服务,需要编写对应的service配置文件。如果是CentOS 6等使用init的系统,可以编写init脚本放到/etc/init.d/目录下,本文以systemd为例说明。

创建服务配置文件/usr/lib/systemd/system/oracle.service,内容如下:

[Unit]
Description=Oracle Database Service
After=network.target

[Service]
Type=forking
User=oracle
Group=oinstall
ExecStart=/usr/local/bin/oracle_service.sh start
ExecStop=/usr/local/bin/oracle_service.sh stop
ExecReload=/usr/local/bin/oracle_service.sh restart
Restart=on-failure

[Install]
WantedBy=multi-user.target

配置文件说明:

  • After=network.target:确保网络服务启动后再启动Oracle,避免监听启动失败
  • User=oracle:指定以oracle用户运行服务,符合Oracle安装的用户权限要求
  • WantedBy=multi-user.target:设置服务在系统多用户模式下启动,对应开机自启动的场景

配置开机自启动

完成服务注册后,需要重载systemd配置,然后设置开机自启动并启动服务:

# 重载systemd配置
systemctl daemon-reload
# 设置Oracle服务开机自启动
systemctl enable oracle.service
# 启动Oracle服务
systemctl start oracle.service
# 查看服务状态
systemctl status oracle.service

如果服务状态显示active (running),说明Oracle服务已经成功启动。此时重启Linux系统,Oracle数据库会自动随系统启动,无需手动执行启动命令。

常见问题排查

如果服务启动失败,可以通过以下方式排查:

  • 查看服务日志:journalctl -u oracle.service -xe,定位具体错误原因
  • 检查脚本权限:确保oracle用户有执行oracle_service.sh的权限
  • 验证环境变量:手动切换到oracle用户,执行echo $ORACLE_HOME确认环境变量配置正确
  • 检查监听配置:执行lsnrctl status确认监听配置正常,端口没有被占用

按照以上步骤操作,就可以在Linux下完成Oracle服务的建立与开机自启动配置,让数据库运维更加便捷高效。

OracleLinux开机自启动服务配置修改时间:2026-06-06 23:40:42

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。