Linux下Oracle的自动启动与停止

来源:岁月联盟 编辑:zhuzhu 时间:2009-01-08

  1、 修改Oracle系统配置文件/etc/oratab

  /etc/oratab 格式为: SID:ORACLE_HOME:AUTO

  把AUTO域设置为Y(大写),只有这样,oracle 自带的dbstart和dbshut才能够发挥作用。我的为:

  ora9i:/home/oracle/ora/products/9.2.0:Y

  2、 编写服务脚本:

  如下:

#!/bin/bash 
# 
#################FUNCTION############# 
# 
#AutoStartOracleandlistener 
#AutoStopOracleandlistener 
# 
##################################### 
# 
#createdbyZhouYS2003-11-26 
# 
case"$1"in 
start) 
echo"StartingOracleDatabases..." 
echo"-------------------------------------------------">>/var/log/oracle 
date+"%T%a%D:StartingOracleDatabaseeaspartofsystemup.">>/var/log/oracle 
echo"-------------------------------------------------">>/var/log/oracle 
su-oracle-c"dbstart">>/var/log/oracle 
echo"Done." 
echo"StartingOracleListeners..." 
echo"-------------------------------------------------">>/var/log/oracle 
date+"%T%a%D:StartingOracleListenersaspartofsystemup.">>/var/log/oracle 
echo"-------------------------------------------------">>/var/log/oracle 
su-oracle-c"lsnrctlstart">>/var/log/oracle 
echo"Done." 
echo"" 
echo"-------------------------------------------------">>/var/log/oracle 
date+"%T%a%D:Finished.">>/var/log/oracle 
echo"-------------------------------------------------">>/var/log/oracle 
touch/var/lock/subsys/oracle 
;; 
stop) 
echo"StopingOracleListeners..." 
echo"-------------------------------------------------">>/var/log/oracle 
date+"%T%a%D:StopingOracleListeneraspartofsystemdown.">>/var/log/oracle 
echo"-------------------------------------------------">>/var/log/oracle 
su-oracle-c"lsnrctlstop">>/var/log/oracle 
echo"Done." 
rm-f/var/lock/subsys/oracle 
echo"StopingOracleDatabases..." 
echo"-------------------------------------------------">>/var/log/oracle 
date+"%T%a%D:StopingOracleDatabasesaspartofsystemdown.">>/var/log/oracle 
echo"-------------------------------------------------">>/var/log/oracle 
su-oracle-c"dbshut">>/var/log/oracle 
echo"Done." 
echo"" 
echo"-------------------------------------------------">>/var/log/oracle 
date+"%T%a%D:Finished.">>/var/log/oracle 
echo"-------------------------------------------------">>/var/log/oracle 
;; 
restart) 
$0stop 
$0start 
;; 
*) 
echo"Usage:oracle{start|stop|restart}" 
exit1 
esac

  将脚本命名为oracle,保存在/etc/rc.d/init.d下

  改变文件属性:chmod 755 oracle

  注意:在windows下编辑此文件时有DOS格式字符导致在linux下不能够正常运行,建议用gedit 或用 vi编辑

  3、建立服务连接:

  系统启动时启动数据库,我们需要以下连结∶

  --------------------------------------------------------------------------------

  $ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle

  $ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle

  $ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle #rc4.d unused

  --------------------------------------------------------------------------------

  要在重新启动时停止数据库,我们需要以下连结∶

  --------------------------------------------------------------------------------

  $ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止

  $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新启动