课程表

Oracle 基础教程

Oracle 进阶教程

Oracle PL/SQL

Oracle OEM

Oracle 备份和恢复

Oracle RAC

工具箱
速查手册

Oracle RMAN

当前位置:免费教程 » 数据库/运维 » Oracle

RMAN是Recovery Manager的缩写,为Oracle的恢复管理器,是Oracle数据库推荐提供的一种恢复和备份数据库的工具,也是数据库管理员管理数据库常用的工具之一。

一、简介

1、RMAN的特点:

那么RMAN究竟有什么特点呢?和我们之前学习的exp/imp和expdp/impdp的数据库备份和恢复有什么区别呢?在Oracle官网给出了RMAN的特点主要有以下,我们看看有哪些不一样:

a、它可以备份数据库、表空间、数据文件、控制文件以及日志文件。而exp备份是不能进行控制文件、数据文件和日志文件的备份。

b、压缩备份可以只备份发生变化的内容。这是exp完全做不到的事情。

c、集成了第三方磁带媒介软件。

d、可以在Oracle数据库的目录中存放备份信息,意思就是可以用数据库来存储备份的信息,这样子更好的对备份信息进行管理。

2、RMAN常用概念:

在我们使用RMAN进行Oracle数据备份和恢复管理时,会经常遇到一些常用的概念,这里做个解释。主要有目标数据库、RMAN客户端、闪回区、介质管理、恢复目录等。

目标数据库:

当在使用RMAN进行数据库备份时,目标数据库就是使用RMAN工具进行备份和还原的数据库,即我们要进行备份的对象。

RMAN客户端:

当使用RMAN工具进行数据备份时,使用的前提就是计算机或服务器要拥有RMAN客户端。

一般情况下,在Oracle数据库安装时,就会默认安装了RMAN客户端,因为这个是Oracle官方推荐的备份工具。通常安装的目录在Oracle的安装目录下。

闪回区:

在Oracle10g后提出闪回区的概念,闪回区(Flash Recovery Area) 是在磁盘上的一个区域,存放与数据库的备份和恢复相关的一些文件,使用闪回区能够方便用户备份和还原数据库。

介质管理:

介质管理设备通常被称为SBT (System Backup to Tape)设备,也就是把数据库备份到磁带中。RMAN通过介质管理器将数据备份到磁带上,介质管理器通常由第三方软件商提供。它将数据块中的数据流从RMAN通道进程传递到对应的磁带上,是一个数据传输的中介。

恢复目录:

恢复目录(Recovery Catalog)是一个独立的数据库,用于存放目标数据库的备份。可以存放一个目标数据库,也可以多个。


二、使用恢复目录

我们知道RMAN中恢复目录是一个独立的数据库,是用来存放目标数据库的备份信息。在我们使用RMAN进行备份时,使用恢复目录进行备份信息的存储是Oracle官方推荐的一种方式,因为这种方式对比使用控制文件存储更为节省空间、更安全。

1、创建恢复目录

Oracle创建恢复目录时,为了数据安全起见,一般会把恢复目录的数据库创建在另外一个Oracle服务器上,而不是在同一个数据库中或者同一个服务器上,因为防止出现服务器宕机,导致数据文件一起丢失,而不能进行恢复,但是这里笔者为了演示,就直接把恢复目录同时创建在本机上。

在创建恢复目录时还要考虑数据库的容量,这个容量的大小当然要取决于目标数据库容量的大小,这里笔者会创建一个100M大小的表空间,专门单独存放恢复目录的数据。

创建恢复目录的步骤分为创建恢复目录数据库并创建用户、给恢复目录用户赋角色和权限、创建恢复目录三个步骤。

a、在本地创建一个恢复目录专用的用户RM(这里我们就不独立创建一个远程的数据库和数据库用户),具体语法如下:

  1. --创建恢复目录专用的表空间rmtablespace
  2. create tablespace rmtablespace
  3. datafile 'E:\APP\ADMIN\ORADATA\ORCL\rmtablespace.DBF'
  4. size 100m
  5. autoextend on next 10m maxsize 500m
  6. permanent
  7. extent management local;
  8.  
  9. --创建用户rm
  10. create user rm--用户名
  11.   identified by "123456"--密码
  12.   default tablespace rmtablespace--表空间名
  13.   temporary tablespace temp --临时表空间名
  14.   quota unlimited on rmtablespace--表空间无限制
  15.   profile DEFAULT    --数据文件(默认数据文件)
  16.   account unlock-- 账户是否解锁(lock:锁定、unlock解锁)

b、给恢复目录用户rm授权限

只创建一个数据库的用户是不能实现RMAN备份与恢复工作的,还需要给该用户赋予权限和角色。恢复目录用户应该拥有数据库管理员的权限,并在此基础上还要拥有RECOVERY_CATALOG_OWNER的权限。具体授权语法如下:

  1. -- 授权系统管理员权限
  2. grant dba to RM;
  3. grant connect to RM;
  4. grant resource to RM;
  5. --授权拥有恢复目录权限
  6. grant recovery_catalog_owner to RM;

c、创建恢复目录

创建好恢复目录的用户,并进行相应的授权后,就可以创建恢复目录了,创建恢复目录是在DOS界面进行操作的。

(1)首先进入恢复目录管理器(进入命令行输入RMAN),如下图:

1.jpg

(2)通过创建好的恢复目录用户进行登录连接到恢复目录数据库,具体命令如下:

  1. connect catlog rm/123456

连接到恢复目录数据库,就可以通过命令行创建恢复目录了,具体命令如下:

  1. create catalog

2.jpg

至此,RMAN的恢复目录已经创建完毕。

2、RMAN连接恢复目录

前面已经创建好了恢复目录,在我们使用RMAN进行备份时,要连接到恢复目录才能够进行数据备份。连接到恢复目录的方式也是在DOS的命令行上就可以直接操作。

RMAN连接恢复目录语法:

  1. rman target user/password@servicename catalog user/password@serviecename

语法解析:

1、target指定的是目标数据库(既是要进行备份的数据库)。

2、catalog后面指定的是恢复目录的数据库。

下面就利用上面的语法进行连接刚刚创建好的恢复目录,结果如下:

1.jpg

这里连接恢复目录时,要注意假如恢复目录在本地数据库上,那实例名就不用填,一般实际开发环境中,恢复目录的数据库都会创建在远程服务器上,所以要填上实例串。

总结:

RMAN中恢复目录是一个独立的数据库,是用来存放目标数据库的备份信息。使用恢复目录进行数据备份,是Oracle官方推荐的一种方式,所以作为系统管理员,是一种值得学习和了解的技能。


三、RMAN通道分配

RMAN通道分配是我们进行RMAN备份时经常提起的一个概念,RMAN通道分配就是确定连接数据库备份的设置个数,每设置一个设备就代表RMAN会自动启动一个服务器会话,由此来完成数据库的备份与恢复的操作。这其中通道指的就是某个设备(可以是磁盘或磁带等其他介质)和数据库进行关联。

通道分配有手动分配和自动分配两种,其中手动分配通道时要使用run命令实现,自动分配则只需要使用configure命令即可完成。

1、RMAN手动通道分配

RMAN手动通道分配指的是根据用户自己定义的通道完成数据库备份工作,并且如果在恢复目录中定义好了手动通道分配,就会优先使用手动分配。手动通道分配是在RMAN命令中利用RUN命令完成分配工作。

RMAN手动通道分配语法:

  1. run
  2. {
  3.  allocate channel  ch_name1 device type  typename1;
  4.  allocate channel  ch_name2 device type  typename2;
  5.  ....
  6.  backup ...
  7. }

语法解析:

a、allocate channel指定要分配的通道名称,后面跟着通道名称。

b、device type 指定介质的类型。其中typename可以是磁带(sbt)、磁盘(disk)。

c、backup是备份数据集的关键字。backup后面可以跟着要进行备份的数据库对象,比如表空间或用户等。

例1、利用手动通道分配备份student表空间。

a、首先把目标数据库注册到恢复目录当中再进备份,在RMAN命令下通过register database命令进行注册:

  1. register database

1.jpg

b、利用RUN命令手动备份表空间student,命令如下:

  1. run
  2. {allocate channel  c device type  disk;
  3.  backup tablespace student;
  4. }

结果如下:

2.jpg

注意:

a、从图中可以发现,利用通道进行备份表空间,在备份完后,通道会进行释放。

b、在使用RUN命令进行备份前,一定是得在RMAN命令状态下,而且是得连接到恢复目录和目标数据库的前提下,才能进行备份。

例2、利用多通道备份student表空间。

使用通道进行备份是可以通过定义多个通道,从而提高备份的效率。也就是利用多个通道完成数据库的备份工作。代码如下:

  1. run
  2. {allocate channel  c1 device type  disk;
  3.  allocate channel  c2 device type  disk;
  4.  backup tablespace student;
  5. }

语法解析:

这里的两个通道的名字是不能重复的。

结果如下:

3.jpg

2、RMAN自动通道分配

RMAN自动通道分配,顾名思义就是数据库自己定义分配的通道的数量和名称,不需要管理员自己手动进行通道分配。但是在进行数据备份之前,必须为目标数据库定义一下自动通道分配的参数,比如介质的类型、通道的最大个数以及默认的介质类型。命令如下:

  1. CONFIGURE DEVICE TYPE typename PARALLELISM n
  2. CONFIGURE DEFAULT DEVICE TYPE TO typename

语法解析:

a、configure是指定自动通道分配的配置信息的关键字。

b、typename指定介质的类型,PARALLELISM n指定通道分配的个数。

c、default指定默认的设备的介质类型。

例3、定义目标数据库的自动通道分配的配置参数,再进行自动备份student表空间。

  1. CONFIGURE DEVICE TYPE disk PARALLELISM 3;
  2. CONFIGURE DEFAULT DEVICE TYPE TO disk;
  3.  
  4. backup tablespace student;

上面命令定义了介质类型都是磁盘,自动分配通道的个数是3。结果如下:

1.jpg

从上图,可以发现直接使用backup备份集命令进行表空间备份时,会自动分配三个通道进行表空间备份,通道的名字分别为ORA_DISK_1到3。那么这种就是使用了自动的通道分配。


四、Oracle RMAN备份

Oracle RMAN备份集是用来存储数据库的备份信息,RMAN使用BACKUP命令对目标数据库进行数据备份。

RMAN一个备份集可以存储一个或多个文件的备份信息,所以说备份集经常用在需要同时备份多个数据文件的情况。每一个备份集是由多个备份片组成的,备份片是一个单独的文件,并且备份片的大小也是有限制的。如果没有限制备份片的大小,那么在备份集中只能存在一个备份片。

RMAN对Oracle数据库备份,就是利用BACKUP命令把要备份的数据库对象备份成备份集,具体命令如下:

  1. BACKUP [level] [backup_type][option]

语法解析:

a、level:指的是备份的增量,可以是1、2、3、4或者FULL, FULL代表的是全备份。

b、backup_type:指的是要进行备份的数据库对象,这里可以是database (数据库)、datafile (数据文件)、tablespace (表空间)、archivelog all (备份归档日志文件)等对象。

c、option:一个可选项,包括channel (用于指定备份所使用的通道)、maxsetsize (定义备份集的最大值)等信息。

例1、利用backup命令备份users表空间,具体命令如下:

  1. backup full tablespace users;

1.jpg

通过上图可以发现,我们进行备份users表空间时,由于里面有两个数据文件,backup备份是对应备份成两个BKP文件。同时在我们进行全库备份或表空间备份时,在未开启归档模式的情况,只能进行冷备份,就是要把数据库关闭并启动mount,但是在开启归档模式下,就可以进行热备份,笔者的数据库就是在开启归档模式下进行的热备份。

例2、利用backup命令进行全库备份。代码如下:

  1. backup full database;

1.jpg


五、Oracle RMAN恢复

Oracle RMAN恢复是RMAN备份的逆过程,主要是通过restore命令还原备份信息,使用recover完成数据库的同步恢复工作。下面介绍RMAN是如何进行备份的恢复。

1、RESTORE还原

RMAN使用RESTORE命令可以还原备份的信息,就是把数据还原到之前备份时的还原点,RESTORE命令的具体语法如下:

  1. RESTORE object

语法解析:

a、object指的是数据库对象,可以是database (数据库)、datafile (数据文件)、tablespace (表空间)、archivelog (归档日志文件)、controlfile(控制文件)等对象。

b、restore 是还原,文件级的恢复,就是物理文件还原,所以只有当数据文件或其他文件丢失时,使用restore进行还原,还原的前提是数据库在mount状态下。

2、RECOVER恢复

RMAN使用RECOVER命令可以恢复数据库,该命令是负责把归档日志文件用于重建的数据文件,来完成数据库的同步恢复。recover恢复是数据级的恢复,逻辑上恢复,即是一步一步利用归档日志恢复到出事的那个时间点,保持数据的一致性。但是,recover恢复的前提得是数据库开启了归档日志模式。

recover恢复语法:

  1. recover  object;

语法解析:

这里的object指的是要恢复的数据库对象,和restore的语法一致。而且都需要在数据库关闭且mount状态进行数据库的恢复。

总结:

在实际应用中,restore还原和recover恢复是结合一起使用的,假如出现数据文件丢失导致数据库宕机时,我们首先是利用restore命令把之前定时备份好的数据文件还原到备份的时间点,然后再利用recover命令通过归档日志把还原点到出事点之间的数据进行恢复。最终完成数据库的完全恢复。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号