Monday, December 11, 2006

dbora - автостарт базы после ребута сервера

Если быстро и без ASM (проверено на Linux Centos 4.4 с Oracle 10gR2)
1) Исправить /etc/oratab (поменять "N" на "Y")
2) поместить скрипт /etc/init.d/dbora (Листинг ниже)
# ls -l /etc/init.d/dbora
Владельцы и права такие
-rwxr-x--- 1 root dba 785 Mar 14 13:00 /etc/init.d/dbora

3) зарегистрировать сервис
#chkconfig --add dbora

4) проверить наличие сервиса и нужных уровней
# chkconfig --list dbora
dbora 0:on 1:off 2:off 3:on 4:off 5:on 6:on

5) Проверить автостарт базы и листнера перегрузив сервер (init 6). После проверки запущенных сервисов полезно заглянуть в $ORACLE_HOME/shutdown.log (лог остановки базы) и в $ORACLE_HOME/startup.log (лог старта базы).

Листинг /etc/init.d/dbora
==================================
# chkconfig: 0356 99 10
# description: Startup Oracle Instances \
#
ORACLE_OWNER=oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 ### (замените на свой ORACLE_HOME)
case "$1" in
start)
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/subsys/dbora
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/isqlplusctl start" ### закомментировать строку, если не нужен isqlplus
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole" ### закомментировать строку, если не нужен EM
;;
stop)
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/isqlplusctl stop" ### закомментировать строку, если не запущен isqlplus
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole" ### закомментировать строку, если не запущен EM
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/subsys/dbora
su - $ORACLE_OWNER -c "ORACLE_HOME/bin/lsnrctl stop"
;;
*)
echo $"Usage: $prog {start|stop}"
exit 1
esac
exit
=============================================
Если же нужно стартовать базу на базе ASM, то
в /etc/udev/permissions.d/50-udev.permissions
правим атрибуты файлов raw-устройств, напр-р, в разделе # raw devices добавляем raw/*:oracle:dba:0660, удалив (закоментарив) raw/*:root:disk:0660
ram*:root:disk:0660
#raw/*:root:disk:0660
raw/*:oracle:dba:0660
И не забываем в /etc/oratab заменить N на Y
+ASM:/oracle/product/10.2.0/db_1:Y