DG环境数据库RMAN备份策略制定
DG环境数据库RMAN备份策略制定:
主库(Primary)
主库(Primary)
$ crontab -l
```
0 1 * * * /bin/bash /usr2/backupsh/full_backup.rman
0 */2 * * * /bin/bash /usr2/backupsh/arch_backup.rman
0 3 * * * /bin/bash /usr2/backupsh/del_old.sh
```
全库备份
more /usr2/backupsh/full_backup.rman
```
#!/bin/bash
#Make sure your bkdir and change it!
bkdir=/usr2/BACKUP
foldername=`date +%Y%m%d`
mkdir -p $bkdir
cd $bkdir
if [ -d $foldername ]
then
echo 'go on'
else
echo 'need mkdir'
mkdir $foldername
fi
oracle environment
export ORACLE_SID=jyzhao
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG="simplified chinese_china.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
rman target / log=$bkdir/$foldername/LOG_full_$foldername.log <<EOF
run{
configure retention policy to recovery window of 5 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '$bkdir/$foldername/controlfile%F';
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
backup database skip inaccessible
backup incremental level=0 database
format '$bkdir/$foldername/full_BACK_%U';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt expired backupset;
delete noprompt obsolete;
exit
EOF
<h2 id='1.2'> 归档备份 </h2>
more /usr2/backupsh/arch_backup.rman
!/bin/bash
Make sure your bkdir and change it!
bkdir=/usr2/BACKUP
foldername=date +%Y%m%d
mkdir -p $bkdir
cd $bkdir
if [ -d $foldername ]
then
echo 'go on'
else
echo 'need mkdir'
mkdir $foldername
fi
oracle environment
export ORACLE_SID=jyzhao
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG="simplified chinese_china.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
rman target / log=$bkdir/$foldername/LOG_arch_$foldername.log append <<EOF
run{
configure retention policy to recovery window of 5 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '$bkdir/$foldername/controlfile%F';
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
backup database skip inaccessible
backup archivelog all delete input
format '$bkdir/$foldername/arch_BACK_%U';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt expired backupset;
delete noprompt obsolete;
exit
EOF
<h2 id='1.3'> 删除历史文件夹 </h2>
more /usr2/backupsh/del_old.sh
!/bin/bash
del old folders
Make sure your bkdir and change it!
bkdir=/usr2/BACKUP
cd $bkdir && find . -mtime +7 | xargs rm -rf
<h1 id='2'> 备库(Standby) </h1>
$ crontab -l
0 3 * * * /usr2/del_arch/del_arch.sh
<h2 id='2.1'> 删除归档 </h2>
more /usr2/del_arch/del_arch.sh
!/bin/bash
export ORACLE_SID=jyzhao_s
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1
export ARCHIVE_DIR=/usr2/oradata/archivelog
export LOG_FILE=/usr2/oradata/archivelog/del_archive.log
echo "开始删除归档日志:date……">>$LOG_FILE
if [ whoami != 'oracle' ]
then
echo "Error: You must be oracle to execute.">>$LOG_FILE
exit 99
fi
del_seq=ls -rt $ARCHIVE_DIR/ |grep -v JYZHAO_S| head -1|cut -f4 -d_|cut -f1 -d.
$ORACLE_HOME/bin/sqlplus -silent "/ as sysdba" <tmp.log
set pagesize 0 feedback off verify off heading off echo off
select max(sequence#) from v$ARCHIVED_LOG where APPLIED='YES';
exit;
XFF
max_sn=cat tmp.log
rm tmp.log
max_sn=$(( $max_sn - 20 ))
我这里是保留最近的20个归档文件,这个具体情况自己决定
while [[ ${del_seq} -lt ${max_sn} ]]
do
echo "${ARCHIVE_DIR}/arch_874084675_1_${del_seq}.arc">>$LOG_FILE
rm ${ARCHIVE_DIR}/arch_874084675_1_${del_seq}.arc
这里是我定义归档文件的格式,具体根据自己的归档文件格式来匹配,关键是匹配日志的sequence no。
del_seq=$(( $del_seq + 1 ))
done
echo "删除归档日志结束:date……">>$LOG_FILE
清楚controlfile中信息
$ORACLE_HOME/bin/rman target / <>$LOG_FILE
crosscheck archivelog all;
delete expired archivelog all;
YES
exit;
XIFENFEI
echo "………………………………………………………………………………………………………………………">>$LOG_FILE
<h1 id='3'> 引用说明 </h1>
备库删除归档的脚本参考于惜分飞的博客,原地址如下:
[http://www.xifenfei.com/1144.html](http://www.xifenfei.com/1144.html)
原文说到重点是在读取现在存在的归档日志文件中sequence最小值时,
使用了`ls -tr $ARCHIVE_DIR/|grep -v stdarch | head -1|cut -f2 -d_`
而我这里就根据实际情况改成:`ls -rt $ARCHIVE_DIR/ |grep -v JYZHAO_S| head -1|cut -f4 -d_|cut -f1 -d.`
DG环境数据库RMAN备份策略制定的更多相关文章
- 记录一则RMAN备份策略修正案例
背景:在给某客户处理问题时,发现客户数据库的备份空间即将用尽,进一步查看发现是用户数据库的当前RMAN备份策略存在潜在问题,需要修改备份策略. 环境:SunOS 5.10 + Oracle 11.2. ...
- 生产环境提升rman备份速度----启动块跟踪
生产环境提升rman备份速度----启动块跟踪 [环境] AIX(5300-08).oracle10g(10.2.0.1.0-64bit) [目标] 因为生产环境数据量较大,欲加快rman备份的速度 ...
- RMAN备份策略与异机恢复一例(续篇)
本文是<RMAN备份策略与异机恢复一例>的续篇,继续实验验证,最终实现两个需求: 1.异机恢复临时测试的小库 2.传输归档时,实现增量传输 1.异机恢复临时测试的小库 之前异机恢复的需求已 ...
- RMAN备份策略与异机恢复一例
实验环境: A机器(生产用途):RHEL 6.5 + Oracle 11.2.0.4 + IP Address 192.168.1.11 B机器(备机用途):RHEL 6.5 + Oracle 11. ...
- Oracle RMAN备份策略
建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库 ...
- oracle数据库rman备份计划及恢复
1.rman完全恢复的前提条件:历史的datafile,controlfile和spfile备份,加上完整的archivelog和完好的redolog. 2.rman备份脚本: a.RMAN 0级备份 ...
- 【Oracle】Rman备份策略
1. 查看可设置参数 RMAN> show all; RMAN configuration parameters for database with db_unique_name DRZ are ...
- oracle数据库rman备份与还原
我是oracle 界的小白,由于公司领导要求,不得不硬着头皮在网上找rman备份还原的方法,废话不多说,具体看例子(window) 运行CMD: rman target 管理员账号/密码@orcl 备 ...
- Oracle RAC 实验环境RMAN备份v1.01
Oracle RAC 实验环境RMAN备份v1.01 环境:RHEL 6.5 + Oracle GI 11.2.0.4 + RAC 11.2.0.4 (2 nodes) 需求:制定RAMN备份策略 版 ...
随机推荐
- Tree菜单 复选框选中控制DEMO
java 对应实体类属定义 public class AccoSysmanResource{ /** * 资源类型 */ private Integer resou ...
- 有关DTCoreText无法加载网络图片及应用问题
至于DTCoreText是干嘛的,不清楚的同学自行网上脑补,这就不啰嗦了,只说一下其用法. 里面有三种控件供大家使用,DTAttributedTextView, DTAttributedLabel 和 ...
- vue.js 的学习
官方网站(作者居然是中国人) http://vuejs.org/ Vuex中文手册 http://vuex.vuejs.org Vue-Router 手册 http://router.vuejs.or ...
- 方维 o2o app源码出售
方维 o2o app源码出售 方维o2oapp源码出售 1.本人官方5万购买,现把方维o2o app 源码低价出售: 2.包括网站源码本地搭建包成功提供指导 3.包括网站说明文档,不包含app说明文档 ...
- viso
- Delphi中stringlist分割字符串的用法
Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...
- 文件过滤驱动框架Minispy解析一
因工作需要,研究minispy文件过滤框架,上图为我整理出的其内核部分代码的逻辑.
- Event,delegate,handler之间的关系
在C#或者说.Net的事件处理机制中,有三个关键的概念 - 事件(Event),委托(Delegate)和处理器(Handler),另外在面向对象的背景中,还有另外两个概念 - 发送者(Sender) ...
- 搭建Linux+Jexus+MariaDB+ASP.NET[LJMA]环境
备注:,将我的博客内容整理成册,首先会在博客里优先发布,后续可能的话整理成电子书,主要从linux的最基础内容开始进入Linux的Mono开发方面的话题.本文是我整理博客内容的一篇文章. LJMA 是 ...
- MySQL5.7 新增配置
1.log_timestamps 在5.7.2以后的版本中增加一个单独控制error log , general log,slow log的记录的时间,默认是UTC,需要配置成SYSTEM(本地时间) ...