📄 full.sh
字号:
#!/usr/local/bin/bashfirst_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 <<EOFstart $TMP_SQLEOF if [ $? != 0 ] then return $FAIL fi return $SUCCESS }#**************************#* backup_end *#**************************backup_end(){ echo "alter tablespace $1 end backup;" > $TMP_SQL sqlplus -s $USER_PASSWD <<EOFstart $TMP_SQLEOF if [ $? != 0 ] then return $FAIL fi return $SUCCESS }#********************************# Main *#********************************USER_PASSWD=system/systemBACKUP_DEST=$BACKUP_PATH/fullDEVICE=/dev/rmt/ctape1BACKUP_CFG=$TRC/backup.cfgTRC_FILE=$TRC/BACKUP_FULLTMP_SQL=$TRC/backup_full_tmp.sqlSUCCESS=0FAIL=1first_msgrm -f $BACKUP_CFGsqlplus -s $USER_PASSWD <<EOF >/dev/nullset 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,file_name;spool off;exitEOFtr -d ' ' <$TRC/backup.spl >$BACKUP_CFGrm -f $TRC_FILEif [ ! -f $BACKUP_CFG ]then echo "备份配置文件缺失" >$TRC_FILE echo "$BACKUP_CFG not found" exitfimkdir -m 777 -p $BACKUP_DESTif [ ! -d $BACKUP_DEST ]then echo "备份目录创建失败" >$TRC_FILE echo "$BACKUP_DEST create fail" exitficd $BACKUP_DESTrm -f *#*******************************# backup control file *#*******************************echo "==========================================================="echo "正在备份控制文件" > $TRC_FILEecho "Backup control begin on [ 'date' ]"echo "alter database backup controlfile to '$BACKUP_DEST/control.ctl';" > $TMP_SQLsqlplus -s $USER_PASSWD <<EOFstart $TMP_SQLEOFif [ $? != 0 ]then echo "备份控制文件失败" > $TRC_FILE echo "Backup control file fail" exitfi echo "Backup control end on [ 'date' ]"#*******************************# backup tablespaces *#*******************************TABLESPACES='cut -d= -f1 $BACKUP_CFG|uniq'for tablespace in $TABLESPACESdo 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_FILEecho "tar to tape on [ 'date' ]"cd $BACKUP_DESTtar -cvf $DEVICE *if [ $? != 0 ]then echo "备份至磁带失败" > $TRC_FILE echo "tar to tape fail" exitfiecho "tar to tape on [ 'date' ]"echo "==========================================================="echo "全备份已完成" > $TRC_FILEfinal_msg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -