通过搭建恢复目录实现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监听服务和数据库服务的登录方式,用确定的账户登录,而不是默认的本地系统账户。

bb


bb


修改后重启这两个服务。


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命令将其删除和注销,文件不再保留,新的数据库应当尽快重做备份。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28974745/viewspace-2153718/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28974745/viewspace-2153718/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值