在 Linux 平台设置 Oracle 开机自启动主要有以下几种方法,以下以 CentOS 为例进行介绍:
一、使用 rc.local 文件(较简单但不太推荐用于生产环境)
- 编写启动脚本
- 首先,创建一个用于启动 Oracle 服务的脚本文件,例如
/etc/init.d/oracle_start.sh
。在脚本中添加以下内容:
#!/bin/bash # 设置Oracle环境变量 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin # 启动监听器 lsnrctl start # 启动数据库实例 sqlplus / as sysdba <<EOF startup; EOF
- 注意:需要将
ORACLE_HOME
和ORACLE_SID
替换为你实际的 Oracle 安装目录和实例名。
- 赋予脚本执行权限
- 运行以下命令赋予脚本执行权限:
chmod +x /etc/init.d/oracle_start.sh
- 在 rc.local 中添加启动项
- 编辑
/etc/rc.local
文件,在exit 0
之前添加以下内容:
/etc/init.d/oracle_start.sh
- 这种方法的缺点是
rc.local
文件在系统启动过程中较晚执行,并且可能会受到其他因素的干扰。如果rc.local
文件本身出现问题,可能会导致系统启动问题。
二、使用 systemd 服务(推荐)
- 创建 systemd 服务单元文件
- 创建一个名为
oracle.service
的文件,例如放在/usr/lib/systemd/system/
目录下。文件内容如下:
[Unit] Description=Oracle Database Service After=network.target [Service] User=oracle Group=oinstall EnvironmentFile=-/etc/sysconfig/oracle ExecStart=/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart $ORACLE_HOME ExecStop=/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbshut $ORACLE_HOME Restart=always [Install] WantedBy=multi - user.target
- 同样需要将
ORACLE_HOME
和相关用户、组信息替换为实际的内容。EnvironmentFile=-/etc/sysconfig/oracle
这一行表示从/etc/sysconfig/oracle
文件中读取环境变量,如果文件不存在也不会报错。
- 创建环境变量文件(可选)
- 如果在服务单元文件中指定了
EnvironmentFile
,可以创建/etc/sysconfig/oracle
文件,内容如下:
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin
- 根据实际情况修改环境变量的值。
- 重新加载 systemd 配置并设置开机自启动
- 运行以下命令来重新加载 systemd 配置:
systemctl daemon - reload
- 然后设置 Oracle 服务开机自启动:
systemctl enable oracle.service
- 可以使用
systemctl start oracle.service
来手动启动服务,systemctl status oracle.service
来查看服务状态。
通过 systemd 服务的方式设置 Oracle 开机自启动更加规范和可靠,它可以更好地与系统的启动过程集成,并且方便管理和监控服务的状态。