--**********************************

-- 基于Linux下 Oracle 备份策略(RMAN)

--**********************************

对于 Oracle 数据库的备份与恢复,尽管存在热备,冷备以及逻辑备份之外,使用最多的莫过于使用RMAN进行备份与恢复。而制定RMAN备份策

略则是基于数据库丢失的容忍程度,即恢复策略来制定。在下面的备份策略中,给出的是一个通用的备份策略。在该备份策略中,使用了catalog方

式来保持备份脚本以及备份信息。在实际环境中应根据具体的情况对此进行相应的调整。

一、步骤

1.确认备份可用空间以及备份路径,根据需要创建相应文件夹

1.对于账户的连接创建一个connect.rcv,该文件包含连接到target 和catalog信息

2.创建通用的脚本用于删除过旧的备份和备份控制文件以及备份归档日志

global_del_obso      --过旧备份

global_bkctl         --备份控制文件

global_arch          --备份归档日志

3.创建0,1,2级增量备份

这三个脚本中均包含第2步的3个脚本,先调用global_del,然后做增量备份,最后备份归档日志global_arch和控制文件global_bkctl

4.创建inc0.rcv,inc1.rcv,inc2.rcv

文件内容包含调用 @@/<dir>/connect.rcv以及run{execute global script scriptname;}exit;

5.编辑第4步的三个文件分别为inc0.sh,inc1.sh,inc2.sh

nohup  $ORACLE_HOME/bin/rman  cmdfile=/u03/bk/scripts/inc1.rcv log=/u03/bk/scripts/inc0.log append &

6.使用crontab制定备份计划

二、具体实现

演示环境:

系统:            CentOS release 4.6 (Final) + Oracle 10g

目标数据库:      austin

恢复目录数据库:   david

备份目录:        /u03/bk

连接脚本所在路径:/u03/bk/scripts

注:监听需要配置好且已启动

1.连接脚本

connect.rcv文件内容

connect catalog rman/rman@david;

connect target sys/oracle@austin;

catalog的通用脚本

rman cmdfile=/u03/bk/scripts/connect.rcv --(在rman中使用外部脚本)

rman catalog rman/rman@david target sys/oracle@austin   --使用脚本接后建通用脚本

2.建立通用脚本

--除不必要的备份

RMAN> create global script global_del_obso  comment 'A script for obsolete backup and delete it' {

2> crosscheck archivelog all;

3> delete noprompt expired archivelog all;

4> allocate channel ch1 device type disk;

5> delete noprompt obsolete recovery window of 7 days;

6> release channel ch1;

7> }

--备份控制文件脚本

RMAN> create global script global_bkctl comment 'A script for backup control file'{

2> allocate channel ch1 device type disk;

3> backup as compressed backupset

4> current controlfile reuse

5> format='/u03/bk/backupctl.ctl'

6> tag='bkctl';

7> release channel ch1;

8> }

--备份归档日志脚本

RMAN> create global script global_arch comment "backup archivelog and then delete it" {

2> allocate channel ch1 device type disk;

3> allocate channel ch2 device type disk;

4> sql "alter system archive log current";    --归档当前的机日志

5> set limit channel ch1 readrate=10240;        --(取速率10M)            

6> set limit channel ch1 kbytes=4096000;        --(备份片的大小)   

7> backup as compressed backupset

8> format='/u03/bk/arch_%d_%U'

9> tag='bkarch'

10> archivelog all delete input;

11> release channel ch1;

12> release channel ch2;

13> }

--使用list看所有的已建立的全局脚本

list global script names;               --(列出所有的脚本)

delete globals script script_name;      --(除脚本)

RMAN> list global script names;

List of Stored Scripts in Recovery Catalog

Global Scripts

Script Name

Description

-----------------------------------------------------------------------

global_arch

backup archivelog and then delete it

global_bkctl

A script for backup control file

global_del_obso

A script for obsolete backup and delete it

3.创建0,1,2级增量备份脚本(注:每个脚本备份前会执行删除过旧的备份,脚本尾部会调用另外两个脚本来备份归档日志及控制文件)

--0增量备份

RMAN> create global script global_inc0 comment "backup database as incrmental level 0"{

2> execute global script global_del_obso;

3> allocate channel ch1 device type disk;

4> allocate channel ch2 device type disk;

5> set limit channel ch1 readrate=10240;

6> set limit channel ch1 kbytes=4096000;

7> set limit channel ch2 readrate=10240;

8> set limit channel ch2 kbytes=4096000;

9> backup as compressed backupset

10> incremental level 0 database

11> format='/u03/bk/inc0_%d_%U'

12> tag='inc0';

13> release channel ch1;

14> release channel ch2;

15> execute global script global_arch;

16> execute global script global_bkctl;

17> }

--1增量备份       

RMAN> create global script global_inc1 comment "backup database as incrmental level 1"{

2> execute global script global_del_obso;

3> allocate channel ch1 device type disk;

4> allocate channel ch2 device type disk;

5> set limit channel ch1 readrate=10240;

6> set limit channel ch1 kbytes=4096000;

7> set limit channel ch2 readrate=10240;

8> set limit channel ch2 kbytes=4096000;

9> backup as compressed backupset

10> incremental level 1 database

11> format='/u03/bk/inc1_%d_%U'

12> tag='inc1';

13> release channel ch1;

14> release channel ch2;

15> execute global script global_arch;

16> execute global script global_bkctl;

17> }

--2增量备份       

RMAN> create global script global_inc2 comment "backup database as incrmental level 2"{

2> execute global script global_del_obso;

3> allocate channel ch1 device type disk;

4> allocate channel ch2 device type disk;

5> set limit channel ch1 readrate=10240;

6> set limit channel ch1 kbytes=4096000;

7> set limit channel ch2 readrate=10240;

8> set limit channel ch2 kbytes=4096000;

9> backup as compressed backupset

10> incremental level 2 database

11> format='/u03/bk/inc2_%d_%U'

12> tag='inc2';

13> release channel ch1;

14> release channel ch2;

15> execute global script global_arch;

16> execute global script global_bkctl;

17> }

--在rman中检验rman的脚本global_inc0、global_inc1、global_inc2,因RMAN动检查,下面的句用来执行脚本(检验)

RMAN> run{

2> execute global script global_inc0;

3> execute global script global_inc1;

4> execute global script global_inc2;

5> }

--备份成情

list backupset summary;

4.建立shell脚本,让linux自动执行脚本

a. vi inc0.rcv,inc1.rcv ,inc2.rcv   --注意不同的文件行不同的备份脚本

@@/u03/bk/scripts/connect.rcv       --(rman下的脚本去用其他脚本用@@)(用脚本不需要分)

run{

execute global script gloal_inc0;

}

exit;

b. 编辑shell文件

vi inc0.sh

nohup  $ORACLE_HOME/bin/rman  cmdfile=/u03/bk/scripts/inc0.rcv log=/u03/bk/scripts/inc0.log append &

vi inc1.sh

nohup  $ORACLE_HOME/bin/rman  cmdfile=/u03/bk/scripts/inc1.rcv log=/u03/bk/scripts/inc0.log append &

vi inc2.sh

nohup  $ORACLE_HOME/bin/rman  cmdfile=/u03/bk/scripts/inc2.rcv log=/u03/bk/scripts/inc0.log append &

--注意:nohup&表示脚本放入后台

c.使用crontab建立一个备份计划

crontab -e

#min    hour    date  mon  day(星期)    command

30        1      *     *    0           /u03/bk/scripts/inc0.sh

30        1      *     *    1           /u03/bk/scripts/inc2.sh

30        1      *     *    2           /u03/bk/scripts/inc2.sh

30        1      *     *    3           /u03/bk/scripts/inc2.sh

30        1      *     *    4           /u03/bk/scripts/inc1.sh

30        1      *     *    5           /u03/bk/scripts/inc2.sh

30        1      *     *    6           /u03/bk/scripts/inc2.sh

d.重启crontab服务(如果没有启动)

# /sbin/service crond status  --用于检查crontab 务状态

# /sbin/service crond stop //关闭服务

# /sbin/service crond restart //重启服务

# /sbin/service crond reload //重新载入配置

使crontab服务在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/service crond start

e.从上面的备份策略来看,即

周日执行0级增量备份,相当于全备

周一,周二,周三执行2级增量备份

周四执行1级增量备份

周五,周六执行2级增量备份

f.编辑好的shell 脚本测试

chmod 755 *.sh         --shell脚本加

测试脚本  例如./inc0.sh

基于Linux下catalog方式的 Oracle 备份策略(RMAN)的更多相关文章

  1. LINUX学习笔记——LINUX下EXP命令全库备份数据库文件

    LINUX下EXP命令全库备份数据库文件 1)建立备份目录,目录操作权限授权给Oracle用户 mkdir /backup  --创建backup文件夹 cd  /   --进入cd语句 ls  -l ...

  2. 基于Linux下Iptables限制BT下载的研究

    基于Linux下Iptables限制BT下载的研究   摘要:     当前BT下载技术和软件飞速发展,给人们网上冲浪获取资源带来了极大的便利, 但同时BT占用大量的网络带宽等资源也给网络和网络管理员 ...

  3. 基于linux下的NIST数字测试包安装过程

    基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...

  4. Linux下SVN的三种备份方式

    原文链接:http://blog.csdn.net/windone0109/article/details/4040772 (本文例子基于FreeBSD/Linux实现,windows环境请自己做出相 ...

  5. Linux下对文件进行加密备份的操作记录

    由于公司之前在阿里云上购买了一些机器,后续IDC建设好后,又将线上业务从阿里云上迁移到IDC机器上了,为了不浪费阿里云上的这几台机器资源,打算将这些机器做成IP SAN共享存储,然后作为IDC数据的一 ...

  6. Linux下php5.3编译oracle客户端

    因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路. 1.下载Oracle客户端程序包,其中包含OCI.OCCI和JDBC-OCI等相关文件. 1.1下载文 ...

  7. Linux下通过JDBC连接Oracle,SqlServer和PostgreSQL

    今天正好需要统计三个网站栏目信息更新情况,而这三个网站的后台采用了不同的数据库管理系统.初步想法是通过建立一个小的Tomcat webapp,进而通过JDBC访问这三个后台数据库,并根据返回的数据生成 ...

  8. linux下rsync和tar增量备份梳理

    前面总结过一篇全量备份/增量备份/差异备份说明,下面介绍下linux下rsync和tar两种增量备份的操作记录: 1)rsync备份 rsync由于本身的特性,在第一次rsync备份后,以后每次都只是 ...

  9. Linux下的Mysql的主从备份

    MySQL复制概述 MySQL数据库支持同步复制.单向.异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循 ...

随机推荐

  1. kafka监控项目大全

    https://github.com/claudemamo/kafka-web-console   http://github.com/pinterest/doctorkafka   http://g ...

  2. @Autowired注解警告Field injection is not recommended

    在使用spring框架中的依赖注入注解@Autowired时,idea报了一个警告 大部分被警告的代码都是不严谨的地方,所以我深入了解了一下. 被警告的代码如下: @Autowired UserDao ...

  3. C语言多线程的一个简单例子

    多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...

  4. 多媒体管理器解析IMultimediaManager

    一.基本API bool Available { get; } bool Working { get; } AdvancedOptions Advanced { get; } 二.作为通信引擎 str ...

  5. 从壹开始微服务 [ DDD ] 之六 ║聚合 与 聚合根 (下)

    前言 哈喽大家周二好,上次咱们说到了实体与值对象的简单知识,相信大家也是稍微有些了解,其实实体咱们平时用的很多了,基本可以和数据库表进行联系,只不过值对象可能不是很熟悉,值对象简单来说就是在DDD领域 ...

  6. 【Android Studio安装部署系列】三十三、windows系统中通过SourceTree使用git

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 前期准备 选择代码托管服务器:gitlab.github.开源中国等. 注册账号 创建项目 安装git 参考<[Android ...

  7. 【hashMap】详谈

    官方文档地说明 几个关键的信息:基于Map接口实现.允许null键/值.非同步.不保证有序(比如插入的顺序).也不保证序不随时间变化. 一.概述 HashMap 是一个散列表,它存储的内容是键值对(k ...

  8. 使用 ASP.NET Core MVC 创建 Web API(四)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...

  9. 关于px,分辨率,ppi的辨析

    概述  在本篇文章的开始,我先为大家解释一下这三个名词的概念.  px全称为pixel--像素.pc及移动设备的屏幕就是通过往像素矩阵中填充颜色,从而在宏观上体现出图像.像素越小,图像越清晰.  分辨 ...

  10. SLAM+语音机器人DIY系列:(八)高阶拓展——1.miiboo机器人安卓手机APP开发

    android要与ROS通讯,一种是基于rosbridge,另一种是基于rosjava库. 相关参考例子工程 rosbridge例子: https://github.com/hibernate2011 ...