Oracle RAC 实验环境RMAN备份v1.01

环境:RHEL 6.5 + Oracle GI 11.2.0.4 + RAC 11.2.0.4 (2 nodes)

需求:制定RAMN备份策略

版本:v1.01

说明:之前说过本系列的实验环境宗旨就是完全模拟生产环境,所有的操作记录在案,每次版本变更都需要详细记录。

1.前期准备

确认备份路径?

备份路径是NAS存储的一个目录,通过NFS映射过来。

/etc/fstab增加一行:

  1. 192.168.1.196:/mnt/HD/HD_a2/Public /public nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600

注:这里之所以有很多参数,可参考:《在NAS设备上用NFS服务为RAC数据库和集群件存储oracle文件时的mount选项》

然后创建挂载点目录,挂载:

  1. mkdir /public
  2. mount -a

备份路径规划为:/public/hotback/jyzhao

  1. mkdir -p /public/hotback/jyzhao

确认备份策略?

根据我这里测试环境的数据量,制定出如下备份策略:

  • 制定备份保留策略为保留最近的3份备份
  • 每天11:30进行0级全备,删除保留策略之外的陈旧备份
  • 每天6:00、12:00、18:00进行归档日志备份
  • 每天13:00删除备份目录下的陈旧备份文件夹

注:我这里的备份时间都是白天时段,是因为我的实验环境都是白天开启,晚上关机。而如果是7*24的生产环境,一般都选择晚上业务闲暇时进行定时备份。

2.备份脚本

依据之前的文章[《Oracle RMAN 备份一例》](http://www.cnblogs.com/jyzhao/p/3809099.html),根据本实验环境的具体情况进行备份策略和脚本的制定。
备份脚本部署在RAC节点1(192.168.1.50)的oracle用户下:

2.1 数据库0级备份脚本

vi db0_backup.rman

  1. #!/bin/bash
  2. #db0 level backup
  3. foldername=`date +%Y%m%d`
  4. BACKUP_BASE=/public/hotback/jyzhao
  5. cd $BACKUP_BASE
  6. if [ -d $foldername ]
  7. then
  8. echo 'go on'
  9. else
  10. echo 'need mkdir'
  11. mkdir $foldername
  12. fi
  13. export ORACLE_BASE=/opt/app/oracle
  14. export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
  15. export ORACLE_SID=jyzhao1
  16. export NLS_LANG="simplified chinese_china.ZHS16GBK"
  17. export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
  18. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
  19. export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
  20. rman target / log=$BACKUP_BASE/$foldername/full_LOG.log << RMAN_BACKUP
  21. run{
  22. CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
  23. CONFIGURE CONTROLFILE AUTOBACKUP ON;
  24. CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BACKUP_BASE/$foldername/controlfile%F';
  25. allocate channel c1 device type disk;
  26. backup incremental level 0 tag 'db0' database format '$BACKUP_BASE/$foldername/db0_%d_%T_%s' include current controlfile;
  27. delete noprompt obsolete;
  28. release channel c1;
  29. }
  30. RMAN_BACKUP

2.2 数据库归档日志备份脚本

arch_backup.rman

  1. #!/bin/bash
  2. #arch backup
  3. foldername=`date +%Y%m%d`
  4. BACKUP_BASE=/public/hotback/jyzhao
  5. cd $BACKUP_BASE
  6. if [ -d $foldername ]
  7. then
  8. echo 'go on'
  9. else
  10. echo 'need mkdir'
  11. mkdir $foldername
  12. fi
  13. export ORACLE_BASE=/opt/app/oracle
  14. export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
  15. export ORACLE_SID=jyzhao1
  16. export NLS_LANG="simplified chinese_china.ZHS16GBK"
  17. export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
  18. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
  19. export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
  20. rman target / log=$BACKUP_BASE/$foldername/arch_LOG.log << RMAN_BACKUP
  21. run{
  22. CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
  23. allocate channel c1 device type disk;
  24. sql 'alter system archive log current';
  25. backup archivelog all delete input format '$BACKUP_BASE/$foldername/arch_%d_%T_%s';
  26. release channel c1;
  27. }
  28. crosscheck archivelog all;
  29. delete noprompt expired archivelog all;
  30. RMAN_BACKUP

2.3 删除历史无用文件夹

虽然已经制定了保留策略可以删除历史的陈旧备份,但是由于我这里的备份思路是每天建立一个新的文件夹,那么久而久之就会有很多的文件夹存留,不方便查看和管理,所以这里定期在系统级别删除过期备份的空文件夹。

比如我这里的冗余策略是3,那么我就删除5天以上都没有修改的文件夹,防止误删除有用的备份。

vi del_old.sh

  1. #!/bin/bash
  2. #del old folders
  3. find /public/hotback/jyzhao/. -mtime +5

2.4 赋予以上脚本可执行权限

赋予脚本可执行的权限:

  1. [oracle@jyrac1 rman_scripts]$ pwd
  2. /home/oracle/rman_scripts
  3. [oracle@jyrac1 rman_scripts]$ chmod u+x *
  4. [oracle@jyrac1 rman_scripts]$ ls -lrth
  5. total 12K
  6. -rwxr--r-- 1 oracle oinstall 1.1K Aug 6 17:02 db0_backup.rman
  7. -rwxr--r-- 1 oracle oinstall 69 Aug 6 17:03 del_old.sh
  8. -rwxr--r-- 1 oracle oinstall 960 Aug 6 17:17 arch_backup.rman

3.定时执行

根据备份策略,编辑定时执行的语句。

  1. [oracle@jyrac1 ~]$ crontab -l
  2. 30 11 * * * /home/oracle/rman_scripts/db0_backup.rman > /dev/null 2&>1#
  3. 0 6,12,18 * * * /home/oracle/rman_scripts/arch_backup.rman > /dev/null 2&>1#
  4. 0 13 * * * /home/oracle/rman_scripts/del_old.sh > /dev/null 2&>1#

至此完成实验RAC环境RMAN备份策略的制定。

Oracle RAC 实验环境RMAN备份v1.01的更多相关文章

  1. 模拟生产搭建Standby RAC实验环境(11.2.0.4 DG)

    模拟生产搭建Standby RAC实验环境(11.2.0.4 DG) 环境:RHEL 6.5 + Oracle 11.2.0.4 GI.DB 1.需求背景介绍 2.准备工作 3.主库配置 4.备库配置 ...

  2. RAC数据库的RMAN备份异机恢复到单节点数据库

    1.首先在rac环境用rman备份数据库.[oracle@rac1 admin]$ rman target /run{allocate channel c1 device type disk conn ...

  3. oracle直通车6关于rman备份恢复数据文件,以及创建分区表的实验

    1.创建一张表,在表上创建一个索引,分别查询表,索引各自分配了多少个extents,多少个数据块以及总共占用空间的大小(bytes). 答:创建一张表t,为字段object_id创建索引t_objec ...

  4. Oracle下如何用rman备份到特定的sequence

    本文为摘抄,目的为方便日后阅读: http://docs.oracle.com/cd/B12037_01/server.101/b10734/rcmbackp.htm To determine the ...

  5. RAC 之 RMAN 备份

    这篇主要介绍的是RAC 环境下的RMAN 备份. 关于Oracle 备份与恢复的一些理论知识参考我的Blog:       Oracle 备份 与 恢复 概述 http://blog.csdn.net ...

  6. RAC RMAN备份

    这篇主要介绍的是RAC 环境下的RMAN 备份. 关于Oracle 备份与恢复的一些理论知识参考我的Blog:       Oracle 备份 与 恢复 概述 http://blog.csdn.net ...

  7. 【转】Oracle RAC 环境下的连接管理

    文章转自:http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1 ...

  8. Oracle RMAN备份恢复指导书

    目 录 1 目的与范围... 1 2 术语和定义... 1 3 角色和职责... 2 4 使用RMAN备份数据库... 2 4.1.1 检查数据库模式... 2 4.1.2 连接到target数据库. ...

  9. Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效

    崔华老师的文章!!! 这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load ...

随机推荐

  1. Dockerfile命令详解(超全版本)

    制作Dockerfile为Docker入门学习的第一步(当然,除了环境搭建). 本文收集.整理了官网关于制作Dockerfile的全部命令(除SHELL没整理,这个就不弄了),可帮助大家快速进入Doc ...

  2. 详解 RAC 中各种IP和监听的意义

    一.SCAN 概念 SCAN(Single Client Access Name)是 Oracle从11g R2开始推出的,客户端可以通过 SCAN 特性负载均衡地连接到 RAC数据库 SCAN 最明 ...

  3. 【LeetCode】119. Pascal's Triangle II

    题目: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [ ...

  4. 12.引入依赖项目的时候,如果找不到jar

    原因是bin没有生成,先clean依赖包,再clean原工程包,就可以了

  5. Mathematica 10 Mac 设置默认工作目录

    用SetDirectory命令设置  

  6. kbengine 常见问题汇总

    Q: KBEngine是什么,能用来做什么?A: KBEngine是一个通用网络游戏服务器引擎,适合绝大多数中心拓扑结构的网络游戏,包括但不限于即时和回合制MMORPG.副本类.房间类.卡牌.棋牌等. ...

  7. 安装 Node 和 gulp

    gulp 是基于 node 实现的,那么我们就需要先安装 node. Node 是一个基于Chrome JavaScript V8引擎建立的一个平台,可以利用它实现 Web服务,做类似PHP的事. 打 ...

  8. Angular基础(二)

    双向数据 利用angular把input框里面的值和h3的值绑定在一起.在input里输入内容,内容会在h3标签里显示出来. 具体效果请看下面代码:   <!DOCTYPE html>   ...

  9. C#工作笔记

    没想到一个Java后端开发还要负责C#桌面程序,我感觉有点方.不过方归方,活还是要干的.简单记录下学到的一些知识点. 1.引用API函数 namespace Demo { class MyUtil { ...

  10. Chrome浏览器扩展开发系列之十:桌面通知Notification

    Desktop Notification也称为Web Notification,是在Web页面之外,以弹出桌面对话框的形式通知用户发生了某事件.Web Notification于2015.9.10成为 ...