dg环境数据库rman备份策略制定:主库(primary) 全库备份归档备份删除历史文件夹备库(standby) 删除归档引用说明 主库(primary)$ c
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
--------------------------------------推荐阅读 --------------------------------------
rman 配置归档日志删除策略
oracle基础教程之通过rman复制数据库
rman备份策略制定参考内容
rman备份学习笔记
oracle数据库备份加密 rman加密
--------------------------------------分割线 --------------------------------------
本文永久更新链接地址: