oracle rman增量备份

前几天刚做了个每天自动执行的rman增量备份,做个笔记记录一下……


--备份策略

星期天 0 级
星期三 1 级
星期一,二,四,五,六 2 级

建议使用备份容灾服务器,在备份容灾服务器做备份,链接到目标数据库


--切换目标服务器到归档模式
SQL> alter system set db_recovery_file_dest_size=5368709120;

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount      
ORACLE instance started.

Total System Global Area  188743680 bytes
Fixed Size                  1218436 bytes
Variable Size              92276860 bytes
Database Buffers           92274688 bytes
Redo Buffers                2973696 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.


--新建备份本地目录 

mkdir -p /home/oracle/backup
mkdir -p /home/oracle/backup/script
mkdir -p /home/oracle/backup/log/rman
mkdir -p /home/oracle/backup/export
--备份目的地
mkdir -p /home/oracle/rman_backup


--创建rman表空间
sqlplus / as sydba

create tablespace rman_tbs datafile '/u01/app/oracle/oradata/ORCL/datafile/rman_tbs01.dbf' size 1024M;

create user rman identified by rman default tablespace rman_tbs temporary tablespace temp;

grant connect,resource ,recovery_catalog_owner to rman;

exit;

rman catalog rman/rman
create catalog tablespace rman_tbs;
exit;

rman target sys/test@目标服务器 catalog rman/rman
register database;
report schema;

configure retention policy to recovery window of 7 days;
configure controlfile autobackup on;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/rman_backup/%T_ctl_%F.bak';


--零级备份RMAN脚本level0_backup.rcv
connect catalog rman/rman
connect target sys/test@目标服务器
run{
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
backup incremental level=0 database format '/home/oracle/rman_backup/%T_Level0_%s_%p.bak' tag='level 0' plus archivelog format '/home/oracle/rman_backup/%T_archive_%s_%p.bak' delete all input;
release channel d3;
release channel d2;
release channel d1;
}
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
resync catalog;

--零级备份SHELL脚本的level0_backup.sh
#!/bin/bash
filename=`date '+%Y%m%d_%a'`
cd $HOME
. .bash_profile
cd $HOME/backup/script
rman cmdfile=level0_backup.rcv msglog=$HOME/backup/log/${filename}.log
. /home/oracle/backup/script/exp_rman.sh


--一级差异增量备份RMAN脚本level1_backup.rcv
connect catalog rman/rman
connect target sys/test@目标服务器
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
backup incremental level=1 database format '/home/oracle/rman_backup/%T_Level1_%s_%p.bak' tag = 'level 1' plus archivelog  format '/home/oracle/rman_backup/%T_archive_%s_%p.bak' delete all input;
release channel d3;
release channel d2;
release channel d1;
}
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
resync catalog;

--一级差异增量备份SHELL脚本level1_backup.sh
#!/bin/bash
filename=`date '+%Y%m%d_%a'`
cd $HOME
. .bash_profile
cd /home/oracle/backup/script
rman cmdfile=level1_backup.rcv msglog=$HOME/backup/log/${filename}.log
. /home/oracle/backup/script/exp_rman.sh


--二级差异增量备份RMAN脚本level2_backup.rcv
connect catalog rman/rman
connect target sys/test@目标服务器
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
backup incremental level=2 database format '/home/oracle/rman_backup/%T_Level2_%s_%p.bak' tag = 'level 2' plus archivelog  format '/home/oracle/rman_backup/%T_archive_%s_%p.bak' delete all input;
release channel d3;
release channel d2;
release channel d1;
}
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
resync catalog;

--二级差异增量备份SHELL脚本level2_backup.sh
#!/bin/bash
filename=`date '+%Y%m%d_%a'`
cd $HOME
. .bash_profile
cd /home/oracle/backup/script
rman cmdfile=level2_backup.rcv msglog=$HOME/backup/log/${filename}.log

. /home/oracle/backup/script/exp_rman.sh



--导出RMAN数据SHELL脚本exp_rman.sh
#!/bin/bash
filename=`date '+%Y%m%d_%a'`
cd $HOME
. .bash_profile
cd $HOME/backup/script
exp rman/rman file=/home/oracle/backup/export/rman_${filename}.dmp log=/home/oracle/backup/log/rman/rman_${filename}.log owner=rman


--定期清理8天前日志文件、备份文件的shell脚本clear_log.sh
#!/bin/bash
find /home/oracle/backup/log -mtime +8 -name "*.log"| xargs rm -rf;
find /home/oracle/backup/log/rman -mtime +8 -name "*.log"| xargs rm -rf;
find /home/oracle/backup/export -mtime +8 -name "*.dmp"| xargs rm -rf;


--为所用的shell脚本分配执行权限
chmod -R 755 script


提高RMAN增量备份性能
alter database enable block change tracking using file
'/u01/app/oracle/admin/orcl/bdump/why_rman.log';


Linux crontab 配置:
[oracle@localhost script]$ crontab -e
0 12 * * 3 /home/oracle/backup/script/level0_backup.sh
0 12 * * 4 /home/oracle/backup/script/level2_backup.sh
0 12 * * 5 /home/oracle/backup/script/level2_backup.sh
0 12 * * 6 /home/oracle/backup/script/level1_backup.sh
0 12 * * 0 /home/oracle/backup/script/level2_backup.sh
0 12 * * 1 /home/oracle/backup/script/level2_backup.sh
0 12 * * 2 /home/oracle/backup/script/level2_backup.sh
0 11 * * 3 /home/oracle/backup/script/clear_log.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值