千家信息网

如何通过搭建恢复目录实现RMAN异地备份和恢复

发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,这篇文章给大家分享的是有关如何通过搭建恢复目录实现RMAN异地备份和恢复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、为何需要恢复目录RMAN备份的存储库总是存在于RM
千家信息网最后更新 2024年11月20日如何通过搭建恢复目录实现RMAN异地备份和恢复

这篇文章给大家分享的是有关如何通过搭建恢复目录实现RMAN异地备份和恢复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、为何需要恢复目录

RMAN备份的存储库总是存在于RMAN目标数据库的控制文件中的,这样会有两个问题:

1RMAN过分依赖目标数据库控制文件,如果控制文件的所有副本都损坏了,将导致存储库丢失。这种情况下即便备份是完好的,但是由于丢失了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)用RMANSYS用户身份连接到目标数据库

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_databaserc_tablespace rc_datafilerc_backup_setrc_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_scriptrc_stored_script_line来查看存储的脚本,并可用DML来编辑它们。为方便编辑,也可以将脚本转出为操作系统文件

RMAN> print script script1 to file 'e:\script1.rman';

通过视图rc_stored_scriptrc_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直接关闭目标数据库,删除参数文件SPFILEPFILE、控制文件的所有副本、数据文件cmes01.dbf

恢复实验:

1、在恢复目录数据库服务器上用RMAN命令连接到目标数据库,并启动到nomountRMAN将使用一个哑参数文件来启动实例

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异地备份和恢复"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0