Oracle rman定时备份策略

一、备份脚本

<1>.0级备份

vim level0_backup.sh

#!/bin/bash

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

dateTime=`date +%Y-%m-%d`

rman cmdfile=/u01/app/ora_backup/backup_scripts/level0_backup.rcv msglog=/u01/app/ora_backup/backup_logs/level0_${dateTime}.log


vim level0_backup.rcv

connect target sys/***@orcl
run{
crosscheck backup;

crosscheck archivelog all;

delete noprompt obsolete;

delete noprompt expired backup;
allocate channel d1 type disk;
allocate channel d2 type disk;
backup incremental level 0  as compressed backupset database format '/dbbak/backup/LEVEL0/level0_%d_%s_%p_%u.bak'
tag='level 0' include current controlfile;
sql'alter system archive log current';
backup as compressed backupset archivelog all format '/dbbak/backup/LEVEL0/log_%d_%s_%p_%u.bak' delete all input;
backup spfile tag='spfile' format='/dbbak/backup/LEVEL0/spfile_%U_%T';
delete force noprompt archivelog all completed before 'sysdate-7'; 
release channel d2;
release channel d1;
}

<2>.1级备份

vim level1_backup.sh

#!/bin/bash

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

dateTime=`date +%Y-%m-%d`

rman cmdfile=/u01/app/ora_backup/backup_scripts/level1_backup.rcv msglog=/u01/app/ora_backup/backup_logs/level1_${dateTime}.log

vim level1_backup.rcv

connect target sys/***@orcl
run{
crosscheck backup;

crosscheck archivelog all;

delete noprompt obsolete;

delete noprompt expired backup;
allocate channel d1 type disk;
backup incremental level 1  as compressed backupset database format '/ora_backup/backup_sets/LEVEL1/level1_%d_%s_%p_%u.bak'
tag='level 1';
sql'alter system archive log current';
backup as compressed backupset archivelog all format '/ora_backup/backup_sets/LEVEL1/log_%d_%s_%p_%u.bak' delete all input;
delete force noprompt archivelog all completed before 'sysdate-7';
release channel d1;
}

<3>.2级备份

vim level2_backup.sh

#!/bin/bash

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

dateTime=`date +%Y-%m-%d`

rman cmdfile=/u01/app/ora_backup/backup_scripts/level2_backup.rcv msglog=/u01/app/ora_backup/backup_logs/level2_${dateTime}.log

vim level2_backup.rcv

connect target sys/***@orcl
run{
crosscheck backup;

crosscheck archivelog all;

delete noprompt obsolete;

delete noprompt expired backup;
allocate channel d1 type disk;
backup incremental level 2  as compressed backupset database format '/ora_backup/backup_sets/LEVEL2/level2_%d_%s_%p_%u.bak'
tag='level 2';
sql'alter system archive log current';
backup as compressed backupset archivelog all format '/ora_backup/backup_sets/LEVEL2/log_%d_%s_%p_%u.bak' delete all input;
delete force noprompt archivelog all completed before 'sysdate-7';
release channel d1;
}

二、每月1号备份脚本

<1>.每月一号定时备份


vim level0_backup_arch.sh

#!/bin/bash

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

dateTime=`date +%Y-%m-%d`

rm -f /ora_archive_bk/arch/LEVEL0/*

rman cmdfile=/u01/app/ora_backup/backup_scripts/level0_backup_arch.rcv msglog=/u01/app/ora_backup/backup_logs/level0_arch_${dateTime}.log

vim level0_backup_arch.rcv

connect target sys/***@orcl
run{
crosscheck backup;

crosscheck archivelog all;

delete noprompt obsolete;

delete noprompt expired backup;
allocate channel d1 type disk;
allocate channel d2 type disk;
backup incremental level 0  as compressed backupset database format '/dbbak/LEVEL0/level0_%d_%s_%p_%u.bak'
tag='level 0' include current controlfile;
sql'alter system archive log current';
backup as compressed backupset archivelog all format '/dbbak/LEVEL0/log_%d_%s_%p_%u.bak' delete all input;
backup spfile tag='spfile' format='/dbbak/LEVEL0/spfile_%U_%T';
delete force noprompt archivelog all completed before 'sysdate-7'; 
release channel d2;
release channel d1;
}

<2>.备份归档文件

vim level0_bk_arch.sh

#!/bin/bash

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

dateTime=`date +%Y%m%d`
cd /dbbak/arch_rar_file

#加密打包拷贝
/usr/local/bin/rar -p"****" a -agYYYYMMDD -ep -ta`date +%F` -r /dbbak/arch_rar_file/BkArc_ /dbbak/LEVEL0/*.* /u01/app/ora_backup/control_backup/*$dateTime*

三、定时脚本

<1>.使用crontab定时执行

crontab -l

0 5 1 * * sh /u01/app/ora_backup/backup_scripts/level0_bk_arch.sh
10 1 * * 0 sh /u01/app/ora_backup/backup_scripts/level0_backup.sh
10 1 1 * * sh /u01/app/ora_backup/backup_scripts/level0_backup_arch.sh
10 1 * * 3,6 sh /u01/app/ora_backup/backup_scripts/level1_backup.sh
10 1 * * 1,2,4,5 sh /u01/app/ora_backup/backup_scripts/level2_backup.sh
#DG备库定时清理应用过的日志
10 1 * * * sh /home/oracle/clear_archlog.sh  

四、定时清理DG归档脚本

vim clear_archlog.sh

#!/bin/sh

BACK_DIR=/home/oracle/clear_archlog

export DATE=`date +%F`

mkdir  $BACK_DIR/$DATE

echo "      " >> $BACK_DIR/$DATE/rman_backup.log

echo `date '+%Y-%m-%d %H:%M:%S'` >> $BACK_DIR/$DATE/rman_backup.log

su - oracle -c "

rman log=$BACK_DIR/$DATE/rman_backup.log target / <<EOF

# delete force archivelog all completed before 'sysdate - 1';  # 这里执行清除归档日志,如果不想手动输入YES,则可以添加noprompt参数

delete force noprompt archivelog all completed before 'sysdate - 2';

exit;

EOF

"

echo "   " >> $BACK_DIR/$DATE/rman_backup.log

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值