Запуск oc4j и oracle с использованием стартового скрипта rc - PullRequest
0 голосов
/ 08 февраля 2010

У меня проблема с парой моих загрузочных скриптов linux, в частности, тех, которые запускают мою базу данных Oracle 10g и мой контейнер oc4j.

Я использовал chkconfig, чтобы указать Linux запустить базу данных перед контейнером, однако кажется, что контейнер запускается до базы данных, которая oc4j не нравится вообще. Я могу добраться до своего приложения, но у меня нет соединений с БД. Если я перезапущу oc4j, все работает просто отлично.

Есть ли способ, которым я могу "приостановить" запуск oc4j до тех пор, пока база данных (и слушатель) не будут запущены и готовы к соединениям?

1 Ответ

1 голос
/ 09 февраля 2010

Поместить их в 1 стартовый скрипт?

start listener
start database
start appserver

Это мой скрипт /etc/init.d/dbora. Добавьте вызов, чтобы начать 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
...