DG环境数据库RMAN备份策略制定:

主库(Primary)

备库(Standby)

引用说明

主库(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备份策略制定的更多相关文章

  1. 记录一则RMAN备份策略修正案例

    背景:在给某客户处理问题时,发现客户数据库的备份空间即将用尽,进一步查看发现是用户数据库的当前RMAN备份策略存在潜在问题,需要修改备份策略. 环境:SunOS 5.10 + Oracle 11.2. ...

  2. 生产环境提升rman备份速度----启动块跟踪

    生产环境提升rman备份速度----启动块跟踪 [环境] AIX(5300-08).oracle10g(10.2.0.1.0-64bit) [目标] 因为生产环境数据量较大,欲加快rman备份的速度 ...

  3. RMAN备份策略与异机恢复一例(续篇)

    本文是<RMAN备份策略与异机恢复一例>的续篇,继续实验验证,最终实现两个需求: 1.异机恢复临时测试的小库 2.传输归档时,实现增量传输 1.异机恢复临时测试的小库 之前异机恢复的需求已 ...

  4. RMAN备份策略与异机恢复一例

    实验环境: A机器(生产用途):RHEL 6.5 + Oracle 11.2.0.4 + IP Address 192.168.1.11 B机器(备机用途):RHEL 6.5 + Oracle 11. ...

  5. Oracle RMAN备份策略

    建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库 ...

  6. oracle数据库rman备份计划及恢复

    1.rman完全恢复的前提条件:历史的datafile,controlfile和spfile备份,加上完整的archivelog和完好的redolog. 2.rman备份脚本: a.RMAN 0级备份 ...

  7. 【Oracle】Rman备份策略

    1. 查看可设置参数 RMAN> show all; RMAN configuration parameters for database with db_unique_name DRZ are ...

  8. oracle数据库rman备份与还原

    我是oracle 界的小白,由于公司领导要求,不得不硬着头皮在网上找rman备份还原的方法,废话不多说,具体看例子(window) 运行CMD: rman target 管理员账号/密码@orcl 备 ...

  9. 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备份策略 版 ...

随机推荐

  1. bat获取所有的参数

    bat默认只能获取到1-9个参数,分别用%1 %2 ... %9引用,如果传给bat的参数大于9个,就必须用shift. 工作需要,要写个bat脚本,获取所有的参数,再将所有的参数传给Java,代码如 ...

  2. Handlebars.js的学习

    写在开头的话: 在使用Ghost搭建自己的博客的时候,发现不会Handlebars.js寸步难行,所以本人决定学习下Handlebars.js,因此在此做个记录 为什么选择Handlebars.js ...

  3. Java_equals和“==”的区别

    1. 对于基本数据类型 它们的比较,应该用“==”,比较的是他们的值. 2. 引用数据类型 “==”判断的是对象是否为同一个,也就是它们内存中的存放地址是否一样,一样,则返回true,否则返回fals ...

  4. C# DataSet

    一.基本概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,Dat ...

  5. js测试题

    (function(){ return typeof arguments;})();"object" var f = function g(){ return 23; };type ...

  6. 完成整个DAO的实现及测试代码

    package cn.itcast.domain; import java.util.Date; public class User { private int id; private String ...

  7. Lesson 6 Percy Buttons

    Text I have just moved to a house in Bridge Street. Yesterday a bagger knocked at my door. He asked ...

  8. Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗

    网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:当前页面 网站日志分析项目案例 ...

  9. iOS开发系列--C语言之预处理

    概述 大家都知道一个C程序的运行包括编译和链接两个阶段,其实在编译之前预处理器首先要进行预处理操作,将处理完产生的一个新的源文件进行编译.由于预处理指令是在编译之前就进行了,因此很多时候它要比在程序运 ...

  10. 算法数据结构(一)-B树

    介绍 B树的目的为了硬盘快速读取数据(降低IO操作次树)而设计的一种平衡的多路查找树.目前大多数据库及文件索引,都是使用B树或变形来存储实现. 目录 为什么B树效率高 B树存储 B树缺点 为什么B树效 ...