Автостарт Oracle10g на RHEL AS 4

Виторио
Дата: 01.06.2006 17:08:41
Помогите разобраться в ситуации:
Есть следующий скрипт dbora, который лежит в .etc/init.d

#! /bin/sh
#
# Change the value of ORACLE_HOME to specify the correct Oracle home
# directory for your installation.
#
#ORACLE_HOME=/app/oracle/ora10g
#
# Change the value of ORACLE to the login name of the
# oracle owner at your site.
#
#chkconfig: 345 90 10
#description: Oracle Server
#
#probe: true

ORACLE_HOME=/app/oracle/ora10g
ORACLE=oracle

PATH=${PATH}:$ORACLE_HOME/bin
export ORACLE_HOME PATH

case $1 in
'start')
su -l -c "$ORACLE_HOME/bin/dbstart >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
;;
'stop')
su -l -c "$ORACLE_HOME/bin/lsnrctl stop >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
su -l -c "$ORACLE_HOME/bin/dbshut >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
;;
*)
echo "usage: $0 {start|stop}"
exit
;;
esac
#
exit

Если выполняю руцями dbora start или dbora stop - всё ОК.
При загрузке же сервака останавливается на Start dbora: и стоит ждёт...

Смотрю в boot.log - там последняя строчка:
dbora: Do you want to choose a different one?[n]

Ввожу ему 1 и он топает дальше. Может чего не хватает??? Или он не может разобраться в моём case?
P.S. Для чайника - что для данного скрипта $0 ?
Parkhomets Andrey
Дата: 01.06.2006 21:04:29
Виторио
Помогите разобраться в ситуации:
Есть следующий скрипт dbora, который лежит в .etc/init.d

#! /bin/sh
#
# Change the value of ORACLE_HOME to specify the correct Oracle home
# directory for your installation.
#
#ORACLE_HOME=/app/oracle/ora10g
#
# Change the value of ORACLE to the login name of the
# oracle owner at your site.
#
#chkconfig: 345 90 10
#description: Oracle Server
#
#probe: true

ORACLE_HOME=/app/oracle/ora10g
ORACLE=oracle

PATH=${PATH}:$ORACLE_HOME/bin
export ORACLE_HOME PATH

case $1 in
'start')
su -l -c "$ORACLE_HOME/bin/dbstart >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
;;
'stop')
su -l -c "$ORACLE_HOME/bin/lsnrctl stop >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
su -l -c "$ORACLE_HOME/bin/dbshut >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
;;
*)
echo "usage: $0 {start|stop}"
exit
;;
esac
#
exit

Если выполняю руцями dbora start или dbora stop - всё ОК.
При загрузке же сервака останавливается на Start dbora: и стоит ждёт...

Смотрю в boot.log - там последняя строчка:
dbora: Do you want to choose a different one?[n]

Ввожу ему 1 и он топает дальше. Может чего не хватает??? Или он не может разобраться в моём case?
P.S. Для чайника - что для данного скрипта $0 ?


1.Вызывать выполенения скрипта из /etc/rc.local
2. В /etc/init.d - место для демонов и пингвинов, Oracle RDBMS - пока не то и не другое.
3. $0 - это первое значение которое получил sh (оболочка).
Alex Roudnev
Дата: 02.06.2006 04:55:37
У меня такой скрипт на солярисе глючил, пока в нем не прописали явно

export LOGNAME=oracle

или что то вроде того. Посмотрите на консоли, чего там не хватает (можно без перевызова - ставите скрипт ТОЛЬКО в 5-й ранлевел, и крутите

init 3
init 5

глядя на консоль).

В общем, сравнивайте

env

в вашем логине и в момент выполнения скрипта (можно в скрипте же и скатать в файл).


Parkhomets Andrey
Виторио
Помогите разобраться в ситуации:
Есть следующий скрипт dbora, который лежит в .etc/init.d

#! /bin/sh
#
# Change the value of ORACLE_HOME to specify the correct Oracle home
# directory for your installation.
#
#ORACLE_HOME=/app/oracle/ora10g
#
# Change the value of ORACLE to the login name of the
# oracle owner at your site.
#
#chkconfig: 345 90 10
#description: Oracle Server
#
#probe: true

ORACLE_HOME=/app/oracle/ora10g
ORACLE=oracle

PATH=${PATH}:$ORACLE_HOME/bin
export ORACLE_HOME PATH

case $1 in
'start')
su -l -c "$ORACLE_HOME/bin/dbstart >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
;;
'stop')
su -l -c "$ORACLE_HOME/bin/lsnrctl stop >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
su -l -c "$ORACLE_HOME/bin/dbshut >> $ORACLE_HOME/dbora.log 2>&1" $ORACLE
;;
*)
echo "usage: $0 {start|stop}"
exit
;;
esac
#
exit

Если выполняю руцями dbora start или dbora stop - всё ОК.
При загрузке же сервака останавливается на Start dbora: и стоит ждёт...

Смотрю в boot.log - там последняя строчка:
dbora: Do you want to choose a different one?[n]

Ввожу ему 1 и он топает дальше. Может чего не хватает??? Или он не может разобраться в моём case?
P.S. Для чайника - что для данного скрипта $0 ?


1.Вызывать выполенения скрипта из /etc/rc.local
2. В /etc/init.d - место для демонов и пингвинов, Oracle RDBMS - пока не то и не другое.
3. $0 - это первое значение которое получил sh (оболочка).
SeaGate
Дата: 02.06.2006 06:06:53
Parkhomets Andrey
3. $0 - это первое значение которое получил sh (оболочка).

Вроде как $1 - первое, $0 - имя файла сценария.
__mike__
Дата: 02.06.2006 08:14:11
это скрипт взятый из ASPLinux 7.3 SE - для старта
работал точно (счас RAC - пришлось переписать)

#!/bin/sh
# Copyright (c) 1995-2001 SuSE GmbH Nuernberg, Germany.
# Copyright (c) 2001 Dax Kelson, Guru Labs L.C.
# Copyright (c) 2002 ASPLinux
#
# Startup script for Oracle 9i on Red Hat Linux 7/ ASPLinux 7.x
#
#
# Author: Dax Kelson <dax@gurulabs.com>
# - Cleanups, reorganization
# - Modified for Red Hat Linux 7
# - Based on Suse script
# -Michael Hasenstein <feedback@suse.de>
# - Grigory Bakunov <black@asplinux.ru>
# Edit the /etc/oratab file.
# Database entries in the oratab file appear in the following format:
# ORACLE_SID:ORACLE_HOME:{Y|N}
# where Y or N specifies whether you want the dbstart and dbshut
# scripts to start up and shut down the database.

# chkconfig: - 85 15
# description: The Oracle 9i Database
# config: /etc/oratab
# config: /etc/sysconfig/oracle
# config: /etc/profile.d/oracle.sh

# Source function library.
. /etc/rc.d/init.d/functions

# pull in sysconfig settings
if [ -f /etc/sysconfig/oracle ]; then
. /etc/sysconfig/oracle
else
ORA_OWNER="oracle"
START_ORACLE="no"
START_LISTENER="yes"
START_AGENT="no"
START_ORA_APACHE="no"
START_CMANAGER="no"
fi

test $START_ORACLE = "yes" || exit 0

RETVAL=0

setORAkern() {
# Do these here instead of /etc/sysctl.conf since they are Oracle
# specific, and we don't want to muck unless we are in fact going
# to start Oracle
echo -n $"Tuning kernel paramters for Oracle: "

# Set shared memory parameters
echo ${SHMMAX:-2147483648} > /proc/sys/kernel/shmmax
echo ${SHMMNI:-4096} > /proc/sys/kernel/shmmni

# Set the semaphore parameters:
# see Oracle release notes for Linux for how to set these values
# SEMMSL, SEMMNS, SEMOPM, SEMMNI
echo ${SEMMSL:-250} ${SEMMNS:-32000} ${SEMOPM:-100} ${SEMMNI:-128} > /proc/sys/kernel/sem
echo_success
echo
}


# get and check environment (e.g. ORACLE_HOME)
test -f /etc/profile.d/oracle.sh && . /etc/profile.d/oracle.sh
if [ -z "$ORACLE_HOME" -o ! -d $ORACLE_HOME -o -z "$ORACLE_SID" ]; then
echo "Cannot find ORACLE_HOME directory, or ORACLE_SID not set."
echo -n "Environment settings are wrong? Check /etc/profile.d/oracle.sh"
failure $"Checking Oracle environment"
exit 1
fi

start() {

# the database will not start if no entries in /etc/oratab are "Y"
grep -s -q ":Y" /etc/oratab >&/dev/null || {
echo -n "No entries in /etc/oratab are Y"
failure $"Checking /etc/oratab"
exit 1
}

if [ ! -f $ORACLE_HOME/bin/dbstart -o -z "$ORA_OWNER" ]; then
echo "No such file: \$ORACLE_HOME/bin/dbstart"
echo -n "Oracle could not be found (ORACLE_HOME wrong?)"
failure $"Checking for $ORACLE_HOME/bin/dbstart"
exit 1
fi

setORAkern

echo -n $"Starting Oracle: "
daemon --user $ORA_OWNER $ORACLE_HOME/bin/dbstart
RET1=$?
if [ "${START_LISTENER:-no}" = "yes" ] && [ -x $ORACLE_HOME/bin/lsnrctl ]; then
daemon --user $ORA_OWNER "$ORACLE_HOME/bin/lsnrctl start"
RET2=$?
fi
if [ "${START_AGENT:-no}" = "yes" ] && [ -x $ORACLE_HOME/bin/agentctl ]; then
daemon --user $ORA_OWNER "$ORACLE_HOME/bin/agentctl start"
RET3=$?
fi
if [ "${START_ORA_APACHE:-no}" = "yes" ] && [ -x $ORACLE_HOME/Apache/Apache/bin/apachectl ]; then
# Note: This is because JServ thinks it needs X to resize and do other image file manipulation
# Crazy, I know. - Dax
test -z "$DISPLAY" && export DISPLAY=":42000.0"
daemon --user $ORA_OWNER "$ORACLE_HOME/Apache/Apache/bin/apachectl start"
RET4=$?
fi
if [ "${START_CMANAGER:-no}" = "yes" ] && [ -x $ORACLE_HOME/bin/cmctl ]; then
daemon --user $ORA_OWNER "$ORACLE_HOME/bin/cmctl start"
RET5=$?
fi
if [ $RET1 -eq 0 ] && [ ${RET2:-0} -eq 0 ] && [ ${RET3:-0} -eq 0 ] && [ ${RET4:-0} -eq 0 ] && [ ${RET5:-0} -eq 0 ]; then
touch /var/lock/subsys/oracle
echo_success
echo
return 0
else
failure
echo
return 1
fi

# start iAS
# (to be done)
}

stop() {
echo -n "Stopping Oracle: "

# the database will not stop if no entries in /etc/oratab are "Y"
grep -s -q ":Y" /etc/oratab >&/dev/null || {
echo -n "No entries in /etc/oratab are Y"
failure $"Checking /etc/oratab"
exit 1
}

if [ ! -f $ORACLE_HOME/bin/dbshut -o -z "$ORA_OWNER" ]; then
echo "No such file: \$ORACLE_HOME/bin/dbstart"
echo -n "Oracle could not be found (ORACLE_HOME wrong?)"
failure $"Checking for $ORACLE_HOME/bin/dbshut"
exit 1
fi

if [ "${START_CMANAGER:-no}" = "yes" ] && [ -x $ORACLE_HOME/bin/cmctl ]; then
su - $ORA_OWNER -c "$ORACLE_HOME/bin/cmctl stop" > /dev/null 2>&1
RET5=$?
fi
if [ "${START_ORA_APACHE:-no}" = "yes" ] && [ -x $ORACLE_HOME/Apache/Apache/bin/apachectl ]; then
# Note: This is because JServ thinks it needs X to resize and do other image file manipulation
# Crazy, I know. Needed for stopping too??? - Dax
test -z "$DISPLAY" && export DISPLAY=":42000.0"
su - $ORA_OWNER -c "$ORACLE_HOME/Apache/Apache/bin/apachectl stop" > /dev/null 2>&1
RET4=$?
fi
if [ "${START_AGENT:-no}" = "yes" ] && [ -x $ORACLE_HOME/bin/agentctl ]; then
su - $ORA_OWNER -c "$ORACLE_HOME/bin/agentctl stop" > /dev/null 2>&1
RET3=$?
fi
if [ "${START_LISTENER:-no}" = "yes" ] && [ -x $ORACLE_HOME/bin/lsnrctl ]; then
su - $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop" > /dev/null 2>&1
RET2=$?
fi
su - $ORA_OWNER -c "$ORACLE_HOME/bin/dbshut" > /dev/null 2>&1
RET1=$?
if [ $RET1 -eq 0 ] && [ ${RET2:-0} -eq 0 ] && [ ${RET3:-0} -eq 0 ] && [ ${RET4:-0} -eq 0 ] && [ ${RET5:-0} -eq 0 ]; then
rm -f /var/lock/subsys/oracle
success
echo
return 0
else
failure
echo
return 1
fi

# stop iAS
# (to be done)
}

restart() {
stop
start
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
tunekernel)
setORAkern
;;
condrestart)
[ -f /var/lock/subsys/oracle ] && restart || :
;;
*)
echo "Usage: $0 {start|stop|restart|tunekernel|condrestart}"
exit 1
esac
exit $?
Parkhomets Andrey
Дата: 02.06.2006 12:30:29
SeaGate
Parkhomets Andrey
3. $0 - это первое значение которое получил sh (оболочка).

Вроде как $1 - первое, $0 - имя файла сценария.

$0 первее $1!!! :), а то что "$0 - имя файла сценария" - так это судьба.
bugs-bunney
Дата: 02.06.2006 13:10:40
Не знаю подойдет или нет, но если root и dba одно лицо, и времени на "вылизывание"
процесса автозагрузки пока нет
можно так:

в /etc/rc.d/rc вконец файла добавить команду в роде /home/oracle/dbstart.bash

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

#!/bin/bash
##/home/oracle/dbstart.bash

export ORACLE_BASE=/oracle/product/10.1.0
export ORACLE_HOME=/oracle/product/10.1.0/db_1
export ORACLE_SID=db1
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN

export TEMP=/tmp
export TMPDIR=/tmp
PATH=$PATH:$HOME/bin:/oracle/product/10.1.0/db_1/bin
export PATH
su oracle -c "lsnrctl start"
su oracle -c "sqlplus /nolog @/home/oracle/dbstartup.sql"


------------------------------------------------------------------
------------------------------------------------------------------
--Файл  /home/oracle/dbstartup.sql

connect sys/password as sysdba;
startup;
quit;
------------------------------------------------------------------
Но это только временное решение .
Все равно делать нужно по правильному :)
тп
Дата: 02.06.2006 13:16:13
Intensiv
Дата: 02.06.2006 15:35:47
#!/bin/sh
#
# description: Start Oracle database
# processname: oracle
#

case "$1" in
start)

runuser -l oracle -c "/home/oracle/bin/runoracle start -s -m fast" > /dev/null 2>&1 < /dev/null
touch /var/lock/subsys/oracle
;;
stop)
runuser -l oracle -c "/home/oracle/bin/runoracle stop -s -m fast" > /dev/null 2>&1 < /dev/null
rm -f /var/lock/subsys/oracle
;;
esac

работает в Oracle10g r2 на RHES4 u3
Виторио
Дата: 02.06.2006 18:33:35
Покажи своё runoracle !??