Linux下安装完Oracle之后,安装程序并没有将Oracle安装为系统服务,重启系统后,Oracle还要手工启动,通过以下脚本,可以随开机启动Oracle、随关机停止Oracle服务。
[php]##########start of /etc/init.d/oracle################
#!/bin/bash
#
# chkconfig: 35 95 5
# description: Startup/Shutdown script for oracle listener
# and instance;
# tested in CentOS 5.5 x86_64 with Oracle 10gR2
# writen by opensoce@gmail.com
# 11/17/2010
#
# save this shell as /etc/init.d/oracle ,
# then do these:
# chmod +x /etc/init.d/oracle
# ln -s /etc/init.d/oracle /etc/rc3.d/S95oracle
# ln -s /etc/init.d/oracle /etc/rc5.d/S95oracle
# ln -s /etc/init.d/oracle /etc/rc0.d/K05oracle
# ln -s /etc/init.d/oracle /etc/rc1.d/K05oracle
# ln -s /etc/init.d/oracle /etc/rc2.d/K05oracle
# ln -s /etc/init.d/oracle /etc/rc4.d/K05oracle
# ln -s /etc/init.d/oracle /etc/rc6.d/K05oracle
##########################################
case "$1" in
start)
# 如果在/var/lock/subsys 检测不到 oracle标志文件
# 系统关机或重启会将Oracle当做普通程序杀死
# 不论是否正在大量读写数据
touch /var/lock/subsys/oracle
echo "start tsnlisnter"
su - oracle -c "lsnrctl start"
echo "Start Oracle database instance"
su - oracle -c "echo \"
conn / as sysdba
startup
exit \"|sqlplus /nolog"
#echo " Start Emterprise Manager"
#su - oracle -c "emctl start dbconsole"
#echo "Start isqlplus"
#su - oracle -c "isqlplusctl start"
;;
stop)
# 如果在/var/lock/subsys 检测不到 oracle标志文件
# 系统关机或重启会将Oracle当做普通程序杀死
# 不论是否正在大量读写数据
rm -rf /var/lock/subsys/oracle
echo "Shutdown Oracle database instance"
su - oracle -c "echo \"
conn / as sysdba
shutdown immediate
exit \"|sqlplus /nolog"
echo "Stop tsnlisnter"
su - oracle -c "lsnrctl stop"
#echo " Stop Emterprise Manager"
#su - oracle -c "emctl stop dbconsole"
#echo "Stop isqlplus"
#su - oracle -c "isqlplusctl stop"
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
##########end of /etc/init.d/oracle################
[/php]
将改脚本保存为 /etc/init.d/oracle 文件,然后给他执行权限,在命令行下测试是否有效:
[php]/etc/init.d/oracle start
/etc/init.d/oracle stop[/php]
看看能否正常启动、关闭数据库,其中关闭数据库等待时间會稍长一点。如果脚本正常工作,再做如下操作将其安装为系统服务:
[php]ln -s /etc/init.d/oracle /etc/rc3.d/S95oracle
ln -s /etc/init.d/oracle /etc/rc5.d/S95oracle
ln -s /etc/init.d/oracle /etc/rc0.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc1.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc2.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc4.d/K05oracle
ln -s /etc/init.d/oracle /etc/rc6.d/K05oracle[/php]
脚本中的 emctl、isqlplus的启动停止可以根据自己的需要确定是否要开机启动,如果需要开机启动,取消命令前面的注释即可。