备份脚本内容:
#!/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/oracle11g
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=/oracle/rman_backup/orcl/$BACKUP_DATE
mkdir -p $WORK_DIR
WEEK_DAILY=`date +%a`
echo "Today is : $WEEK_DAILY">>$RMAN_LOG_FILE
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;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset format '$WORK_DIR/full%d_LVL0_%T_%U_s%s' database plus archivelog format '$WORK_DIR/archive%d_LVL0_%T_%U_s%s';
backup format='$WORK_DIR/ctl_%U' current controlfile;
release channel c4;
release channel c3;
release channel c2;
release channel c1;
}
report obsolete;
delete noprompt obsolete;
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
定自动备份任务:
00 02 * * * /bin/sh /oracle/rman_backup/scripts/rmanfororcl.sh