这是开发环境的备份策略,和大家分享一下,有什么好的建议请留言。
建立两个脚本,建立catalog就不在这里说了。
[oracle@server1 rmanback]$ cat cronbak0.sh
ORACLE_HOME=/home/u01/app/oracle/product/11.2.0/db_1;export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib;export LD_LIBRARY_PATH
PATH=$PATH:$ORACLE_HOME/bin:/usr/local/bin;export PATH
echo $ORACLE_HOME
rman target system/acceptance@ghsjdb catalogrmancat/rmancat@catalog <<EOF
RUN { EXECUTE GLOBAL SCRIPT rmanbak0; }
EXIT;
EOF
[oracle@server1 rmanback]$ cat cronbak1.sh
ORACLE_HOME=/home/u01/app/oracle/product/11.2.0/db_1;export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib;export LD_LIBRARY_PATH
PATH=$PATH:$ORACLE_HOME/bin:/usr/local/bin;export PATH
echo $ORACLE_HOME
rman target system/acceptance@ghsjdb catalogrmancat/rmancat@catalog <<EOF
RUN { EXECUTE GLOBAL SCRIPT rmanbak1; }
EXIT;
EOF
建立全局SCRIPT的目的是,其他服务器也可以使用,做到共用一套备份脚本
建立全局rmanba0;
[oracle@server1 rmanback]$ rman targetsystem/acceptance@ghsjdb catalogrmancat/rmancat@catalog
Recovery Manager: Release 11.2.0.3.0 - Production on Mon Nov 17 10:11:55 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: GHSJDB (DBID=1438298054)
connected to recovery catalog database
RMAN> create global script rmanbak0
run{
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup incremental level 0 database format '/home/oracle/rmanback/level0_%d_%s_%p_%u.bak'
plus archivelog format '/home/oracle/rmanback/level0arclog_%d_%s_%p_%u.bak' delete all input;
backup format '/home/oracle/rmanback/cntrl_%s_%p_%t' CURRENT CONTROLFILE;
crosscheck backupset;
delete noprompt expired backup;
delete noprompt obsolete;
release CHANNEL t1 ;
release CHANNEL t2 ;
release CHANNEL t3 ;
release CHANNEL t4 ;
}
RMAN> print global script rmanbak0;
printing stored global script: rmanbak0
run{
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup incremental level 0 database format '/home/oracle/rmanback/level0_%d_%s_%p_%u.bak'
plus archivelog format '/home/oracle/rmanback/level0arclog_%d_%s_%p_%u.bak' delete all input;
backup format '/home/oracle/rmanback/cntrl_%s_%p_%t' CURRENT CONTROLFILE;
crosscheck backupset;
delete noprompt expired backup;
delete noprompt obsolete;
release CHANNEL t1 ;
release CHANNEL t2 ;
release CHANNEL t3 ;
release CHANNEL t4 ;
}
全局rmanbak1
RMAN> print global script rmanbak1;
printing stored global script: rmanbak1
run{
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup incremental level 1 database format '/home/oracle/rmanback/level1_%d_%s_%p_%u.bak'
plus archivelog format '/home/oracle/rmanback/level1arclog_%d_%s_%p_%u.bak' delete all input;
crosscheck backupset;
delete noprompt expired backup;
delete noprompt obsolete;
release CHANNEL t1 ;
release CHANNEL t2 ;
release CHANNEL t3 ;
release CHANNEL t4 ;
}
crontab -e编写
crontab 文件中的行由6个字段组成,不同字段间用空格或tab键分隔。前5个字段指定命令要运行的时间
分钟(0-59)
小时(0-23)
日期(1-31)
月份(1-12)
星期几(0-6,其中0代表星期日,好像7也代表星期日)
第6个字段是一个要在适当时间执行的字符串。
例子:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
下面例子的意思:星期天和星期三的1点进行0级备份,其他时间进行1级备份,并把日志写到cron_rman_bak.log中
> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);
>>
这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
[oracle@server1 rmanback]$ crontab -l
0 1 * * 0 /home/oracle/rmanback/cronbak0.sh > /home/oracle/rmanback/cron_rman_bak.log
0 1 * * 1 /home/oracle/rmanback/cronbak1.sh > /home/oracle/rmanback/cron_rman_bak.log
0 1 * * 2 /home/oracle/rmanback/cronbak1.sh > /home/oracle/rmanback/cron_rman_bak.log
0 1 * * 3 /home/oracle/rmanback/cronbak0.sh > /home/oracle/rmanback/cron_rman_bak.log
0 1 * * 4 /home/oracle/rmanback/cronbak1.sh > /home/oracle/rmanback/cron_rman_bak.log
0 1 * * 5 /home/oracle/rmanback/cronbak1.sh > /home/oracle/rmanback/cron_rman_bak.log
0 1 * * 6 /home/oracle/rmanback/cronbak1.sh > /home/oracle/rmanback/cron_rman_bak.log
本文乃原创文章,请勿转载。如须转载请详细标明转载出处