2010-02-08 2 views
0

Je rencontre un problème avec certains de mes scripts de démarrage Linux, en particulier ceux qui démarrent ma base de données Oracle 10g et mon conteneur oc4j.Démarrer oc4j et oracle en utilisant le script de démarrage rc

J'ai utilisé chkconfig pour dire à Linux de démarrer la base de données avant le conteneur, cependant, il semble que le conteneur commence avant la base de données qu'oc4j n'aime pas du tout. Je peux accéder à ma (mes) application (s), mais je n'ai pas de connexion DB. Si je redémarre oc4j tout fonctionne très bien.

Y a-t-il un moyen de "mettre en pause" le démarrage de oc4j jusqu'à ce que la base de données (et l'écouteur) soient tous les deux démarrés et prêts pour les connexions?

Répondre

1

Mettez-les dans 1 script de démarrage?

start listener 
start database 
start appserver 

Ceci est mon script /etc/init.d/dbora. Ajouter l'appel pour démarrer OC4J

#!/bin/sh 
# chkconfig: 345 99 10 
# description: Oracle auto start-stop script. 
# 
# Set ORA_HOME to be equivalent to the $ORACLE_HOME 
# from which you wish to execute dbstart and dbshut; 
# 
# Set ORA_OWNER to the user id of the owner of the 
# Oracle database in ORA_HOME. 
ORA_HOME=/app/oracle/product/10.2.0/db_1 
ORA_OWNER=oracle 
echo $1 
if [ ! -f $ORA_HOME/bin/dbstart ] 
then 
    echo "Oracle startup: cannot start" 
    exit 
fi 
case "$1" in 
    'start') 
     # Start the Oracle databases: 
     # The following command assumes that the oracle login 
     # will not prompt the user for any values 
     su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" 
     su - $ORA_OWNER -c $ORA_HOME/bin/dbstart 
     su - $ORA_OWNER -c $ORA_HOME/bin/emctl start dbconsole 
     ;; 
    'stop') 
     # Stop the Oracle databases: 
     # The following command assumes that the oracle login 
     # will not prompt the user for any values 
     su - $ORA_OWNER -c $ORA_HOME/bin/emctl stop dbconsole 
     su - $ORA_OWNER -c $ORA_HOME/bin/dbshut 
     su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" 
     ;; 
esac 
+0

Je l'ai fait, malheureusement la base de données ne termine pas l'initialisation tant que le serveur de l'application n'est pas déjà démarré. –

+0

Si vous les exécutez séquentiellement, le contrôle du script 'start database' est renvoyé lorsque la base de données est démarrée et entièrement opérationnelle. Assurez-vous de démarrer l'écouteur en premier pour que la base de données s'enregistre auprès de l'écouteur. –

+0

Merci !!!! Cela a fonctionné parfaitement ... ce n'est pas trop différent de ce que j'avais, mais je suis content que ça marche. –

Questions connexes