(一)恢复目录概述
RMAN档案资料库用于存储数据库备份、修复以及恢复所需的信息。这些信息可以保存在备份数据库的控制文件中,也可以单独保存在一个独立的恢复目录数据库的恢复目录中。两种方式差别如下:
(1)将备份信息保存在控制文件中。如果将备份信息保存在控制文件中,那么控制文件中将包括不可重复使用的记录和可以重复使用的记录,不可重复使用的是记录数据文件、联机日志文件等不经常变化的、关键性的信息;可重复的是数据库运行过程中不断新生成的信息,如:重做日志文件的历史信息、归档日志文件信息、备份信息等。因为可重复使用的空间是有限的,采用循环覆盖的方式进行工作,因此,能够保存的备份信息也有限。
(2)将备份信息保存在恢复目录中。使用RMAN对数据库进行备份恢复时,RMAN直接从恢复目录获取所需信息,而不是从控制文件获取信息。一个恢复目录可以被多个目标数据库使用,只需将目标数据库注册到恢复目录即可。恢复目录主要保存:
- 目标数据库数据文件与重做日志文件的信息
- 目标数据库镜像复制的信息
- 目标数据库表空间与数据文件的关系
- 存储用户创建的RMAN脚本,可以重复使用
- 永久性的RMAN预定义参数配置信息
本文将使用恢复目录进行备份恢复测试。
(二)测试环境信息
IP地址 | 数据库实例名 | 备注 |
192.168.10.11 | testdb1 | 待备份数据库1,也称目标数据库 |
192.168.10.12 | testdb2 | 待备份数据库2,也称目标数据库 |
192.168.10.51 | catalogdb | catalog数据库 |
(三)为数据库配置恢复目录
(3.1)在恢复目录数据库(192.168.10.51:catalogdb)创建表空间用于存放RMAN备份数据
(3.2)在恢复目录数据库创建用户
多个目标数据库可以使用同一个用户,也可以单独为每个目标数据库创建一个用户,这里为每个目标库单独创建用户。
(3.3)配置各个实例的连接字符串
为各个服务器配置连接字符串tnsnames.ora,目标数据库节点需要配置catalog数据库的tns,catalog数据库需要配置所有目标数据库的tns。
(3.3.1)在testdb1节点添加catalogdb数据库的连接字符串
(3.3.2)在testdb2节点添加catalogdb数据库的连接字符串
(3.3.3)在catalogdb节点添加testdb1和testdb2数据库的连接字符串
(3.4)启动RMAN,创建恢复目录
在catalogdb数据库节点启动RMAN,创建恢复目录
(3.4.1)为testdb1创建恢复目录
(3.4.2)为testdb2创建恢复目录
(3.5)注册数据库
(3.5.1)将testdb1注册到恢复目录中
(3.5.2)将testdb2注册到恢复目录中
(四)备份与恢复测试
(4.1)创建测试数据
在数据库testdb1中的用户lijiaman下面创建表test01,并插入测试数据
(4.2)将test01数据库备份到/rman_backup目录下面,需要主义的是,备份只能放在目标数据库服务器的本地
# 创建备份路径 [root@primarynode ~]# mkdir /rman_backup [root@primarynode ~]# chown -R oracle:oinstall /rman_backup/
# 开始备份 rman target sys/Oracle123@testdb1 catalog rman_testdb1/rman_testdb1 run{ configure controlfile autobackup on; configure controlfile autobackup format for device type disk to '/rman_backup/controlfile_%F.bak'; allocate channel c1 type disk; backup full tag 'dbfull' format '/rman_backup/full_%u_%s_%p' database; sql 'alter system archive log current'; backup archivelog all format '/rman_backup/arch_%u_%s_%p'; backup spfile format '/rman_backup/spfile_%d_%U'; delete noprompt expired backup; delete noprompt obsolete; release channel c1; }
(4.3)模拟误操作
(4.4)执行恢复
将数据库恢复到truncate之前,这里恢复到2020/4/14 20:48:55
(4.4.1)将testdb1设置为mount状态
(4.4.2)在备份服务器catalog上执行恢复操作
rman target sys/Oracle123@testdb1 catalog rman_testdb1/rman_testdb1 RMAN>SQL"ALTER SESSION SET NLS_LANGUAGE=''AMERICAN''"; RMAN>SQL"ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''"; RUN{ SET UNTIL TIME '2020-04-14 20:48:55'; RESTORE DATABASE; RECOVER DATABASE; }
(4.5)因为是不完全恢复,以resetlogs方式打开数据库
(4.6)确认数据已经还原回来
个人觉得,使用恢复目录来保存RMAN信息的优点有:可以长久保存RMAN信息,可以保存RMAN脚本。
与将备份信息保存在控制文件相比,最大的差别是:使用catalog时,执行备份恢复都需要连接到两个数据库,而使用控制文件则只需连接待恢复的数据库。