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

-- 基于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. .NET微服务调查结果

    .NET Core就是专门针对模块化的微服务架构而设计, 在2018年国庆时间展开.NET微服务的使用情况,本次调查我们总计收到了来自378个开发者的调查.从落地现状.架构体系.未来趋势等方面对微服务 ...

  2. 统一修改表单参数(表单提交的空字符串统一转null)

    统一修改表单参数(表单提交的空字符串统一转null) 1.介绍: 我们业务中有时会遇到提交的表单中某个参数为空字符串,导致后台接受的为空字符串("")而不是我们理想中的null,会 ...

  3. python基础-函数(9)

    一.函数的介绍 如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数 函数的语法格式: def 函数名(): 函数的功能代码 ...

  4. 网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议

        上一节我们了解了基于 XML 的 SOAP 协议,SOAP 的 S 是啥意思来着?是 Simple,但是好像一点儿都不简单啊! 传输协议问题     对于 SOAP 来讲,比如我创建一个订单, ...

  5. .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关

    Tip: 此篇已加入.NET Core微服务基础系列文章索引,本篇接上一篇<基于Steeltoe使用Eureka实现服务注册与发现>,所演示的示例也是基于上一篇的基础上而扩展的. => ...

  6. 《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换

    目录 02:数据类型转换 && 隐式转换 || 显式转换 02:数据类型转换 && 隐式转换 || 显式转换 在上一个章节中,我们介绍了 JavaScript 的基本的 ...

  7. Java分布式锁,搞懂分布式锁实现看这篇文章就对了

    随着微处理机技术的发展,人们只需花几百美元就能买到一个CPU芯片,这个芯片每秒钟执行的指令比80年代最大的大型机的处理机每秒钟所执行的指令还多.如果你愿意付出两倍的价钱,将得到同样的CPU,但它却以更 ...

  8. 【Python3爬虫】大众点评爬虫(破解CSS反爬)

    本次爬虫的爬取目标是大众点评上的一些店铺的店铺名称.推荐菜和评分信息. 一.页面分析 进入大众点评,然后选择美食(http://www.dianping.com/wuhan/ch10),可以看到一页有 ...

  9. MySQL系列--4.使用Python3访问数据库

    1.安装MySQL驱动 pip install mysql-connector 安装完成后进入命令行模式,导入驱动,如果不报错,说明安装成功 Python 3.6.7 (default, Oct 22 ...

  10. 微信小程序开发02-小程序基本介绍

    前言 前面我们研究了下微信小程序的执行流程,因为拿不到源码,只能算我们的猜想,我们需要更加了解小程序还需要做具体的项目,于是我们将原来那套还算复杂的业务拿出来: [组件化开发]前端进阶篇之如何编写可维 ...