ORACLE rman备份策略结合crontab

这是开发环境的备份策略,和大家分享一下,有什么好的建议请留言。

建立两个脚本,建立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

 

本文乃原创文章,请勿转载。如须转载请详细标明转载出处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值