OracleEXP和IMP用法和介绍(4)
来源:asp之家 时间:2010-07-28 13:18:00
备份例子3:联机全库备份数据
#!/usr/local/bin/bash
first_msg()
{
echo "******************************************************"
echo " "
echo "The batch process JOB_BACKUP_FULL is starting at [ 'date' ]"
echo "Excuting by LogName = [ $LOGNAME ]"
echo " "
}
final_msg()
{
echo " "
echo "The batch process JOB_BACKUP_FULL completed at [ 'date' ]"
echo "Excuting by LogName = [ $LOGNAME ]"
echo ">>>>> Please Make Sure That It Has Been Done Successfully, "
echo ">>>>> Otherwise You Must Re-do It."
echo " "
echo "******************************************************"
}
#**************************
#* backup_begin *
#**************************
backup_begin()
{
echo "alter tablespace $1 begin backup;" > $TMP_SQL
sqlplus -s $USER_PASSWD <start $TMP_SQL
EOF
if [ $? != 0 ]
then
return $FAIL
fi
return $SUCCESS
}
#**************************
#* backup_end *
#**************************
backup_end()
{
echo "alter tablespace $1 end backup;" > $TMP_SQL
sqlplus -s $USER_PASSWD <start $TMP_SQL
EOF
if [ $? != 0 ]
then
return $FAIL
fi
return $SUCCESS
}
#********************************
# Main *
#********************************
USER_PASSWD=system/system
BACKUP_DEST=$BACKUP_PATH/full
DEVICE=/dev/rmt/ctape1
BACKUP_CFG=$TRC/backup.cfg
TRC_FILE=$TRC/BACKUP_FULL
TMP_SQL=$TRC/backup_full_tmp.sql
SUCCESS=0
FAIL=1
first_msg
rm -f $BACKUP_CFG
sqlplus -s $USER_PASSWD </dev/null
set heading off;
set term off;
set echo off;
set pagesize 0;
set linesize 1000;
set trimspool on;
set trimout on;
set feedback off;
set colsep =;
spool $TRC/backup.spl;
select tablespace_name,file_name from dba_data_files order by tablespace_name,fi
le_name;
spool off;
exit
EOF
tr -d ' ' <$TRC/backup.spl >$BACKUP_CFG
rm -f $TRC_FILE
if [ ! -f $BACKUP_CFG ]
then
echo "备份配置文件缺失" >$TRC_FILE
echo "$BACKUP_CFG not found"
exit
fi
mkdir -m 777 -p $BACKUP_DEST
if [ ! -d $BACKUP_DEST ]
then
echo "备份目录创建失败" >$TRC_FILE
echo "$BACKUP_DEST create fail"
exit
fi
cd $BACKUP_DEST
rm -f *
#*******************************
# backup control file *
#*******************************
echo "=========================================="
echo "正在备份控制文件" > $TRC_FILE
echo "Backup control begin on [ 'date' ]"
echo "alter database backup controlfile to '$BACKUP_DEST/control.ctl';" > $TMP_SQL
sqlplus -s $USER_PASSWD <start $TMP_SQL
EOF
if [ $? != 0 ]
then
echo "备份控制文件失败" > $TRC_FILE
echo "Backup control file fail"
exit
fi
echo "Backup control end on [ 'date' ]"
#*******************************
# backup tablespaces *
#*******************************
TABLESPACES='cut -d= -f1 $BACKUP_CFG|uniq'
for tablespace in $TABLESPACES
do
echo "=========================================="
echo "正在备份$tablespace" > $TRC_FILE
echo "Backup $tablespace begin on [ 'date' ]"
backup_begin $tablespace
if [ $? != 0 ]
then
echo "备份$tablespace失败" > $TRC_FILE
echo "Turn on backup option of $tablespace fail"
exit
fi
DATAFILES='awk -v var=$tablespace -F = '$1==var {print $2}' $BACKUP_CFG'
for datafile in $DATAFILES
do; if [ ! -r $datafile ]
then
backup_end $tablespace
echo "备份$tablespace失败" > $TRC_FILE
echo "$tablespace:$datafile unreadable"
exit
fi
compress -c $datafile > $BACKUP_DEST/'basename $datafile'.Z
if [ $? != 0 ]
then
backup_end $tablespace
echo "备份$tablespace失败" > $TRC_FILE
echo "Backup $tablespace:$datafile fail"
exit
, fi
done
backup_end $tablespace
echo "Backup $tablespace end on [ 'date' ]"
done
#**************************
# tar files *
#**************************
echo "=========================================="
echo "正在备份至磁带" > $TRC_FILE
echo "tar to tape on [ 'date' ]"
cd $BACKUP_DEST
tar -cvf $DEVICE *
if [ $? != 0 ]
then
echo "备份至磁带失败" > $TRC_FILE
echo "tar to tape fail"
exit
fi
echo "tar to tape on [ 'date' ]"
echo "=========================================="
echo "全备份已完成" > $TRC_FILE
final_msg