Oracle 11gR2单实例数据库设置开机自启,核心是利用Oracle自带的dbstart脚本配合Linux系统的服务管理机制,实现服务器重启后数据库自动拉起,不需要管理员手动执行启动命令。

前置准备
首先确认当前Oracle 11gR2单实例数据库运行正常,且已经安装完成,记录下Oracle的安装用户(通常为oracle)、安装基目录(ORACLE_BASE)和家目录(ORACLE_HOME)路径,后续配置都需要用到这些路径。
修改Oracle配置文件
第一步需要修改<code>/etc/oratab</code>文件,这个文件记录了服务器上所有Oracle实例的信息,默认情况下实例的启动标识为N,代表不随dbstart启动,需要改成Y。
用oracle用户编辑该文件:
# 切换到oracle用户 su - oracle # 编辑oratab文件 vi /etc/oratab
找到类似<code>orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N</code>的行,把最后的N改成Y,修改后内容如下:
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y
其中orcl是你的实例名,路径替换为实际的ORACLE_HOME路径即可。
修改dbstart脚本配置
接下来需要检查dbstart脚本的权限和配置,确保脚本可以正常执行。dbstart脚本位于ORACLE_HOME/bin目录下,首先确认该脚本有执行权限:
ls -l $ORACLE_HOME/bin/dbstart # 如果没有执行权限,执行以下命令添加 chmod +x $ORACLE_HOME/bin/dbstart
然后编辑dbstart脚本,找到<code>ORACLE_HOME_LISTNER</code>变量,默认可能是$1,需要改成实际的监听器路径,或者直接指定ORACLE_HOME:
vi $ORACLE_HOME/bin/dbstart # 找到如下行,修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME
创建系统启动服务
这里以CentOS 6系列系统为例,使用chkconfig管理服务,如果是CentOS 7及以上系统可以使用systemctl配置,逻辑类似。
创建Oracle启动服务脚本,放在<code>/etc/init.d/</code>目录下,命名为oracle:
vi /etc/init.d/oracle
脚本内容如下,注意替换实际的ORACLE_BASE、ORACLE_HOME、ORACLE_USER参数:
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle 11gR2 auto start/stop script
# 配置Oracle相关路径和用户
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_USER=oracle
case "$1" in
start)
echo -n "Starting Oracle 11gR2: "
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart"
echo "OK"
;;
stop)
echo -n "Stopping Oracle 11gR2: "
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
echo "OK"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0保存后给脚本添加执行权限:
chmod +x /etc/init.d/oracle
添加开机启动项
使用chkconfig命令将oracle服务添加到开机启动项:
# 添加服务 chkconfig --add oracle # 设置开机启动 chkconfig oracle on # 查看服务状态 chkconfig --list oracle
如果看到oracle服务在3、4、5运行级别下为on,说明配置成功。
验证配置效果
可以手动重启服务器验证配置是否生效,重启后登录系统,切换到oracle用户,执行以下命令查看实例状态:
su - oracle sqlplus / as sysdba # 在sqlplus中执行 select status from v$instance;
如果返回status为OPEN,说明数据库已经随系统启动自动拉起。也可以直接执行服务命令测试启停:
# 停止数据库 service oracle stop # 启动数据库 service oracle start
如果启停都正常,说明整个开机自启配置完成。
注意事项
- 配置过程中所有路径必须和实际安装路径一致,否则脚本执行会报错
- 确保oracle用户对相关目录有读写执行权限,避免权限不足导致启动失败
- 如果是RHEL/CentOS 7及以上系统,可以把服务脚本改成systemd unit文件,用systemctl管理更方便
- 监听器如果单独配置了非默认路径,需要在dbstart脚本中对应调整监听器路径
Oracle_11gR2单实例数据库开机自启dbstartdbshut修改时间:2026-06-02 17:27:26