RedHat下Oracle开机自启动

时间:2022-03-29 15:39:08

RedHat下Oracle开机自启动

在完成Oracle安装后每次启动Oracle只能通过手动方式进行启动,但是通过相应的配置实现Oracle的开机自启动具体方法如下所示。

1、修改/etc/oratab文件

#vi /etc/oratab
#先找到orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N 这行并修改为
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y
#这里修改的意思是将不允许自动启动修改为允许自动启动

2、修改dbstart脚本

用oracle用户登陆并编辑$ORACLE_HOME/bin/dbstart这个脚本,找到ORACLE_HOME_LISTNER=$1这行并将其修改为
#ORACLE_HOME_LISTNER=$1
ORACLE_HOME_LISTNER=$ORACLE_HOME

3、Oracle启动

oracle的自启动主要有两种方式(我采用第一种,比较简单方便)
(1)、利用rc.local方式

修改rc.local文件
#oracle
su oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
su oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart

(2)、利用RedHat服务
在/etc/init.d目录建一个oracle脚本文件

#!/bin/sh
#chkconfig: 2345 99 01
#description: ORACLE 11g Server
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
echo "ORACLE cannot start"
exit
fi
case "$1" in
'start')
echo "Starting Oracle Database..."
su - oracle -c "$ORACLE_HOME/bin/dbstart"
su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
;;
'stop')
echo "Stoping Oracle Database"
su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su - oracle -c "$ORACLE_HOME/bin/dbshut"
;;
esac

注意以上其中有两行注释,网上很多脚本因为少了这两行不能使服务自启动:
chkconfig: 2345 99 01
description: ORACLE 11g Server
其中chkconfig:2345 99 01 是指脚本将为运行级2、3、4、5启动oracle 10g服务,启动优先级为99,关闭优先级为01。
然后以root权限:
cd /etc/rc2.d
ln -s /etc/rc.d/init.d/oracle S99oracle
chkconfig –list oracle
chkconfig –level 2345 oracle on
重启系统,就可以在启动的过程中看到 Starting oracle,因为我们设置的优先级为99,一般是最后启动。[OK]以后就可以了。因为要启动emctl,可能有点慢,等待的时间要稍微长一点。
启动以后可以以root执行oracle start或者oracle stop来启动或停止服务。