操作系统平台:RHEL 5
Shell环境:Bash
Oracle:10g2
功能描述:开机时自动切换到oracle用户下,启动oracle的多个实例。并记录数据库的启动情况到自定义的日志文件中。
#!/bin/bash
LOG_PATH=$HOME/oracle_initing.log
log() {
if [ $# -lt 1 -a $# -gt 1 ];then
exit 5
fi
case "$@" in
success)
echo `date +%b" "%d" "%T`" "$PRO": Oracle instence \"$ORACLE_SID\" starting up succefully" >> $LOG_PATH;;
failed)
echo `date +%b" "%d" "%T`" "$PRO": Oracle instence \"$ORACLE_SID\" starting up FAILED" >> $LOG_PATH;;
*)
echo `date +%b" "%d" "%T`" "$PRO": "$@ >> $LOG_PATH;;
esac
}
lsstart() {
# stop stopping
# start starting
lsnrctl >> $LOG_PATH <<EOF
status
start
exit
EOF
}
init_oracle() {
#lsstart stop the listen
# lsstart
HOSTNAME=`hostname |awk -F. '{print $1}'`
PRO=$0
ORACLE_SIDS=`sed -rn '/^([^#].*):/!d;p' /etc/oratab |awk -F: '{printf $1" "}'`
if [ -z "$ORACLE_SIDS" ] ;then
exit 2
else
echo $ORACLE_SIDS
for ORACLE_SID in $ORACLE_SIDS
do
# echo $ORACLE_SID
#start or stop the oracle databases
# startup
# shutdown immediate
if sqlplus -S /nolog >> $LOG_PATH <<EOF
conn / as sysdba
startup
EOF
then
log success
continue
else
log failed
exit 3
fi
done
fi
}
if [ $"$UID" -eq 0 ] ;then
su - oracle
init_oracle
#lsstart start the listen
# lsstart
exit 0
elif [ "$USER" = "oracle" ] ;then
init_oracle
#lsstart start the listen
# lsstart
exit 0
else
exit 4
fi
http://wangxiaoyu.blog.51cto.com/922065/197630