RMAN 初学者指南

说明转自一个大神的笔记。

RMAN 初学者指南
 
 
这篇文章是去年写的了,最初发表在chinaunix.net的oracle论坛里,收录在旧版文集中,可能很多没有看到,总有人写信要,今天乘改版之际就把它单独拿出来了。

RMAN(Recovery Manager)是DBA的一个重要工具,用于备份、还原和恢复oracle数据库,前一段时间有网友找我要,可惜没时间,趁这两天出差在外没什么事,就写了一下,供初学的朋友参考。本文将介绍RMAN 的基本操作,更多的信息请参考《Oracle8i Backup & Recovery Guide》及RMAN 手册,或者是OCP Student Guide M09096《Backup and Recovery Workshop》Volume 2,也可以通过[email protected] 和我联系。Oracle 自带的例子参考$ORACLE_HOME/rdbms/demo 目录下的*.rcv脚本。

一、RMAN 简介

RMAN 可以用来备份和恢复数据库文件、归档日志和控制文件,也可以用来执行完全或不完全的数据库恢复。RMAN有三种不同的用户接口:COMMAND LINE方式、GUI 方式(集成在OEM 中的备份管理器)、API 方式(用于集成到第三方的备份软件中)。具有如下特点:
1)功能类似物理备份,但比物理备份强大N倍,从下面的特点可以看到;
2)可以压缩空块;
3)可以在块水平上实现增量;
4)可以把备份的输出打包成备份集,也可以按固定大小分割备份集;
5)备份与恢复的过程可以自动管理;
6)可以使用脚本(存在Recovery catalog 中)
7)可以做坏块监测

二、相关术语解释
1)Backup sets 备份集
备份集顾名思义就是一次备份的集合,它包含本次备份的所有备份片,以oracle专有的格式保存。一个备份集根据备份的类型不同,可能构成一个完全备份或增量备份。
2)Backup pieces 备份片
一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能大于你的文件系统所支持的文件长度的最大值。
3)Image copies 映像备份
映像备份不压缩、不打包、直接COPY 独立文件(数据文件、归档日志、控制文件),类似操作系统级的文件备份。而且只能COPY 到磁盘,不能到磁带。可以作为增量备份的0级,一般用来备份控制文件。
4)Full backup 全备份
全备份是指对数据文件中使用过的数据块进行备份,没有使用过的数据块是不做备份的,也就是说,RMAN 进行备份是进行压缩的。
5)Incremental backup 增量备份
增量备份是指备份数据文件中自从上一次同一级别的或更低级别的备份以来被修改过的数据块。与完全备份相同,增量备份也进行压缩。增量备份虽然概念很好,备份也很简单,但恢复起来却是另外一回事,不仅麻烦而且容易出错,所以实际中越来越少使用,到了Oracle 9i已经建议不再使用,以后版本会逐渐取消对增量备份的支持。
6)Recovery catalog 恢复目录
恢复目录用于记录RMAN 使用过程中的控制信息,恢复目录应该经常被同步(这在后面会讲到)。尽管我们可以使用nocatalog 方式来使用RMAN,此时控制信息记录在目标数据库的控制文件中,但这样毕竟不安全,因为一旦目标数据库的控制文件损坏就意味着所有的RMAN 备份失效。同样的道理恢复目录应该建立在另外一个数据库中,在下面的例子中我们称作“目录数据库”。

三、创建恢复目录
1、在目录数据库中创建恢复目录所用表空间
SQL> create tablespace rmants datafile ‘c:\oracle\oradata\cc\rmants.ora‘ size 20M ;
表空间已创建。
2、在目录数据库中创建RMAN 用户并授权
SQL> create user rman identified by rman default tablespace rmants temporary tablespace temp quota
unlimited on rmants;
用户已创建
SQL> grant recovery_catalog_owner to rman ;
授权成功。
3、在目录数据库中创建恢复目录
C:\>rman catalog rman/rman
恢复管理器:版本8.1.7.0.0 - Production
RMAN-06008:连接到恢复目录数据库
RMAN-06428:未安装恢复目录
RMAN>create catalog tablespace rmants;
RMAN-06431:恢复目录已创建
4、注册目标数据库到恢复目录
注意哦,这里我的目标数据库使用的服务名称是rman,意思为要使用RMAN 进行备份的数据库,而目录
数据库使用的服务名称是CC。
C:\>rman target sys/[email protected]
恢复管理器:版本8.1.7.0.0 - Production
RMAN-06005:连接到目标数据库:RMAN (DBID=1303772234)
RMAN>connect catalog rman/[email protected]
RMAN-06008:连接到恢复目录数据库
RMAN>register database;
RMAN-03022:正在编译命令:register
RMAN-03023:正在执行命令:register
RMAN-08006:注册在恢复目录中的数据库
RMAN-03023:正在执行命令:full resync
RMAN-08002:正在启动全部恢复目录的resync
RMAN-08004:完成全部resync
好了,到此为止前面的准备工作都做好了,下面就可以使用RMAN 来进行备份和恢复了。

四、使用RMAN
下面通过具体的例子来说明RMAN 的使用,这里会涉及到除了恢复以外的所有RMAN 操作,关于使用RMAN 进行恢复的内容请参考我以前写的另外一篇文章:RMAN 恢复实践。
1、备份整个数据库
RMAN>run {
2> allocate channel c1 type disk;
3> backup datab

ase format ‘e:\dbbackup\2db.dmp‘;
4> }
2、复制数据文件
RMAN>run {
2> allocate channel c1 type disk;
3> copy datafile ‘c:\oracle\oradata\rman\users01.dbf‘ to ‘e:\dbbackup\u.dbf‘ tag
=u1215;
4> }
3、查看备份及复制的信息
RMAN>list backup;
RMAN-03022:正在编译命令:list
备份集列表
关键字Recid 标记LV 集合标记集合计数完成时间
------- ---------- ---------- -- ---------- ---------- ----------------------
216 1 417347013 0 417346992 1 26-12 月-00
备份段列表
关键字Pc# Cp# 状态完成时间段名
------- --- --- ----------- ---------------------- ------------------------
217 1 1 AVAILABLE 26-12 月-00 E:\DBBACKUP\2DB.DMP
数据文件包括列表
文件名称LV 类型检查点SCN 检查点时间
---- ------------------------------------- -- ---- ---------- -------------
1 C:\ORACLE\ORADATA\RMAN\SYSTEM01.DBF 0 Full 33224 26-12 月-00
2 C:\ORACLE\ORADATA\RMAN\RBS01.DBF 0 Full 33224 26-12 月-00
3 C:\ORACLE\ORADATA\RMAN\USERS01.DBF 0 Full 33224 26-12 月-00
4 C:\ORACLE\ORADATA\RMAN\TEMP01.DBF 0 Full 33224 26-12 月-00
5 C:\ORACLE\ORADATA\RMAN\TOOLS01.DBF 0 Full 33224 26-12 月-00
6 C:\ORACLE\ORADATA\RMAN\INDX01.DBF 0 Full 33224 26-12 月-00
RMAN>list copy of datafile ‘c:\oracle\oradata\rman\users01.dbf‘;
RMAN-03022:正在编译命令:list
数据文件备份列表
关键字文件状态完成时间检查点SCN 检查点时间名称
------- ---- - --------------- ---------- --------------- ------
226 3 A 26-12 月-00 33226 26-12 月-00 E:\DBBACKUP\U.DBF
4、在备份是设置相关参数
format --文件输出格式,
%d--database name,
%s--backup sets sequence number,
%p--backup pieces sequence number
filesperset --每个备份集中所包括的文件数
更多参数请参考本文开始时列出的书。
RMAN>run {
2> allocate channel c1 type disk;
3> set limit channel c1 kbytes 8000;
4> backup
5> format ‘e:\dbbackup\db_%d_%s_%p.bck‘
6> (database filesperset=2 );
7> }
RMAN-03022:正在编译命令:allocate
RMAN-03023:正在执行命令:allocate
RMAN-08030:分配的通道:c1
RMAN-08500:通道c1:sid=9 devtype=DISK
RMAN-03022:正在编译命令:set limit
RMAN-03023:正在执行命令:set limit
RMAN-03022:正在编译命令:backup
RMAN-03023:正在执行命令:backup
RMAN-08008:通道c1:正在启动full 数据文件备份集
RMAN-08502:set_count=6 set_stamp=417351064 creation_time=26-12 月-00
RMAN-08010:通道c1:正在指定备份集中的数据文件
RMAN-08522:输入数据文件fno=00003 name=C:\ORACLE\ORADATA\RMAN\USERS01.DBF
RMAN-08522:输入数据文件fno=00005 name=C:\ORACLE\ORADATA\RMAN\TOOLS01.DBF
RMAN-08013:通道c1:已创建1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_6_1.BCK comment=NONE
RMAN-08525:备份集完成,经过时间:00:00:03
RMAN-08008:通道c1:正在启动full 数据文件备份集
RMAN-08502:set_count=7 set_stamp=417351067 creation_time=26-12 月-00
RMAN-08010:通道c1:正在指定备份集中的数据文件
RMAN-08522:输入数据文件fno=00002 name=C:\ORACLE\ORADATA\RMAN\RBS01.DBF
RMAN-08522:输入数据文件fno=00006 name=C:\ORACLE\ORADATA\RMAN\INDX01.DBF
RMAN-08013:通道c1:已创建1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_7_1.BCK comment=NONE
RMAN-08525:备份集完成,经过时间:00:00:04
RMAN-08008:通道c1:正在启动full 数据文件备份集
RMAN-08502:set_count=8 set_stamp=417351071 creation_time=26-12 月-00
RMAN-08010:通道c1:正在指定备份集中的数据文件
RMAN-08522:输入数据文件fno=00001 name=C:\ORACLE\ORADA

TA\RMAN\SYSTEM01.DBF
RMAN-08011:备份集中包括当前控制文件
RMAN-08013:通道c1:已创建1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_1.BCK comment=NONE
RMAN-08013:通道c1:已创建2 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_2.BCK comment=NONE
RMAN-08013:通道c1:已创建3 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_3.BCK comment=NONE
RMAN-08013:通道c1:已创建4 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_4.BCK comment=NONE
RMAN-08013:通道c1:已创建5 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_5.BCK comment=NONE
RMAN-08013:通道c1:已创建6 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_6.BCK comment=NONE
RMAN-08013:通道c1:已创建7 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_8_7.BCK comment=NONE
RMAN-08525:备份集完成,经过时间:00:00:19
.... ....
RMAN-08008:通道c1:正在启动full 数据文件备份集
RMAN-08502:set_count=9 set_stamp=417351090 creation_time=26-12 月-00
RMAN-08010:通道c1:正在指定备份集中的数据文件
RMAN-08522:输入数据文件fno=00004 name=C:\ORACLE\ORADATA\RMAN\TEMP01.DBF
RMAN-08013:通道c1:已创建1 段
RMAN-08503:段handle=E:\DBBACKUP\DB_RMAN_9_1.BCK comment=NONE
RMAN-08525:备份集完成,经过时间:00:00:07
RMAN-03023:正在执行命令:partial resync
RMAN-08003:启动部分恢复目录的resync
RMAN-08005:完成部分resync
RMAN-08031:释放的通道:c1
5、使用脚本功能
使用脚本的目的在于方便我们操作中的方便,操作上和存储过程相似。
RMAN>create script l0dbbackup {
2> allocate channel c1 type disk;
3> backup
4> format ‘e:\dbbackup\db_%d_%s_%p.bck‘
5> (database filesperset=2 );
6> }
RMAN-03022:正在编译命令:create script
RMAN-03023:正在执行命令:create script
RMAN-08085:已创建脚本l0dbbackup
RMAN>run {execute script l0dbbackup; }

时间: 2024-10-22 14:12:05

RMAN 初学者指南的相关文章

HTML5&CSS3初学者指南(1) – 编写第一行代码

介绍 网络时代已经到来.现在对人们来说,每天上网冲浪已经成为一种最为常见的行为. 在网页浏览器中输入一段文本地址,就像http://www.codeproject.com,等待一下,网页就加载到浏览器窗口中.一个典型的网页是由文本.图像和链接组成的.除去内容上的差异,不同网站的网页也具有不同的外观和感受,以实现在网络上建立自己的身份品牌的目的. 如果你也曾想要了解你屏幕上的这些网页是如何被创建出并以各式各样的方式渲染的,那么这里正是你可以了解到这些知识的地方.让我们一起走进在浏览器中创建了这么多

算法初学者指南

摘自网络,对于这个训练计划,我只能膜拜,~ 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15 分钟内打完,甚至关掉显示器都可以把程序打 出来. 1.最短路(Floyd.Dijstra,BellmanFord) 2. 最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘.判线段相交.然后写个凸包. 6.BFS.DFS,同时熟练hash表(

HTML5 & CSS3初学者指南(3) – HTML5新特性

介绍 本文介绍了 HTML5 的一些新特性.主要包含以下几个方面: Web 存储 地理位置 拖放 服务器发送事件 Web存储 HTML5 Web 存储的设计与构想是一个更好的机制来存储客户端的网络数据.它是通过一个网络浏览器作为客户端数据库实现的,它允许网页以键值对的形式来存储数据. 它具有以下特征: 每个原始网站/域最多可存储 5MB 的数据. 你可以通过属性和方法来使用 JavaScript 操作 web 存储器中的数据实现访问. 就像 cookies,你可以选择将保持数据(维持),即使你已

HTML5 & CSS3 初学者指南(4) – Canvas使用

介绍 传统的HTML主要用于文本的创建,可以通过<img>标签插入图像,动画的实现则需要第三方插件.在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力.HTML5的到来,带来了新的成员<canvas>标签. 什么是 Canvas? HTML5 的 Canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,你可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 创建 Canvas 元素 向 HTML5 页面添

深网与暗网初学者指南

揭秘深网和暗网:你所不知道的互联网 事物总有正反面,网络也一样,其中的深网和暗网(互联网中无法被搜索引擎抓取到的那部分网络)已经存在多年了,不过在IoE(Internet of Everything万物互联)时代,它可能会扮演更为重要的角色. 我们时常会听到有人提起一个不为人知的网络,也就是所谓的暗网. 如果不是发生了一些大事(比如最近的丝绸之路2.0事件),可能大多数人一辈子都不会听到暗网这个名词.不过现在这个情况正在慢慢改变,一旦IoE的进化得以实现,再加上各类渗透,暗网的融合趋势便不可阻挡

HTML5 & CSS3初学者指南(2) – 样式化第一个网页

介绍 我们已经使用基本的 HTML 编写了一个网页.但是,写出来的 HTML 代码的网页看起来很平淡,没有吸引力. 如何改善这种很平淡的页面呢? 让我们开始使用网页的基本样式来改善页面效果,我们将会使用到 CSS 的功能. 正式开始 CSS 是层叠样式表的缩写,它是为网页添加样式的通用语言,在所有浏览器中都支持.最新的标准是 CSS3,这与早期版本完全向后兼容.CSS3 的规范是由 W3C 开发的,目前仍处于开发阶段,其最新的版本是 CSS Snapshot 2010. 打开你的文本编辑器,键入

NHibernate初学者指南系列文章导航

前面的话 经过三个多周的时间,终于将这个系列完成了,谢谢大家的关注和支持,有很多不足之处还望大家包涵. 本系列参考的书籍为NHibernate 3 Beginner's Guide一书. 该书的随书源代码下载地址为:http://d.1tpan.com/tp1240962233 文章导航 第一章:NHibernate介绍 NHibernate初学者指南(1):开篇 第二章:第一个完整的例子 NHibernate初学者指南(2):一个完整的例子 第三章:创建模型 NHibernate初学者指南(3

R语言初学者指南pdf

下载地址:网盘下载 作者阿兰·F·祖尔等的基于他们对应用科学家讲授统计与R的丰富经验,为读者献上了<R语言初学者指南>这本书.为了避免同时讲授R与统计的困难,统计方法保持在最低限度.<R语言初学者指南>包括如何下载与安装R,载入和处理数据,基本绘图,函数简介,高级绘图以及初学者常见的错误.这本书包括了你开始学习R时想知道的所有内容. 阿兰·F·祖尔资深统计学家,担任英国的一家统计咨询有限公司Highland Statistics的董事长.他已经给5000多名生态学家讲授了统计,是英

Swift 的 NSDate 初学者指南

Swift 的 NSDate 初学者指南 2015.12.14 22:43 如果问我在做过的所有项目中做的最多的事情,那处理日期绝对是榜上有名(译注:本文中的「日期」是指代 NSDate 对象,同时包含「日(date)」 和「时(time)」这两个元素).毋庸置疑,无论工作量是多是少,开发者迟早需要「玩」一下 NSDate 类,去按某种方式处理一下日期.从简单的将一个日期转换成一个字符串到对日期做计算,总会有一个不变的事实:开发者必须在 iOS 编程中学会这个知识点.这并不难掌握,而且可以为以后