位置: 文档库 > 数据库 > 文档下载预览

《设置CentOS下开机自动启动Oracle.doc》

1. 下载的文档为doc格式,下载后可用word或者wps进行编辑;

2. 将本文以doc文档格式下载到电脑,方便收藏和打印;

3. 下载后的文档,内容与下面显示的完全一致,下载之前请确认下面内容是否您想要的,是否完整.

点击下载文档

设置CentOS下开机自动启动Oracle.doc

《设置CentOS下开机自动启动Oracle》

在Linux系统中,Oracle数据库的稳定运行依赖于系统启动时自动加载相关服务。对于CentOS系统而言,通过配置系统服务(systemd)或传统init脚本,可以实现Oracle实例的开机自启动。本文将详细介绍两种主流方法,并结合实际案例说明配置步骤,同时涵盖常见问题排查与优化建议。

一、Oracle自启动的必要性

在生产环境中,数据库服务的可用性直接影响业务连续性。若系统重启后需手动启动Oracle,可能导致服务中断时间延长。通过配置自启动,可确保数据库在系统启动后自动恢复运行,减少人工干预风险。此外,自动化管理符合DevOps理念,提升运维效率。

二、方法一:使用systemd配置Oracle自启动(推荐)

1. 创建systemd服务文件

CentOS 7及以上版本默认使用systemd作为服务管理器。需在/etc/systemd/system/目录下创建自定义服务文件。以Oracle 19c为例,执行以下操作:

sudo vi /etc/systemd/system/oracle-rdbms.service

文件内容如下(需根据实际环境修改参数):

[Unit]
Description=Oracle Database 19c RDBMS
After=network.target

[Service]
Type=forking
Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
Environment="ORACLE_SID=ORCLCDB"
User=oracle
Group=oinstall
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
TimeoutSec=0
Restart=always

[Install]
WantedBy=multi-user.target

关键参数说明:

- Environment:指定ORACLE_HOME和ORACLE_SID环境变量

- User/Group:运行服务的用户和组(需提前创建)

- ExecStart/ExecStop:启动和停止命令路径

- Restart=always:服务退出后自动重启

2. 修改dbstart脚本(解决监听器未启动问题)

默认dbstart脚本不会启动监听器,需编辑$ORACLE_HOME/bin/dbstart文件,找到以下行:

# ORACLE_HOME_LISTNER=$1
# if [ ! $ORACLE_HOME_LISTNER ] ; then
#   echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener"
#   echo "Usage: $0 ORACLE_HOME"

修改为:

ORACLE_HOME_LISTNER=$ORACLE_HOME
if [ ! $ORACLE_HOME_LISTNER ] ; then
  ORACLE_HOME_LISTNER=$1
fi

并在文件末尾添加监听器启动命令:

lsnrctl start LISTENER_$ORACLE_SID

3. 启用并启动服务

sudo systemctl daemon-reload
sudo systemctl enable oracle-rdbms.service
sudo systemctl start oracle-rdbms.service

验证服务状态:

sudo systemctl status oracle-rdbms.service

三、方法二:使用传统init脚本(CentOS 6兼容方案)

对于仍在使用CentOS 6的系统,可通过/etc/init.d/目录下的脚本实现自启动。

1. 创建init脚本

sudo vi /etc/init.d/oracle
#!/bin/bash
# chkconfig: 345 99 10
# description: Oracle Database Startup Script

ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_SID=ORCLCDB
USER=oracle

case "$1" in
  start)
    su - $USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
    su - $USER -c "$ORACLE_HOME/bin/lsnrctl start"
    ;;
  stop)
    su - $USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
    su - $USER -c "$ORACLE_HOME/bin/lsnrctl stop"
    ;;
  *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac
exit 0

2. 设置权限并添加到服务

sudo chmod 750 /etc/init.d/oracle
sudo chkconfig --add oracle
sudo chkconfig oracle on

四、常见问题排查

1. 环境变量未加载

症状:启动时报错"ORACLE_SID not set"

解决方案:

- 在/etc/profile或oracle用户的.bash_profile中添加:

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=ORCLCDB
export PATH=$ORACLE_HOME/bin:$PATH

- 执行source命令使配置生效

2. 权限不足

症状:启动失败,日志显示"Permission denied"

解决方案:

- 确保oracle用户对$ORACLE_HOME有读写权限

- 检查/etc/oratab文件权限(应为644)

3. 监听器未启动

症状:数据库启动但无法连接

解决方案:

- 确认lsnrctl start命令在脚本中正确执行

- 检查$ORACLE_HOME/network/admin/listener.ora配置

五、优化建议

1. 日志管理

在systemd服务文件中添加日志重定向:

StandardOutput=file:/var/log/oracle/startup.log
StandardError=file:/var/log/oracle/error.log

需提前创建目录并设置权限:

sudo mkdir -p /var/log/oracle
sudo chown oracle:oinstall /var/log/oracle

2. 依赖关系配置

在systemd的[Unit]段添加:

After=network-online.target
Wants=network-online.target

确保网络就绪后再启动Oracle

3. 资源限制调整

编辑/etc/security/limits.conf,添加:

oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

六、验证测试

1. 重启系统验证

sudo reboot

重启后检查:

ps -ef | grep pmon
lsnrctl status

2. 模拟故障恢复

手动停止服务后观察自动重启行为:

sudo systemctl stop oracle-rdbms.service
# 等待30秒后检查状态
sudo systemctl status oracle-rdbms.service

七、安全注意事项

1. 密码管理

- 避免在脚本中硬编码密码

- 使用oracle钱包或OS认证方式

2. 最小权限原则

- oracle用户不应拥有root权限

- 服务文件权限设置为640

3. 防火墙配置

确保防火墙允许1521端口(监听器默认端口):

sudo firewall-cmd --permanent --add-port=1521/tcp
sudo firewall-cmd --reload

关键词:CentOS、Oracle、开机自启动、systemd、init脚本、dbstart、监听器、环境变量、权限管理、服务配置

简介:本文详细介绍了在CentOS系统下配置Oracle数据库开机自动启动的两种方法(systemd和init脚本),涵盖服务文件编写、环境变量配置、监听器管理、权限设置等关键步骤,同时提供了常见问题解决方案和优化建议,帮助运维人员实现Oracle服务的自动化管理。

《设置CentOS下开机自动启动Oracle.doc》
将本文以doc文档格式下载到电脑,方便收藏和打印
推荐度:
点击下载文档