使用crontab计划任务,和rman备份脚本,做一个完整的rman自动备份。
1、计划任务设计:
# crontab -e
00 03 01 * * /home/oracle/rman/dbfull.sh
00 01 * * 0 /home/oracle/rman/db0.sh
00 01 * * 1 /home/oracle/rman/db2.sh
00 01 * * 2 /home/oracle/rman/db2.sh
00 01 * * 3 /home/oracle/rman/db1.sh
00 01 * * 4 /home/oracle/rman/db2.sh
00 01 * * 5 /home/oracle/rman/db2.sh
00 01 * * 6 /home/oracle/rman/db2.sh
计划任务描述:
每个月的1号3点 | 进行一次完全备份 |
---|---|
每个星期日1点 | 一次level 0=全量备份,并且delete obsolete删除旧的全备份和归档日志备份等冗余 |
每个星期一1点 | 一次level 2=累积增量:上次任意级别备份至今的增量(任意一次备份至今) |
每个星期二1点 | 一次level 2=累积增量:上次任意级别备份至今的增量(任意一次备份至今) |
每个星期三1点 | 一次level 1=差异增量:上次全备或lv1至今的增量:无论是否有LV2备份,一律从上次lv1或0至今 |
每个星期四1点 | 一次level 2=累积增量:上次任意级别备份至今的增量(任意一次备份至今) |
每个星期五1点 | 一次level 2=累积增量:上次任意级别备份至今的增量(任意一次备份至今) |
每个星期六1点 | 一次level 2=累积增量:上次任意级别备份至今的增量(任意一次备份至今) |
2、将脚本放在/home/oracle/rman 并赋予可执行权限。
[oracle@RHEL rman]$ pwd
/home/oracle/rman
[oracle@RHEL rman]$ chmod +x *
[oracle@RHEL rman]$ ll -h
total 32K
-rwxr-xr-x 1 root root 230 Mar 11 15:19 db0.sh
-rwxr-xr-x 1 root root 230 Mar 11 15:19 db1.sh
-rwxr-xr-x 1 root root 230 Mar 11 15:19 db2.sh
-rwxr-xr-x 1 root root 414 Mar 11 15:19 dbfull.rcv
-rwxr-xr-x 1 root root 235 Mar 11 15:19 dbfull.sh
-rwxr-xr-x 1 root root 417 Mar 11 15:19 dbl0.rcv
-rwxr-xr-x 1 root root 402 Mar 11 15:19 dbl1.rcv
-rwxr-xr-x 1 root root 402 Mar 11 15:19 dbl2.rcv
3、脚本内容核对,检查文件夹路径、环境变量是否准确。
dbfull.sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4
export ORACLE_SID=zytk
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ORACLE_HOME/bin/rman cmdfile=/home/oracle/rman/dbfull.rcv log=/home/OracleBackup/rmanbak/dbfull_`date '+%Y%m%d'`.log
dbfull.rcv
connect target /
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup full tag 'dbfull' format '/home/OracleBackup/rmanbak/full%u_%s_%p' database include current controlfile;
sql 'alter system archive log current';
backup format '/home/OracleBackup/rmanbak/arch%u_%s_%p' archivelog all delete input;
release channel c1;
release channel c2;
release channel c3;
}
db0.sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4
export ORACLE_SID=zytk
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ORACLE_HOME/bin/rman cmdfile=/home/oracle/rman/dbl0.rcv log=/home/OracleBackup/rmanbak/db0_`date '+%Y%m%d'`.log
db1.sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4
export ORACLE_SID=zytk
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ORACLE_HOME/bin/rman cmdfile=/home/oracle/rman/dbl1.rcv log=/home/OracleBackup/rmanbak/db1_`date '+%Y%m%d'`.log
db2.sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4
export ORACLE_SID=zytk
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ORACLE_HOME/bin/rman cmdfile=/home/oracle/rman/dbl2.rcv log=/home/OracleBackup/rmanbak/db2_`date '+%Y%m%d'`.log
db0.rcv
connect target /
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 0 format '/home/OracleBackup/rmanbak/db0%u_%s_%p' database skip readonly;
sql 'alter system archive log current';
backup format '/home/OracleBackup/rmanbak/arch%u_%s_%p' archivelog all delete input;
delete obsolete;
release channel c1;
release channel c2;
release channel c3;
}
db1.rcv
connect target /
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 1 format '/home/OracleBackup/rmanbak/db1%u_%s_%p' database skip readonly;
sql 'alter system archive log current';
backup format '/home/OracleBackup/rmanbak/arch%u_%s_%p' archivelog all delete input;
release channel c1;
release channel c2;
release channel c3;
}
db2.rcv
connect target /
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 2 format '/home/OracleBackup/rmanbak/db2%u_%s_%p' database skip readonly;
sql 'alter system archive log current';
backup format '/home/OracleBackup/rmanbak/arch%u_%s_%p' archivelog all delete input;
release channel c1;
release channel c2;
release channel c3;
}