oracle数据库备份dg,DG环境数据库RMAN备份策略制定

DG环境数据库RMAN备份策略制定:

主库(Primary)

全库备份

归档备份

删除历史文件夹

备库(Standby)

删除归档

引用说明

主库(Primary)

$ crontab -l

0 1 * * * /usr2/backupsh/full_backup.rman

0 */2 * * * /usr2/backupsh/arch_backup.rman

0 3 * * * /usr2/backupsh/del_old.sh全库备份

more /usr2/backupsh/full_backup.rman

#!/bin/bash

foldername=`date +%Y%m%d`

cd /usr2/BACKUP

if [ -d $foldername ]

then

echo    'go on'

else

echo    'need mkdir'

mkdir $foldername

fi

export Oracle_SID=jyzhao

export ORACLE_BASE=/opt/app

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=/usr2/BACKUP/$foldername/LOG_full_$foldername.log <

run{

configure retention policy to recovery window of 5 days;

configure controlfile autobackup on;

configure controlfile autobackup format for device type disk to '/usr2/BACKUP/$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 '/usr2/BACKUP/$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

#!/bin/bash

foldername=`date +%Y%m%d`

cd /usr2/BACKUP

if [ -d $foldername ]

then

echo    'go on'

else

echo    'need mkdir'

mkdir $foldername

fi

export ORACLE_SID=jyzhao

export ORACLE_BASE=/opt/app

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=/usr2/BACKUP/$foldername/LOG_arch_$foldername.log append <

run{

configure retention policy to recovery window of 5 days;

configure controlfile autobackup on;

configure controlfile autobackup format for device type disk to '/usr2/BACKUP/$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 '/usr2/BACKUP/$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

#!/bin/bash

#del old folders

cd /usr2/BACKUP

find . -mtime +7 | xargs rm -rf备库(Standby)

$ crontab -l

0 3 * * * /usr2/del_arch/del_arch.sh删除归档

more /usr2/del_arch/del_arch.sh

#!/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 -tr $ARCHIVE_DIR/|grep -v stdarch | head -1|cut -f2 -d_`

$ORACLE_HOME/bin/sqlplus -silent "/ as sysdba" <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}/1_${del_seq}_830355509.dbf">>$LOG_FILE

rm ${ARCHIVE_DIR}/1_${del_seq}_830355509.dbf

#这里是我定义归档文件的格式,具体根据自己的归档文件格式来匹配,关键是匹配日志的sequence no。

del_seq=$(( $del_seq + 1 ))

done

echo "删除归档日志结束:`date`……">>$LOG_FILE

#清楚controlfile中信息

$ORACLE_HOME/bin/rman target / <>$LOG_FILE

crosscheck archivelog all;

delete expired archivelog all;

YES

exit;

XIFENFEI

echo "………………………………………………………………………………………………………………………">>$LOG_FILE

--------------------------------------推荐阅读 --------------------------------------

--------------------------------------分割线 --------------------------------------

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值