如何通过搭建恢复目录实现RMAN异地备份和恢复
这篇文章给大家分享的是有关如何通过搭建恢复目录实现RMAN异地备份和恢复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、为何需要恢复目录
RMAN备份的存储库总是存在于RMAN目标数据库的控制文件中的,这样会有两个问题:
1、RMAN过分依赖目标数据库控制文件,如果控制文件的所有副本都损坏了,将导致存储库丢失。这种情况下即便备份是完好的,但是由于丢失了RMAN备份的元数据信息,导致RMAN无法知道他们的存在而不能使用备份。
2、位于目标数据库控制文件中的存储库,只能保存和恢复由control_file_record_keep_time参数指定的数据,默认该参数是保留7天。
因此,采用恢复目录的手段是必要的,主要体现在以下几点:
1、采用恢复目录则RMAN的备份不再依赖于目标数据库控制文件。这样即便控制文件的所有副本都损坏了,通过恢复目录也可以很方便的使用备份。较好的做法是将恢复目录数据库存放在与目标数据库不同的机器上。
2、恢复目录可以存储RMAN脚本。没有恢复目录,则脚本必须做为操作系统文件存储在运行RMAN可执行文件的机器上。
3、恢复目录可以存储多个数据库的元数据,做为多个数据库备份和恢复信息的集中式存储库。并且一个目录可用于任何平台上的数据库,即它的连接过程是跨平台的。
4、使用恢复目录还可以简化一些操作。如恢复过程对于目标数据库不必处于MOUNT模式,当连接到恢复目录时,RMAN能够自动定位SPFILE和控制文件的备份并还原它们,简化恢复严重受损的数据库的引导过程。
5、恢复目录保存元数据的期限长度没有限制。而基于控制文件的存储库保留数据的时间长度则完全由实例参数control_file_record_keep_time来确定。
恢复目录数据库通常不是特别庞大或繁忙的数据库,不会有很高的资源要求,但却能够显著增强RMAN功能。
RMAN可执行文件可以同时连接最多三个数据库实例:
1、将对其应用备份或还原及恢复操作的一个目标数据库;
2、存储描述目标数据库及其所有可用备份的元数据的恢复目录数据库;
3、使用目标数据库的备份创建的一个辅助数据库。
二、利用恢复目录数据库实现异地备份
有时我们希望将RMAN备份保存在异地,以便更好的容灾,这里说明一下在Windows环境中的实现方法。
1、修改本地数据库Oracle后台服务
修改Oracle监听服务和数据库服务的登录方式,用确定的账户登录,而不是默认的本地系统账户。
修改后重启这两个服务。
2、在异地机器上创建好访问本地目标数据库的服务名,保证能够正常连接
mes =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vm-ora11g-1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mes)
)
)
3、在异地机器上搭建恢复目录数据库,专门用于RMAN备份的元数据管理。创建恢复目录并非必须,但为了更好的异地容灾,防止本地机器遭到破坏后导致所有控制文件丢失,那么即便存在RMAN备份,也是难以使用的。
在异地机器上创建恢复目录分为以下几个步骤:
1)创建一个数据库用作恢复目录。如创建一个数据库名为catdb。
2)创建一个存储目录对象的表空间
SQL> create tablespace rmancat datafile 'd:\oradata\catdb\rmancat01.dbf' size 200m;
3)创建一个默认使用存储目录对象表空间的用户
SQL> create user rman identified by rman default tablespace rmancat quota unlimited on rmancat;
4)授予该用户recovery_catalog_owner角色,它包括了必要的对象权限
SQL> grant recovery_catalog_owner to rman;
5)用RMAN连接到目录数据库,并使用create catalog命令创建目录
C:\> rman catalog rman/rman@catdb
RMAN> create catalog;
6)用RMAN以SYS用户身份连接到目标数据库
RMAN> connect target sys/mesHz2@mes
7)在目录中注册目标数据库,从而将相关信息从目标数据库的控制文件复制到目录中
RMAN> register database;
8)同时连接到目录和目标数据库进行备份和恢复操作
C:\> rman target sys/mesHz2@mes catalog rman/rman
该命令对目标数据库和目录数据库所在环境的RMAN版本关系是有要求的,即RMAN可执行文件的版本必须与目标数据库的版本相同,而创建恢复目录的RMAN版本必须等于或高于在其中注册的任何数据库的版本。
4、创建异地备份脚本
RMAN连接成功后可创建常用的备份脚本,脚本将自动保存在恢复目录数据库中。
为达到完善的备份效果,先修改目标数据库RMAN备份参数,对控制文件和SPFILE文件开启自动备份
RMAN> configure controlfile autobackup on;
RMAN> configure controlfile autobackup format for device type disk to '\\vm-catdb\e\rman_bak\mes\control_bak\%F';
以下是采用并行方式的多通道备份脚本,执行增量级别0备份,自动完成对备份集的检查和清理,手工指定备份位置到网络机器vm-catdb的路径上,而控制文件和SPFILE文件根据配置将自动备份
create global script bak_0 {
sql 'alter system archive log current';
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 0 as compressed backupset
database
format '\\vm-catdb\e\rman_bak\mes\d_%d_%u_%c_%T';
backup as compressed backupset
archivelog all delete all input
format '\\vm-catdb\e\rman_bak\mes\a_%d_%u_%c_%T';
delete noprompt obsolete;
release channel c1;
release channel c2;
}
以下则是对应的增量级别1备份的脚本
create global script bak_1 {
sql 'alter system archive log current';
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 1 as compressed backupset
database
format '\\vm-catdb\e\rman_bak\mes\d_%d_%u_%c_%T';
backup as compressed backupset
archivelog all delete all input
format '\\vm-catdb\e\rman_bak\mes\a_%d_%u_%c_%T';
delete noprompt obsolete;
release channel c1;
release channel c2;
}
5、执行异地备份
在恢复目录中执行0级备份脚本来完成对目标数据库的全备份
RMAN> run {execute script bak_0;}
再次备份时可执行1级备份脚本来完成对目标数据库的增量备份
RMAN> run {execute script bak_1;}
三、管理恢复目录
目录数据库也可以和目标数据库是同一个数据库。这种情况下就应当在目标数据库中创建一个用于存放RMAN恢复元数据的恢复目录表空间rmancat,并将管理恢复目录的用户rman的默认表空间指向该表空间。之后以该用户连接到目录数据库,同时也就连接到了目标数据库,因为它们是同一个库,然后再创建目录
create catalog tablespace rmancat;
之后再注册数据库
register database;
目录数据库与任何生产数据库一样,应该运行在归档日志模式下,定期进行完整的备份。但是不要只是使用RMAN来备份恢复目录数据库,因为如果目录数据库损坏,那么还原它的任何尝试都会出现一个递归性的问题:如果包含目录信息的控制文件或表空间受损,那么打开数据库并作为目录连接它的任何操作都将失败。因此,通过其它方式保护目录数据库是必要的,如用户管理的备份。
如果出于某种原因没有连接到目录来执行备份,那么目录存储库必须与控制文件存储库重新同步。在RMAN下一次同时连接到目标数据库和目录时会自动执行同步操作,重新同步操作将所有信息从控制文件存储库转移到目录中,从而保持它是最新的。因此,只有当没有执行重新同步的周期超过control_file_record_keep_time时才会丢失有关备份的数据。
重新同步操作也可以在RMAN提示符中使用重新同步目录的命令来强制执行
RMAN> resync catalog;
同时连接到目标数据库和恢复目录,可以用以下命令从恢复目录中注销目标数据库
RMAN> unregister database;
如果要删除创建的目录,则命令为
RMAN> drop catalog;
通过目录数据库提供的一些视图,包括rc_database、rc_tablespace、 rc_datafile、rc_backup_set、rc_backup_piece等,可以查询在恢复目录中注册的目标数据库信息以及备份的信息,另外还包括一些记录RMAN运行状态的信息,如rc_rman_configuration等。这些视图都是以字母rc打头
conn rman/rman
查看恢复目录中的RMAN配置信息
col db_unique_name for a20
col name for a50
col value for a70
select db_unique_name, name, value from rc_rman_configuration;
DB_UNIQUE_NAME NAME VALUE
-------------------- -------------------------------------------------- ----------------------------------------------------------------------
MES CONTROLFILE AUTOBACKUP ON
MES CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\rman_bak\mes\control_bak\%F'
MES CHANNEL DEVICE TYPE DISK FORMAT 'd:\rman_bak\mes\%d_%u_%c_%T'
查看恢复目录中的数据库信息
select dbid, name from rc_database;
DBID NAME
---------- --------------------------------------------------
2056489697 MES
查看恢复目录中的表空间信息
col name for a20
select db_name, ts#, name, creation_time, included_in_database_backup, bigfile, temporary from rc_tablespace;
DB_NAME TS# NAME CREATION_TIME INC BIG TEM
-------- ---------- -------------------- ------------------- --- --- ---
MES 0 SYSTEM 2013-10-09 18:23:41 YES NO NO
MES 1 SYSAUX 2013-10-09 18:23:44 YES NO NO
MES 2 UNDOTBS1 2013-10-09 19:09:38 YES NO NO
MES 3 TEMP 2018-04-08 13:01:44 NO NO YES
MES 4 USERS 2013-10-09 18:23:53 YES NO NO
MES 11 FDA 2018-04-24 09:17:41 YES NO NO
MES 7 CMES 2018-04-17 21:03:01 YES NO NO
MES 8 RMES 2018-04-17 21:03:34 YES NO NO
MES 9 HMES 2018-04-17 21:04:11 YES NO NO
MES 10 INDX 2018-04-17 21:04:54 YES NO NO
MES 6 EXAMPLE 2018-04-08 13:02:46 YES NO NO
查看恢复目录中的数据文件信息
col name for a50
select db_name, ts#, tablespace_name, file#, name, bytes/1024/1024 size_m, creation_time from rc_datafile;
DB_NAME TS# TABLESPACE_NAME FILE# NAME SIZE_M CREATION_TIME
-------- ---------- ------------------------------ ---------- -------------------------------------------------- ---------- -------------------
MES 0 SYSTEM 1 D:\ORADATA\MES\SYSTEM01.DBF 770 2013-10-09 18:23:41
MES 1 SYSAUX 2 D:\ORADATA\MES\SYSAUX01.DBF 580 2013-10-09 18:23:44
MES 2 UNDOTBS1 3 D:\ORADATA\MES\UNDOTBS01.DBF 100 2013-10-09 19:09:38
MES 4 USERS 4 D:\ORADATA\MES\USERS01.DBF 5 2013-10-09 18:23:53
MES 6 EXAMPLE 5 D:\ORADATA\MES\EXAMPLE01.DBF 331.25 2018-04-08 13:02:46
MES 7 CMES 6 D:\ORADATA\MES\CMES01.DBF 100 2018-04-17 21:03:01
MES 8 RMES 7 D:\ORADATA\MES\RMES01.DBF 100 2018-04-17 21:03:34
MES 9 HMES 8 D:\ORADATA\MES\HMES01.DBF 100 2018-04-17 21:04:11
MES 10 INDX 9 D:\ORADATA\MES\INDX01.DBF 100 2018-04-17 21:04:54
MES 11 FDA 10 D:\ORADATA\MES\FDA01.DBF 100 2018-04-24 09:17:41
查看恢复目录中的备份集信息
select db_id, bs_key, backup_type, incremental_level, start_time, completion_time, elapsed_seconds, controlfile_included from rc_backup_set;
DB_ID BS_KEY B INCREMENTAL_LEVEL START_TIME COMPLETION_TIME ELAPSED_SECONDS CONTROL
---------- ---------- - ----------------- ------------------- ------------------- --------------- -------
2056489697 6303 D 0 2018-05-02 11:59:20 2018-05-02 11:59:32 12 NONE
2056489697 6304 D 0 2018-05-02 11:59:35 2018-05-02 11:59:36 1 BACKUP
2056489697 6305 D 0 2018-05-02 11:59:37 2018-05-02 11:59:37 0 NONE
2056489697 6306 D 0 2018-05-02 11:59:20 2018-05-02 11:59:39 19 NONE
2056489697 6343 L 2018-05-02 11:59:42 2018-05-02 11:59:42 0 NONE
2056489697 6344 L 2018-05-02 11:59:42 2018-05-02 11:59:43 1 NONE
2056489697 6345 L 2018-05-02 11:59:44 2018-05-02 11:59:44 0 NONE
2056489697 6370 D 2018-05-02 11:59:46 2018-05-02 11:59:48 2 BACKUP
查看恢复目录中的备份片信息
col handle for a70
select db_id, bp_key, bs_key, backup_type, incremental_level, handle, tag, start_time, completion_time, elapsed_seconds, bytes, compressed from rc_backup_piece;
DB_ID BP_KEY BS_KEY B INCREMENTAL_LEVEL HANDLE TAG START_TIME COMPLETION_TIME ELAPSED_SECONDS BYTES COM
---------- ---------- ---------- - ----------------- ---------------------------------------------------------------------- -------------------------------- ------------------- ------------------- --------------- ---------- ---
2056489697 6307 6303 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6FT1SM0O_1_20180502 TAG20180502T115920 2018-05-02 11:59:22 2018-05-02 11:59:31 9 105791488 YES
2056489697 6308 6304 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6HT1SM17_1_20180502 TAG20180502T115920 2018-05-02 11:59:36 2018-05-02 11:59:36 0 1130496 YES
2056489697 6309 6305 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6IT1SM19_1_20180502 TAG20180502T115920 2018-05-02 11:59:37 2018-05-02 11:59:37 0 81920 YES
2056489697 6352 6344 L \\VM-CATDB\E\RMAN_BAK\MES\A_MES_6KT1SM1E_1_20180502 TAG20180502T115942 2018-05-02 11:59:42 2018-05-02 11:59:42 0 1102848 YES
2056489697 6310 6306 D 0 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_6GT1SM0O_1_20180502 TAG20180502T115920 2018-05-02 11:59:22 2018-05-02 11:59:39 17 211460096 YES
2056489697 6351 6343 L \\VM-CATDB\E\RMAN_BAK\MES\A_MES_6JT1SM1E_1_20180502 TAG20180502T115942 2018-05-02 11:59:42 2018-05-02 11:59:42 0 376832 YES
2056489697 6353 6345 L \\VM-CATDB\E\RMAN_BAK\MES\A_MES_6LT1SM1G_1_20180502 TAG20180502T115942 2018-05-02 11:59:44 2018-05-02 11:59:44 0 8704 YES
2056489697 6372 6370 D \\VM-CATDB\E\RMAN_BAK\MES\CONTROL_BAK\C_MES_6MT1SM1I_1_20180502 TAG20180502T115946 2018-05-02 11:59:47 2018-05-02 11:59:48 1 10141696 NO
四、使用恢复目录存储RMAN脚本
RMAN脚本可以作为操作系统文件来存储,如以下是脚本文件e:\script1.rman内容
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 1 as compressed backupset
database plus archivelog delete all input;
release channel c1;
release channel c2;
}
执行脚本时,用RMAN连接到目标数据库和恢复目录,并用@符连接和执行
C:\> rman target / catalog rman/rman@catdb @e:\script1.rman
也可以直接把脚本存储在恢复目录中。以下一些命令是关于脚本的,注意这些命令必须同时连接到目标数据库和目录数据库才能使用,脚本创建同时会进行语法有效性检查。默认情况下,脚本是目标数据库特有的,使用关键字global表示脚本对于所有目标数据库都可见,否则同样的脚本需要分别连接到每个目标数据库去创建它。
创建脚本
create { global } script
替换脚本
replace { global } script
运行脚本
execute { global } script
显示脚本
print { global } script
列出脚本
list { global } script names
删除脚本
delete { global } script
可以使用如下的命令将作为操作系统文件存储的RMAN脚本保存为目录数据库中的脚本
RMAN> create script script1 from file 'e:\script1.rman';
没有直接编辑脚本的命令,但是可以通过查询视图rc_stored_script和rc_stored_script_line来查看存储的脚本,并可用DML来编辑它们。为方便编辑,也可以将脚本转出为操作系统文件
RMAN> print script script1 to file 'e:\script1.rman';
通过视图rc_stored_script和rc_stored_script_line来查询存储的脚本,需要时可以直接通过DML操作来编辑
col script_name for a30
col script_comment for a30
select * from rc_stored_script;
DB_KEY DB_NAME SCRIPT_NAME SCRIPT_COMMENT
---------- -------- ------------------------------ ------------------------------
GLOBAL bak_1
1 MES script1
GLOBAL bak_0
col script_name for a30
col text for a80
select * from rc_stored_script_line where script_name = 'script1';
DB_KEY SCRIPT_NAME LINE TEXT
---------- ------------------------------ ---------- --------------------------------------------------------------------------------
1 script1 1 run {
1 script1 2 allocate channel c1 type disk;
1 script1 3 allocate channel c2 type disk;
1 script1 4 backup incremental level 1 as compressed backupset
1 script1 5 database plus archivelog delete all input;
1 script1 6 release channel c1;
1 script1 7 release channel c2;
1 script1 8 }
最后可以在恢复目录中执行存储的脚本,目录首先会自动执行一次与目标数据库的同步,然后再开始执行备份
RMAN> run {execute script script1;}
五、数据库破坏恢复实验
这里模拟一个故障处理的过程,假定目标数据库的参数文件和控制文件都已损坏,数据文件也部分损坏。并且恢复目录数据库因故障无法启动,虽然备份存在于恢复目录数据库服务器的磁盘上,但RMAN此时无法直接找到这些备份,这种情况看如何能将系统恢复。
实验前的工作:
1、在恢复目录机器上用RMAN连接到目标数据库和恢复目录数据库,并确认备份完整
C:\Users\Administrator>rman target sys/mesHz2@mes catalog rman/rman
RMAN> resync catalog;
RMAN> list backup;
如果目标数据库没有备份,则实验前先做一次完整的备份。
2、将恢复目录数据库关闭,模拟恢复目录不可用。
shutdown immediate;
3、用shutdown abort直接关闭目标数据库,删除参数文件SPFILE、PFILE、控制文件的所有副本、数据文件cmes01.dbf。
恢复实验:
1、在恢复目录数据库服务器上用RMAN命令连接到目标数据库,并启动到nomount,RMAN将使用一个哑参数文件来启动实例
C:\Users\Administrator>rman target sys/mesHz2@mes
恢复管理器: Release 11.2.0.4.0 - Production on 星期三 5月 2 22:54:27 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库 (未启动)
RMAN> startup nomount
启动失败: ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITMES.ORA'
在没有参数文件的情况下启动 Oracle 实例以检索 spfile
Oracle 实例已启动
系统全局区域总计 1068937216 字节
Fixed Size 2288080 字节
Variable Size 285214256 字节
Database Buffers 775946240 字节
Redo Buffers 5488640 字节
2、因为知道磁盘备份的所在位置,因此可以手动指定备份路径给RMAN。首先恢复参数文件,然后使用恢复的SPFILE重启实例,再还原控制文件
RMAN> restore spfile from '\\vm-catdb\e\rman_bak\mes\control_bak\C-2056489697-20180502-06';
启动 restore 于 2018-05-02 22:56:06
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=396 设备类型=DISK
通道 ORA_DISK_1: 正在从 AUTOBACKUP \\vm-catdb\e\rman_bak\mes\control_bak\C-2056489697-20180502-06 还原 spfile
通道 ORA_DISK_1: 从 AUTOBACKUP 还原 SPFILE 已完成
完成 restore 于 2018-05-02 22:56:10
RMAN> shutdown abort
Oracle 实例已关闭
RMAN> startup nomount
已连接到目标数据库 (未启动)
Oracle 实例已启动
系统全局区域总计 1286066176 字节
Fixed Size 2280896 字节
Variable Size 771752512 字节
Database Buffers 503316480 字节
Redo Buffers 8716288 字节
RMAN> restore controlfile from '\\vm-catdb\e\rman_bak\mes\control_bak\C-2056489697-20180502-06';
启动 restore 于 2018-05-02 22:59:05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156 设备类型=DISK
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:02
输出文件名=D:\ORADATA\MES\CONTROL01.CTL
输出文件名=E:\FAST_RECOVERY_AREA\MES\CONTROL02.CTL
完成 restore 于 2018-05-02 22:59:08
3、用恢复的控制文件重启实例到mount状态,根据已知的备份集存储位置,重新在存储库中编目和注册备份文件
RMAN> shutdown abort
Oracle 实例已关闭
RMAN> startup mount
已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载
系统全局区域总计 1286066176 字节
Fixed Size 2280896 字节
Variable Size 771752512 字节
Database Buffers 503316480 字节
Redo Buffers 8716288 字节
为保证恢复成功,先更改RMAN备份文件所在路径,再用crosscheck backup命令做交叉检查,确认备份状态为expired已失效,再用delete expired命令将备份登记删除,当然这个只是删除了备份记录,而磁盘上的备份文件不会被删掉
RMAN> crosscheck backup;
启动 implicit crosscheck backup 于 2018-05-02 23:01:55
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=189 设备类型=DISK
已交叉检验的 5 对象
完成 implicit crosscheck backup 于 2018-05-02 23:01:57
启动 implicit crosscheck copy 于 2018-05-02 23:01:57
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 2018-05-02 23:01:57
搜索恢复区中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: E:\FAST_RECOVERY_AREA\MES\archivelog\ARC_7A938AE1_1_975085062_5.LOG
使用通道 ORA_DISK_1
交叉校验备份片段: 找到为 'EXPIRED'
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502 RECID=224 STAMP=975087154
交叉校验备份片段: 找到为 'EXPIRED'
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502 RECID=225 STAMP=975087154
交叉校验备份片段: 找到为 'EXPIRED'
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7QT1T9IE_1_20180502 RECID=226 STAMP=975087182
交叉校验备份片段: 找到为 'EXPIRED'
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7PT1T9IE_1_20180502 RECID=227 STAMP=975087182
交叉校验备份片段: 找到为 'EXPIRED'
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7RT1T9IF_1_20180502 RECID=228 STAMP=975087183
已交叉检验的 5 对象
RMAN> delete expired backup;
使用通道 ORA_DISK_1
备份片段列表
BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称
------- ------- --- --- ----------- ----------- ----------
224 224 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502
225 225 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502
226 226 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\A_MES_7QT1T9IE_1_20180502
227 227 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\A_MES_7PT1T9IE_1_20180502
228 228 1 1 EXPIRED DISK \\VM-CATDB\E\RMAN_BAK\MES\A_MES_7RT1T9IF_1_20180502
是否确定要删除以上对象 (输入 YES 或 NO)? y
已删除备份片段
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502 RECID=224 STAMP=975087154
已删除备份片段
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502 RECID=225 STAMP=975087154
已删除备份片段
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7QT1T9IE_1_20180502 RECID=226 STAMP=975087182
已删除备份片段
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7PT1T9IE_1_20180502 RECID=227 STAMP=975087182
已删除备份片段
备份片段句柄=\\VM-CATDB\E\RMAN_BAK\MES\A_MES_7RT1T9IF_1_20180502 RECID=228 STAMP=975087183
5 EXPIRED 对象已删除
RMAN> list backup;
说明与资料档案库中的任何备份都不匹配
现在再把刚才备份的路径改回,表示备份已经拿来,然后重新编目和注册备份,让RMAN知道备份的存在
RMAN> catalog start with '\\vm-catdb\e\rman_bak\mes';
搜索与样式 \\vm-catdb\e\rman_bak\mes 匹配的所有文件
数据库未知文件的列表
=====================================
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7PT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7QT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7RT1T9IF_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\control_bak\C-2056489697-20180502-06
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7NT1T9HG_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7OT1T9HG_1_20180502
是否确实要将上述文件列入目录 (输入 YES 或 NO)? y
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7PT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7QT1T9IE_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\A_MES_7RT1T9IF_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\control_bak\C-2056489697-20180502-06
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7NT1T9HG_1_20180502
文件名: \\VM-CATDB\E\RMAN_BAK\mes\D_MES_7OT1T9HG_1_20180502
4、执行数据库还原
RMAN> restore database;
启动 restore 于 2018-05-02 23:05:55
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\ORADATA\MES\SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\ORADATA\MES\UNDOTBS01.DBF
通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\ORADATA\MES\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00006 还原到 D:\ORADATA\MES\CMES01.DBF
通道 ORA_DISK_1: 将数据文件 00008 还原到 D:\ORADATA\MES\HMES01.DBF
通道 ORA_DISK_1: 正在读取备份片段 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502
通道 ORA_DISK_1: 段句柄 = \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7OT1T9HG_1_20180502 标记 = TAG20180502T173232
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:36
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\ORADATA\MES\SYSAUX01.DBF
通道 ORA_DISK_1: 将数据文件 00005 还原到 D:\ORADATA\MES\EXAMPLE01.DBF
通道 ORA_DISK_1: 将数据文件 00007 还原到 D:\ORADATA\MES\RMES01.DBF
通道 ORA_DISK_1: 将数据文件 00009 还原到 D:\ORADATA\MES\INDX01.DBF
通道 ORA_DISK_1: 将数据文件 00010 还原到 D:\ORADATA\MES\FDA01.DBF
通道 ORA_DISK_1: 正在读取备份片段 \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502
通道 ORA_DISK_1: 段句柄 = \\VM-CATDB\E\RMAN_BAK\MES\D_MES_7NT1T9HG_1_20180502 标记 = TAG20180502T173232
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:26
完成 restore 于 2018-05-02 23:06:57
5、为了确保数据库的完全恢复,可能还需要利用归档日志,因此需将归档日志编目。
首先查看RMAN存储库中关于归档日志的记录,这里显示没有记录
RMAN> list archivelog all;
说明与资料档案库中的任何归档日志都不匹配
重新编目
RMAN> catalog start with 'E:\fast_recovery_area\mes\archivelog';
搜索与样式 E:\fast_recovery_area\mes\archivelog 匹配的所有文件
数据库未知文件的列表
=====================================
文件名: E:\FAST_RECOVERY_AREA\MES\archivelog\ARC_7A938AE1_1_975085062_5.LOG
是否确实要将上述文件列入目录 (输入 YES 或 NO)? y
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: E:\FAST_RECOVERY_AREA\MES\archivelog\ARC_7A938AE1_1_975085062_5.LOG
RMAN> list archivelog all;
db_unique_name 为 MES 的数据库的归档日志副本列表
=====================================================================
关键字 线程序列 S 时间下限
------- ---- ------- - -------------------
6 1 5 A 2018-05-02 17:32:59
名称: E:\FAST_RECOVERY_AREA\MES\ARCHIVELOG\ARC_7A938AE1_1_975085062_5.LOG
6、执行数据库的完全恢复
RMAN> recover database;
启动 recover 于 2018-05-02 23:22:30
使用通道 ORA_DISK_1
正在开始介质的恢复
线程 1 序列 4 的归档日志已作为文件 D:\ORADATA\MES\REDO01.LOG 存在于磁盘上
线程 1 序列 5 的归档日志已作为文件 D:\ORADATA\MES\REDO02.LOG 存在于磁盘上
线程 1 序列 6 的归档日志已作为文件 D:\ORADATA\MES\REDO03.LOG 存在于磁盘上
归档日志文件名=D:\ORADATA\MES\REDO01.LOG 线程=1 序列=4
归档日志文件名=D:\ORADATA\MES\REDO02.LOG 线程=1 序列=5
归档日志文件名=D:\ORADATA\MES\REDO03.LOG 线程=1 序列=6
介质恢复完成, 用时: 00:00:01
完成 recover 于 2018-05-02 23:22:32
7、打开数据库并重置日志序列
RMAN> alter database open resetlogs;
数据库已打开
至此,完成了mes数据库破坏后的完全恢复。
8、实验完毕后开启恢复目录数据库,之后应在恢复目录机器上重新注册数据库的新化身
C:\Users\Administrator>rman target sys/mesHz2@mes catalog rman/rman
恢复管理器: Release 11.2.0.4.0 - Production on 星期三 5月 2 23:24:54 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: MES (DBID=2056489697)
连接到恢复目录数据库
RMAN> unregister database;
数据库名为 "MES" 且 DBID 为 2056489697
是否确实要注销数据库 (输入 YES 或 NO)? y
已从恢复目录中注销数据库
RMAN> register database;
注册在恢复目录中的数据库
正在启动恢复目录的全部重新同步
完成全部重新同步
9、由于生成了数据库新的化身,以前所做的备份和归档都已不再有用,可以用RMAN命令将其删除和注销,文件不再保留,新的数据库应当尽快重做备份。
感谢各位的阅读!关于"如何通过搭建恢复目录实现RMAN异地备份和恢复"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!