鉴于上次断电问题导致开机后很多的单独数据库不能自动开机,总监又交给小菜一个任务,研究(上网找方法)下数据库开机自启。
小菜终于找到了,原创是centos6.4系统的,小菜用redhat6.5做实验,不得不承认linux家族的团结啊,到哪儿都好使。
言归正传,首先说下涉及修改的文件一共四个:
$ORACLE_HOME/bin/dbstart
$ORACLE_HOME/bin/dbshut
/etc/oratab
/etc/rc.d/init.d/oracle(需要自己创建,具体名字可以自己定)
修改dbstart文件 (oracle用户执行)
vim$ORACLE_HOME/bin/dbstart
找到 ORACLE_HOME_LISTNER=$1 这行, 修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
完成后可以手动运行dbstart文件,来测试是否可以正确启动oracle
用法:./dbstart $ORACLE_HOME 就可以启动oracle
修改dbshut文件 (oracle用户执行)
vim $ORACLE_HOME/bin/dbshut
找到 ORACLE_HOME_LISTNER=$1 这行, 修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
修改oratab文件 (root用户执行)
dbstart文件受/etc/oratab控制,dbstart文件只能启动/etc/oratab文件中第三列为Y的SID。
vim /etc/oratab
应该在最后一行
redhat6:/u01/app/oracle/product/11.2.0/db:Y(我的数据库SID为redhat6,如果没有的话按照这个格式自行添加)
所以将需要启动的oracle实例标志位改成Y
创建/etc/rc.d/init.d/oracle (root用户执行)文件(名称自拟o(∩_∩)o )
touchoracle
chmoda+xoracle
内容如下:
# !/bin/bash
# whoami
# root
# chkconfig: 345 51 49
# description: starts the oracle dabase deamons
#
#ORACLE_HOME=/opt/oracle
ORACLE_OWNER=oracle
ORACLE_DESC="Oracle 11g"
ORACLE_LOCK=/var/lock/subsys/oracle11g
case "$1" in
'start')
echo -n \"Starting ${ORACLE_DESC}:\"
runuser - $ORACLE_OWNER -c '$ORACLE_HOME/bin/lsnrctl start'
runuser - $ORACLE_OWNER -c '$ORACLE_HOME/bin/dbstart'
runuser - $ORACLE_OWNER -c '$ORACLE_HOME/bin/emctl start dbconsole'
touch ${ORACLE_LOCK}
echo
;;
'stop')
echo -n "shutting down ${ORACLE_DESC}: "
runuser - $ORACLE_OWNER -c '$ORACLE_HOME/bin/lsnrctl stop'
runuser - $ORACLE_OWNER -c '$ORACLE_HOME/bin/dbshut'
rm -f ${ORACLE_LOCK}
echo
;;
'restart')
echo -n "restarting ${ORACLE_DESC}:"
$0 stop
$0 start
echo
;;
*)
echo "usage: $0 { start | stop | restart }"
exit 1
esac
exit 0
脚本文件配置完成后,执行开机启动命令:
[root@oracle ~]# chkconfig oracle on
然后监察启动设置:
[root@oracle ~]# chkconfig --list | grep oracle
oracle 0:off 1:off 2:on3:on4:on5:on6:off
现在可以试一下启动和关闭命令:
service oracle start
service oracle stop
或者是重启下虚拟机,发现数据库确实自启动了,大功告成,打完收工。。。。。