ORACLE RMAN 备份脚本

31 篇文章 0 订阅

说明:这里的备份策略以周日全备,周一到周六归档备份为例

全库备份脚本

vim /home/oracle/full_backup.sh

#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '###################################################################'>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log

echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '------------Start FULL Database Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log

rman target / nocatalog log /tmp/full.log append<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup  database format '/data/full/full_%d_%T_%s_%p';
SQL 'alter system archive log current';
SQL 'alter system archive log current';
backup archivelog  all delete input  format '/data/full/arch_%d_%T_%s_%p'; 
backup current controlfile format '/data/full/ctl_%d_%T_%s_%p';
backup spfile format '/data/full/spfile_%d_%T_%s_%p';
}

EOF

echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '--------------End Full Database Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log

rman target / nocatalog log /tmp/full.log append<<EOF
allocate channel  for maintenance type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
EOF
echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '###################################################################'>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log
exit

归档备份脚本

vim /home/oracle/arch_backup.sh

#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '###################################################################'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '------------Start Database Arch Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
rman target / nocatalog log /tmp/arch.log append<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
sql 'alter system archive log current'; 
sql 'alter system archive log current'; 
sql 'alter system archive log current'; 
backup archivelog all format '/data/arch/arch_%d_%T_%s_%p' delete input ;
backup current controlfile format '/data/arch/ctl_%d_%T_%s_%p';
}
EOF

echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '---------------End Databae Arch Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
rman target / nocatalog log /tmp/arch.log append<<EOF
allocate channel  for maintenance type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
EOF
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '###################################################################'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
exit

–给脚本执行权限

chmod a+x /home/oracle/full_backup.sh
chmod a+x /home/oracle/arch_backup.sh

注意如果是DG环境

–如果有dg备库,需要配置归档删除策略,防止备库收到不归档就被删除了。
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
–或者这样写每次只备份和删除半天前的归档
backup archivelog until time ‘sysdate-1/2’ all delete input format ‘/orabak/fullbak/arch_%D_%s_%p_%T’;

Linux 定时任务

–编辑定时任务
crontab -e

0 1 * * 0 bash /home/oracle/full_backup.sh
0 1 * * 1,2,3,4,5,6 bash /home/oracle/arch_backup.sh

crontab -l 查看定时任务

raman 保留策略(根据公司规范或者实际备份空间而定,以四周为列)

rman target /
RMAN>CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 28 DAYS;

最后,每天查看/tmp/full.log 和 /tmp/arch.log备份日志即可,查看是否有报错就好了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值