Как я Установил ORACLE 10 r2 на Gentoo 2005.1
Материал из Gentoo Linux Wiki
- Вернуться в раздел советов
Содержание |
[править] Основная часть
После 3 дней копания в инете и по форумам я установил оракл. Хочу дать несколько рекомендаций.
- Перед установкой сразу установите binutils (я взял binutils-2.16), а также установите libaio (Я нашел ее на сайте Fedora Linux). Главное - чтобы была версия 0.4.
- Не нажимайте клавишу игнорировать при инсталяции, постарайтесь найти проблему (посте пункта 1 у меня все прошло по маслу). Потом будет намного хуже.
Если что, пишите, я поcтараюсь помочь (alien@icon3.ru).
Отбросьте Все скрипты, которые предлагают из оракла: Вот мой(Возражения принимаются):
- Для /etc/init.d/
| Файл: /etc/init.d/oracle |
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
depend() {
use logger dns
need net logger hostname clock
}
start() {
ebegin "Starting Oracle"
/bin/su $ORACLE_OWNER -c "/opt/oracle/script/db_operate start"
eend $? "Failed to start Oracle."
}
stop() {
ebegin "Stopping Oracle"
/bin/su $ORACLE_OWNER -c "/opt/oracle/script/db_operate stop"
eend $? "Failed to stop Oracle."
}
----
# /opt/oracle/script/db_operate (Пока отсутствует поддержка ASM, но, клянусь, допишу =))
----
:
# Скрипт по запуску и останову базы данных. Исполняется только из под Оракла!
source /sbin/functions.sh
ORACLE_OWNER="oracle"
ORACLE_ROOT="/opt/oracle"
ORACLE_HOME="$ORACLE_ROOT/product/10.2.0.1"
ORACLE_LOG="$ORACLE_ROOT/log";
LOGMSG="logger -puser.alert -s "
LISTENER_LOG=$ORACLE_LOG/listener.log
STARTUP_LOG=$ORACLE_LOG/startup.log
SHUTDOWN_LOG=$ORACLE_LOG/shutdown.log
PRG_LISTENER=$ORACLE_HOME/bin/tnslsnr
PRG_LISTENER_CONTROL=$ORACLE_HOME/bin/lsnrctl
ORA_TAB="/etc/oratab"
##### Команды SQLPLUS
SqlPlusStart="sqlplus /nolog"
SqlPlusConnect="connect / as sysdba"
SqlPlusDbShut="shutdown abort"
SqlPlusDbStart="startup pfile"
SqlPlusQuit="quit"
#set path if path not set (if called from /etc/rc)
case $PATH in
"") PATH=/bin:/usr/bin:/etc
export PATH ;
esac
PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/etc ; export PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
##############################################################################
Check(){
error=false;
ebegin "Проверка окружения"
eindent 3;
if [ $ORACLE_OWNER != $USER ]; then
eerror "Запуск скрипта можно только производить из под Пользователя ($ORACLE_OWNER)"
error=true;
fi
if [ ! $ORACLE_HOME ] ; then
eerror "ORACLE_HOME ($ORACLE_HOME) не существует"
error=true;
fi
if [ ! -f $PRG_LISTENER ] ; then
eerror "Листенер ($PRG_LISTENER) не существует"
error=true;
fi
if [ ! -f $PRG_PRG_LISTENER_CONTROL ] ; then
eerror "Листенер-Управление ($PRG_LISTENER_CONTROL) не существует"
error=true;
fi
if [ ! -f $ORA_TAB ] ; then
eerror "Список загружаемых баз данных не найден, проверьте ($ORA_TAB)"
error=true;
fi
eoutdent 3;
if [ $error != false ]; then
eend -1;
return -1;
else
eend 0;
return 0;
fi
}
CheckListener(){
ebegin "Проверка состояния листенера"
CheckLst=`ps -ef | egrep $PRG_LISTENER | grep -v grep`
if [ "$CheckLst" != "" ]; then
LISTENER_START=1;
else
LISTENER_START=0;
fi
eend 0;
}
CheckSid(){
error=false;
eindent 3;
ebegin "Проверка Инстанса $ORACLE_SID"
PFILE="${ORACLE_HOME}/dbs/${ORACLE_SID}.ora"
SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
SPFILE1=${ORACLE_HOME}/dbs/spfile.ora
if [ ! -f $PFILE ] ; then
eerror "Файл настройки инстанса ($PFILE) не найден"
error=true;
fi
if [ -f $SPFILE ] ; then
eerror "Файл $SPFILE не должен существовать"
error=true;
fi
if [ -f $SPFILE1 ] ; then
eerror "Файл $SPFILE1 не должен существовать"
error=true;
fi
eoutdent 3;
if [ $error = true ]; then
eend -1;
return -1;
else
eend 0;
return 0;
fi
}
Hello(){
echo "* Скрипт для запуска и остановки баз данных оракла."
echo "* Версия 1.0"
echo "* Создатель AlienZzzz"
echo "* Для запуска используйте командны $0 [Инстанс] start или stop "
echo "* Если не указан Инстанс, то стартуются все базы, которые "
echo "* Указаны в файле $ORA_TAB"
echo "* Установки по умолчанию (можно поменять в скрипте):"
echo "* ORACLE_ROOT = $ORACLE_ROOT"
echo "* ORACLE_HOME = $ORACLE_HOME"
echo "* ORACLE_LOG = $ORACLE_LOG"
echo "* LOGMSG = $LOGMSG"
echo "* ORA_TAB = $ORA_TAB"
}
IsSIDStarted(){
SIDps=`ps -ef | egrep pmon_$ORACLE_SID | grep -v grep`
if [ "$SIDps" = "" ];
then
SID_STARTED=0;
else
SID_STARTED=1;
fi
}
PrepareLog(){
case $1 in
startup)
LOG_FILE=$STARTUP_LOG;
;;
shutdown)
LOG_FILE=$SHUTDOWN_LOG;
;;
listener_stop)
LOG_FILE=$LISTENER_LOG;
;;
listener_start)
LOG_FILE=$LISTENER_LOG;
;;
esac
touch $LOG_FILE;
if [ ! -w $LOG_FILE ]; then
eerror "Файла для статистики для $1 ($LOG_FILE) не существует или нет доступа";
return -1;
else
einfo "Файл статистики для $1: $LOG_FILE";
return 0;
fi
}
GetSidFromLine(){
if [ "`echo $1 | awk -F: '{print $NF}' -`" = "Y" ] ; then
ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
else
ORACLE_SID="";
fi
}
StartSidEOF(){
$SqlPlusStart <<EOF
$SqlPlusConnect
$SqlPlusDbStart=$PFILE
$SqlPlusQuit
EOF
}
StopSidEOF(){
$SqlPlusStart <<EOF
$SqlPlusConnect
$SqlPlusDbShut
$SqlPlusQuit
EOF
return $?
}
StartSid(){
ORACLE_SID=$1;
IsSIDStarted;
ebegin "Попытка запуска Инстанса $ORACLE_SID";
eindent 3;
error=false;
if [ $SID_STARTED = 1 ]; then
ewarn "Инстанс $ORACLE_SID уже запущен, останавливаю"
StopSid $ORACLE_SID
fi
CheckSid;
if [ $? != 0 ]; then
error=true;
else
PrepareLog "startup";
if [ $? != 0 ]; then
error=true;
else
einfo "Файл параметров для инстанса $ORACLE_SID : $PFILE"
StartSidEOF >> $LOG_FILE 2>&1
IsSIDStarted;
if [ $SID_STARTED = 1 ]; then
einfo "Инстанс $ORACLE_SID запущен "
else
eerror "Инстанс $ORACLE_SID не запущен"
error=true;
fi
fi
fi
eoutdent 3;
if [ $error = false ]; then
eend 0;
return 0;
else
eend -1;
return -1;
fi
}
StopSid(){
ORACLE_SID=$1;
IsSIDStarted;
ebegin "Попытка остановки Инстанса $ORACLE_SID";
eindent 3;
error=false;
if [ $SID_STARTED = 0 ]; then
ewarn "Инстанс $ORACLE_SID не запущен"
eoutdent 3;
eend -1;
return -1;
fi
PrepareLog "shutdown";
StopSidEOF >> $LOG_FILE 2>&1
IsSIDStarted;
if [ $SID_STARTED = 0 ]; then
einfo "Инстанс $ORACLE_SID остановлен"
else
eerror "Инстанс $ORACLE_SID не остановлен"
error=true;
fi
if [ $error = false ]; then
eend 0;
return 0;
else
eend -1;
return -1;
fi
}
StartListener(){
ebegin "Попытка запуска Листенера "
eindent 3;
error=false;
if [ $LISTENER_START = 1 ]; then
ewarn "Листенер уже запущен, останавливаю"
StopListener;
if [ $? != 0 ] ;then
eoutdent 3;
exit;
fi
fi
PrepareLog "listener_start";
$PRG_LISTENER_CONTROL start >> $LOG_FILE 2>&1
if test $? -eq 0 ; then
einfo "Листенер запущен"
else
eerror "Листенер не запущен"
error=true;
fi
eoutdent 3;
if [ $error = false ]; then
eend 0;
return 0;
else
eend -1;
return -1;
fi
}
StopListener(){
ebegin "Попытка остановки Листенера"
eindent 3;
error=false;
PrepareLog "listener_stop";
if [ $LISTENER_START = 1 ]; then
$PRG_LISTENER_CONTROL stop >> $LOG_FILE 2>&1
if test $? -eq 0 ; then
einfo "Листенер остановлен"
else
eerror "Листенер не остановлен"
error=true
fi
else
ewarn "Листенер не был запущен"
fi
if [ $error = false ]; then
eend 0;
else
eend -1;
fi
}
StartAll(){
cat $ORA_TAB | while read LINE
do
case $LINE in
\#*) # Коментарий
;;
*) #Будут обрабатываться записи только с параметрами (Y или N)
GetSidFromLine $LINE
if [ "$ORACLE_SID" = "" ] ; then
continue
else
StartSid $ORACLE_SID;
fi
;;
esac
done
return $?;
}
StopAll(){
cat $ORA_TAB | while read LINE
do
case $LINE in
\#*) # Комментарий
;;
*) #Будут обрабатываться записи только с параметрами (Y или N)
GetSidFromLine $LINE
if [ "$ORACLE_SID" = "" ] ; then
continue
else
StopSid $ORACLE_SID;
fi
;;
esac
done
return $?;
}
# Начало скрипта
CheckListener;
case "$1" in
start)
StartListener;
StartAll;
;;
stop)
StopAll;
StopListener;
;;
*)
case "$2" in
start)
StartListener;
StartSid $1;
;;
stop)
StopSid $1;
;;
*)
Hello
;;
esac
;;
esac
exit
|
