linux下oracle启动和关闭脚本

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

In many cases after installing Oracle DB on Linux servers, there is a need to configure it to start automatically after OS reboot.

The automatic startup and shutdown of the Oracle database can be achieved with the files dbstart and dbshut both provided by Oracle. These files rely on the existance of the file /etc/oratab to work (although by altering the dbshut and dbstart files this can be moved).

The format of the /etc/oratab file is as follows:

SID:ORACLE_HOME:AUTO

An example:

orcl:/apps/oracle/product/<ora_ver:Y

orcl1:/apps/oracle/product/<ora_ver:N

To start and stop the database when the machine comes up and goes down by modifying the startup routines for the Linux machine. This is quite easy, although I should point out here that this may change depending on which flavour of Linux (Slackware, Debian, RedHat, etc).

I will show examples which work for Redhat Linux. To modify these for your own flavour of Linux, please see your Linux documentation sets. (Although it should hold true for any Sys V type UNIX).

Firstly, we need to create the script which will run dbshut and dbstart in the /etc/rc.d/init.d directory. Create the following file as /etc/rc.d/init.d/oracle:

#!/bin/sh

#

# /etc/rc.d/init.d/oracle

# Description: Starts and stops the Oracle database and listeners

# See how we were called.

case "$1" in

start)

echo -n "Starting Oracle Databases: "

echo "----------------------------------------------------" /var/log/oracle

date +"! %T %a %D : Starting Oracle Databases as part of system up." /var/log/oracle

echo "----------------------------------------------------" /var/log/oracle

su - oracle -c dbstart /var/log/oracle

echo "Done."

echo -n "Starting Oracle Listeners: "

su - oracle -c "lsnrctl start" /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 -n "Shutting Down Oracle Listeners: "

echo "----------------------------------------------------" /var/log/oracle

date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." /var/log/oracle

echo "----------------------------------------------------" /var/log/oracle

su - oracle -c "lsnrctl stop" /var/log/oracle

echo "Done."

rm -f /var/lock/subsys/oracle

echo -n "Shutting Down Oracle Databases: "

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)

echo -n "Restarting Oracle Databases: "

echo "----------------------------------------------------" /var/log/oracle

date +"! %T %a %D : Restarting Oracle Databases as part of system up." /var/log/oracle

echo "----------------------------------------------------" /var/log/oracle

su - oracle -c dbstop /var/log/oracle

su - oracle -c dbstart /var/log/oracle

echo "Done."

echo -n "Restarting Oracle Listeners: "

su - oracle -c "lsnrctl stop" /var/log/oracle

su - oracle -c "lsnrctl start" /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

;;

*)

echo "Usage: oracle {start|stop|restart}"

exit 1

esac

It is worth checking that this file actually correctly stops and starts the databases for your system. Check the log file, /var/log/oracle for error messages.

Once this script is working we need to create start and kill symbolic links in the appropriate runlevel directories /etc/rc.d/rcX.d.

The following commands will ensure that the databases will come up in runlevels 2,3 and 4:

$ 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/rc4.d/S99oracle

To stop the databases on reboot or restart we need the following links:

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

$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # Rebooting

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航