恢复步骤见: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