linux,定时冷备份oracle数据shell脚本--亲测有效

恢复步骤见https://www.cnblogs.com/arxive/p/9437152.html
冷备份主要步骤:
1.移除过期的数据,设置保存7天
2.停止数据库
3.复制数据
4.启动数据库
5.更改复制的目录用户名用户组

#cold_backup.sh

#!/bin/sh
time=`date "+%Y%m%d"`
DATE_RM=$(date -d "7 days ago" +%Y%m%d) 
logDir=/u01/coldbackuplog
orabackupDir=/u01/orabackup
oracleHome=/home/oracle/tools/oracle11g

dataOriDir=$oracleHome/oradata/orcl
recoverOriDir=$oracleHome/flash_recovery_area/orcl
dbsOriDir=$oracleHome/product/11.2.0/dbhome_1/dbs
pfileOriDir=$oracleHome/admin/orcl
networkOriDir=$oracleHome/product/11.2.0/dbhome_1/network/admin

dataTarDir=$orabackupDir/`date "+%Y%m%d"`/oradata
recoverTarDir=$orabackupDir/`date "+%Y%m%d"`/flash_recovery_area
dbsTarDir=$orabackupDir/`date "+%Y%m%d"`/dbhome_1
pfileTarDir=$orabackupDir/`date "+%Y%m%d"`/admin
networkTarDir=$orabackupDir/`date "+%Y%m%d"`/network

oriArr=($dataOriDir $recoverOriDir $dbsOriDir $pfileOriDir $networkOriDir)
tarArr=($dataTarDir $recoverTarDir $dbsTarDir $pfileTarDir $networkTarDir)
copyData(){
    
    
        for tarDirectory in ${tarArr[*]}
                do
                        if test -d $tarDirectory
                                then
                                        echo "$tarDirectory目录存在!" 
                                else
                                        echo "$tarDirectory目录不存在!,创建目录!"
                                        mkdir -p $tarDirectory
                        fi
        done
        echo "开始备份数据库数据!"
        for (( i=0;i<${#oriArr[*]};i++))
                do
                        cp -r ${oriArr[i]} ${tarArr[i]}

                done
        echo "备份数据库数据完成!"
}

dbstart(){
    
    
        su - oracle -c "
        sqlplus / as sysdba <<EOF
        startup;
        exit;
        EOF"
        echo "启动数据库成功!"

}

dbstop(){
    
    
        su - oracle -c "
        sqlplus / as sysdba <<EOF
        shutdown immediate;
        exit;
        EOF"
        echo "停止数据库成功!"
}

isDirectory(){
    
    
        if test -d $1
        then
                echo "$1目录存在!"
                else
                        echo "$1目录不存在!,创建目录!"
                        mkdir -p $1
        fi
}

chown(){
    
    
        su root -c "chown -R oracle:oinstall $1"

}

remove(){
    
    
        su root -c "rm -rf $1"
}

removeLog(){
    
    
        find $1 -type f -name "*.log" -mtime +7 -exec rm -rf {
    
    } \;
}

log(){
    
    
        tee -a $1
}
isDirectory $logDir | log $logDir/coldbackup_$time.log
removeLog $logDir | log $logDir/coldbackup_$time.log
remove $orabackupDir/$DATE_RM | log $logDir/coldbackup_$time.log
dbstop | log $logDir/coldbackup_$time.log
copyData | log $logDir/coldbackup_$time.log
dbstart | log $logDir/coldbackup_$time.log
chown $orabackupDir/$time/ | log $logDir/coldbackup_$time.log

定时任务脚本(每天凌晨2点开始备份数据)

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

#列出当前的所有调度任务
crontab  -l
#编辑定时任务脚本
crontab  -e
#每天凌晨2点执行脚本/u01/cold_backup.sh
00 02 * * * /u01/cold_backup.sh

猜你喜欢

转载自blog.csdn.net/weixin_43614067/article/details/109464065