备份策略
周日做 0级备份
周 1 周2 做2级备份
周3做1级备份
周4 周5 周6 做 2级备份
周日再做 0级备份
二、rman 的设置
根据备份要求 2 个冗余,设置如下:
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
三、编写备份脚本
零级备份脚本
#!/usr/bin/bash
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=prod
export ARC_PATH= /backup/rman_backup/arch
export RMAN_BAK_PATH=/backup/rman_backup
DATE=`date +%Y%m%d-%H:%M:%S`
rman target / log /home/oracleuser/scripts/log/L0_bk_$DATE.log << EOF 保存rman 备份产生的日志
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
backup incremental level 0 tag 'dbL0' format '$RMAN_BAK_PATH/L0_%U_%t.bak' database ;
sql 'alter system archive log current';
backup filesperset 3 format '$ARC_PATH/arch%t.arc' archivelog all delete input ;
delete noprompt obsolete ;
release channel c1;
release channel c2;
release channel c3;
}
exit;
1级备份脚本
#!/usr/bin/bash
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=prod
export ARC_PATH= /backup/rman_backup/arch
export RMAN_BAK_PATH=/backup/rman_backup
DATE=`date +%Y%m%d-%H:%M:%S`
rman target / log /home/oracleuser/scripts/log/L1_bk_$DATE.log << EOF
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
backup incremental level 0 tag 'dbL1' format '$RMAN_BAK_PATH/L0_%U_%t.bak' database ;
sql 'alter system archive log current';
backup filesperset 3 format '$ARC_PATH/arch%t.arc' archivelog all delete input ;
delete noprompt obsolete ;
release channel c1;
release channel c2;
release channel c3;
}
exit;
2级备份脚本
#!/usr/bin/bash
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=prod
export ARC_PATH= /backup/rman_backup/arch
export RMAN_BAK_PATH=/backup/rman_backup
DATE=`date +%Y%m%d-%H:%M:%S`
rman target / log /home/oracleuser/scripts/log/L2_bk_$DATE.log << EOF
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
backup incremental level 0 tag 'dbL2' format '$RMAN_BAK_PATH/L0_%U_%t.bak' database ;
sql 'alter system archive log current';
backup filesperset 3 format '$ARC_PATH/arch%t.arc' archivelog all delete input ;
delete noprompt obsolete ;
release channel c1;
release channel c2;
release channel c3;
}
exit;
创建计划任务:
bash-2.04$ crontab -e
* * * * 0 /home/oracle/scripts/bin/l0_bk.sh
* * * * 1 2 /home/oracle/scripts/bin/l2_bk.sh
* * * * 3 /home/oracle/scripts/bin/l1_bk.sh
* * * * 4 5 6 /home/oracle/scripts/bin/l2_bk.sh