前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DG环境数据库RMAN备份策略制定 全库备份 归档备份 删除历史文件夹 删除归档

DG环境数据库RMAN备份策略制定 全库备份 归档备份 删除历史文件夹 删除归档

作者头像
Alfred Zhao
发布2019-05-24 20:42:35
1.3K0
发布2019-05-24 20:42:35
举报

DG环境数据库RMAN备份策略制定: 主库(Primary)

  • 全库备份
  • 归档备份
  • 删除历史文件夹

备库(Standby)

  • 删除归档

引用说明

主库(Primary)

$ crontab -l

代码语言:javascript
复制
0 1 * * * /bin/bash /usr2/backupsh/full_backup.rman
0 */2 * * * /bin/bash /usr2/backupsh/arch_backup.rman
0 3 * * * /bin/bash /usr2/backupsh/del_old.sh

全库备份

more /usr2/backupsh/full_backup.rman

代码语言:javascript
复制
#!/bin/bash
#Make sure your bkdir and change it!
bkdir=/usr2/BACKUP
foldername=`date +%Y%m%d`
mkdir -p $bkdir
cd $bkdir
if [ -d $foldername ]
then 
        echo    'go on'
else
        echo    'need mkdir'
        mkdir $foldername
fi

#oracle environment
export ORACLE_SID=jyzhao
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
#export LD_LIBRARY_PATH=$ORACLE_HOME/lib
#export NLS_LANG="simplified chinese_china.ZHS16GBK"
#export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"

rman target / log=$bkdir/$foldername/LOG_full_$foldername.log <<EOF
run{
configure retention policy to recovery window of 5 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '$bkdir/$foldername/controlfile%F';
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
#backup database skip inaccessible
backup incremental level=0 database
        format '$bkdir/$foldername/full_BACK_%U';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt expired backupset;
delete noprompt obsolete;
exit
EOF

归档备份

more /usr2/backupsh/arch_backup.rman

代码语言:javascript
复制
#!/bin/bash
#Make sure your bkdir and change it!
bkdir=/usr2/BACKUP
foldername=`date +%Y%m%d`
mkdir -p $bkdir
cd $bkdir
if [ -d $foldername ]
then 
        echo    'go on'
else
        echo    'need mkdir'
        mkdir $foldername
fi

#oracle environment
export ORACLE_SID=jyzhao
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
#export LD_LIBRARY_PATH=$ORACLE_HOME/lib
#export NLS_LANG="simplified chinese_china.ZHS16GBK"
#export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"

rman target / log=$bkdir/$foldername/LOG_arch_$foldername.log append <<EOF
run{
configure retention policy to recovery window of 5 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '$bkdir/$foldername/controlfile%F';
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
#backup database skip inaccessible
backup archivelog all delete input
        format '$bkdir/$foldername/arch_BACK_%U';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt expired backupset;
delete noprompt obsolete;
exit
EOF

删除历史文件夹

more /usr2/backupsh/del_old.sh

代码语言:javascript
复制
#!/bin/bash
#del old folders
#Make sure your bkdir and change it!
bkdir=/usr2/BACKUP
cd $bkdir && find . -mtime +7 | xargs rm -rf

备库(Standby)

$ crontab -l

代码语言:javascript
复制
0 3 * * * /usr2/del_arch/del_arch.sh

删除归档

more /usr2/del_arch/del_arch.sh

代码语言:javascript
复制
#!/bin/bash
export ORACLE_SID=jyzhao_s
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1
export ARCHIVE_DIR=/usr2/oradata/archivelog
export LOG_FILE=/usr2/oradata/archivelog/del_archive.log
 
echo "开始删除归档日志:`date`……">>$LOG_FILE
if [ `whoami` != 'oracle' ]
then
echo "Error: You must be oracle to execute.">>$LOG_FILE
exit 99
fi
 
del_seq=`ls -rt $ARCHIVE_DIR/ |grep -v JYZHAO_S| head -1|cut -f4 -d_|cut -f1 -d.`
$ORACLE_HOME/bin/sqlplus -silent "/ as sysdba" <<XFF>tmp.log
set pagesize 0 feedback off verify off heading off echo off
select max(sequence#) from v\$ARCHIVED_LOG where APPLIED='YES';
exit;
XFF
max_sn=`cat tmp.log`
rm tmp.log
max_sn=$(( $max_sn - 20 ))
#我这里是保留最近的20个归档文件,这个具体情况自己决定
 
while [[ ${del_seq} -lt ${max_sn} ]]
do
  echo "${ARCHIVE_DIR}/arch_874084675_1_${del_seq}.arc">>$LOG_FILE
  rm ${ARCHIVE_DIR}/arch_874084675_1_${del_seq}.arc
  #这里是我定义归档文件的格式,具体根据自己的归档文件格式来匹配,关键是匹配日志的sequence no。
  del_seq=$(( $del_seq + 1 ))
done
echo "删除归档日志结束:`date`……">>$LOG_FILE
 
#清楚controlfile中信息
$ORACLE_HOME/bin/rman target / <<XIFENFEI>>$LOG_FILE
crosscheck archivelog all;
delete expired archivelog all;
YES
exit;
XIFENFEI
 
echo "………………………………………………………………………………………………………………………">>$LOG_FILE

引用说明

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-05-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主库(Primary)
    • 全库备份
      • 归档备份
        • 删除历史文件夹
        • 备库(Standby)
          • 删除归档
          • 引用说明
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档