Pesquisar neste blog

quarta-feira, 15 de outubro de 2008

Starting and Stopping Oracle

Para que o Oracle inicie ou pare ao ligar ou desligar seu servidor iremos criar o script abaixo que resolverá nosso problema.

Para isso precisaremos editar o arquivo /etc/oratab e criar o respectivo script de inicialização.

Primeiro edite o arquivo /etc/oratab. O formato deste arquivo é:

SID:ORACLE_HOME:AUTO_START

Digite Y no campo AUTO_START da base de dados que você quer iniciar automaticamente, e um N para as outras que você não quer. Seu arquivo informa que vai iniciar as bases test1 and test2, e não inicia a test3:

test1:/u01/app/oracle/product/10.1.0/db_1:Y
test2:/u01/app/oracle/product/10.1.0/db_1:Y
test3:/u01/app/oracle/product/10.1.0/db_1:N

Agora nos precisamos criar o script de inicialização chamado /etc/init.d/oracle:

#!/bin/bash
# Run-level Startup script for the Oracle Instance and Listener
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME="/u01/app/oracle/product/10.1.0/Db\_1"
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi

# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
reloadrestart)
$0 stop
$0 start
;;

*)
echo "Usage: $0 startstoprestartreload"
exit 1
esac
exit 0

Para que o script rode no boot, e você poça tratá-lo como serviço "service oracle startstop", faça o seguinte:


ln -s /etc/init.d/oracle /etc/rc.d/rc2.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc4.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc0.d/K01oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc6.d/K01oracle

Nenhum comentário: