#!/bin/bash
BACKUP_DATE=`date +%y-%m-%d`
RMAN_LOG_FILE=${0}.out
TODAY=`date`
USER=`id|cut -d "(" -f2|cut -d ")" -f1`
echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE
export ORACLE_HOME=/oracle/product/10.2.0/db_1
export RMAN=$ORACLE_HOME/bin/rman
export ORACLE_SID=orcl
export ORACLE_USER=oracle
echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE
echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE
echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE
echo "==========================================">>$RMAN_LOG_FILE
echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE
echo " ">>$RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
WORK_DIR=/arch/beifen/orcl/$BACKUP_DAT
mkdir -p $WORK_DIR
WEEK_DAILY=`date +%a`
RUN_STR="
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
$RMAN TARGET / msglog $RMAN_LOG_FILE append <<EOF
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup Database format='$WORK_DIR/orcl_full"$WEEK_DAILY"_%U_%T';
backup current controlfile tag='bak_ctlfile' format='$WORK_DIR/ctl_file_%U_%T';
release channel c2;
release channel c1;
}
run{
allocate channel a1 type disk connect sys/xxxxx@xxxx;
allocate channel a2 type disk connect sys/xxxxxx@xxxxxx;
sql 'alter system archive log current';
backup format='$WORK_DIR/arch_%U_%T' archivelog all;
}
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
EOF
"
if [ "$CUSER" = "root" ]
then
echo "Root Command String: $RUN_STR" >> $RMAN_LOG_FILE
su - $ORACLE_USER -c "$RUN_STR" >> $RMAN_LOG_FILE
RSTAT=$?
else
echo "User Command String: $RUN_STR" >> $RMAN_LOG_FILE
/bin/bash -c "$RUN_STR" >> $RMAN_LOG_FILE
RSTAT=$?
fi
# ---------------------------------------------------------------------------
# Log the completion of this script.
# ---------------------------------------------------------------------------
if [ "$RSTAT" = "0" ]
then
LOGMSG="ended successfully"
else
LOGMSG="ended in error"
fi
echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
/bin/mailx -s "RMAN Backup SID " rong.liu@163.com < $RMAN_LOG_FILE
exit $RSTAT