RMAN异机恢复-路径不一致情况

1、拷贝RMAN备份

RMAN最新的备份拷贝的恢复服务器指定目录下(一定要是本机磁盘,不要使用共享盘中的文件),最好是保持与数据库服务器备份文件路径一致,如果不一致,需要在恢复过程中修改相关路径。本文是拷贝到C:\backup\rman目录下,与数据库服务器备份文件路径不一致。

 

2、数据库安装

启动数据库安装程序。

clip_image002

clip_image004

clip_image006

clip_image008

clip_image010

clip_image012

clip_image014

clip_image016

clip_image018

clip_image020

clip_image022

 

3、配置监听

启动Net Manager,创建监听

clip_image023

clip_image025

clip_image027

clip_image029

clip_image031

clip_image033

启动监听

clip_image035

将监听服务设置为自动启动

clip_image037

 

4、创建oracle服务

在命令行窗口执行如下命令:

C:\Users\Administrator>oradim -new -sid cme

实例已创建。

 

5、配置初始化参数文件

1)将pfile.ora文件拷贝到%ORACLE_HOME%\database目录下,并根据本机实际情况对部分参数进行修改,修改后的内容如下:

cmetest.__pga_aggregate_target=369098752

cmetest.__sga_target=721420288

cmetest.__shared_io_pool_size=0

cmetest.__shared_pool_size=419430400

cmetest.__streams_pool_size=16777216

*.audit_file_dest='C:\app\Administrator\admin\cme\adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='C:\APP\ADMINISTRATOR\ORADATA\CME\CONTROLFILE\control01.ctl','C:\APP\ADMINISTRATOR\ORADATA\CME\CONTROLFILE\control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='cme'

*.db_recovery_file_dest='C:\app\Administrator\flash_recovery_area'

*.db_recovery_file_dest_size=4442061312

*.deferred_segment_creation=FALSE

*.diagnostic_dest='C:\app\Administrator'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=cmeXDB)'

*.log_archive_dest_1='location=C:\arch'

*.log_archive_dest=''

*.memory_target=1078984704

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.processes=500

*.remote_login_passwordfile='EXCLUSIVE'

*.resource_limit=TRUE

*.sessions=555

*.undo_tablespace='UNDOTBS1'

修改完成后需要根据修改内容创建相应目录。

 

2)修改完成后根据pfile创建spfile,在命令行输入如下命令:

C:\Users\Administrator>set oracle_sid=cme

 

C:\Users\Administrator>sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 8 27 13:51:14 2014

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

已连接到空闲例程。

 

SQL> create spfile from pfile='C:\app\Administrator\product\11.2.0\dbhome_1\database\pfile.ora';

 

文件已创建。

 

     3)启动数据库

    在命令行输入如下命令,启动数据库到nomount状态。

SQL> startup nomount

ORACLE 例程已经启动。

 

Total System Global Area 1085640704 bytes

Fixed Size                  2174928 bytes

Variable Size             654311472 bytes

Database Buffers          419430400 bytes

Redo Buffers                9723904 bytes

 

6、恢复控制文件并加装数据库

    在新打开的命令行窗口输入如下命令:

C:\Users\Administrator>set oracle_sid=cme

 

C:\Users\Administrator>rman target /

 

恢复管理器: Release 11.2.0.1.0 - Production on 星期三 8 27 14:05:47 2014

 

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 

连接到目标数据库: CME (未装载)

 

RMAN> set dbid=4032130741

 

正在执行命令: SET DBID

 

RMAN> restore controlfile from 'C:\backup\rman\CF_3289_1_856574521';

 

启动 restore 27-8 -14

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=20 设备类型=DISK

 

通道 ORA_DISK_1: 正在还原控制文件

通道 ORA_DISK_1: 还原完成, 用时: 00:00:03

输出文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\CONTROLFILE\CONTROL01.CTL

输出文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\CONTROLFILE\CONTROL02.CTL

完成 restore 27-8 -14

 

RMAN> alter database mount;

 

数据库已装载

释放的通道: ORA_DISK_1

 

7、修复数据库

1)将rman备份文件信息写入控制文件

RMAN> catalog start with 'C:\backup\rman';

 

启动 implicit crosscheck backup 28-8 -14

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=20 设备类型=DISK

已交叉检验的 11 对象

完成 implicit crosscheck backup 28-8 -14

 

启动 implicit crosscheck copy 28-8 -14

使用通道 ORA_DISK_1

完成 implicit crosscheck copy 28-8 -14

 

搜索恢复区中的所有文件

正在编制文件目录...

没有为文件编制目录

 

搜索与样式 C:\backup\rman 匹配的所有文件

 

数据库未知文件的列表

=====================================

文件名: C:\BACKUP\rman\6JPGSH8R_1_1

文件名: C:\BACKUP\rman\6KPGSI56_1_1

文件名: C:\BACKUP\rman\6LPGSIFN_1_1

文件名: C:\BACKUP\rman\6MPGSIFP_1_1

文件名: C:\BACKUP\rman\6NPGSIFU_1_1

文件名: C:\BACKUP\rman\6OPGSIGR_1_1

文件名: C:\BACKUP\rman\CF_3289_1_856574521

 

是否确实要将上述文件列入目录 (输入 YES NO)? yes

正在编制文件目录...

目录编制完毕

 

已列入目录的文件的列表

=======================

文件名: C:\BACKUP\rman\6JPGSH8R_1_1

文件名: C:\BACKUP\rman\6KPGSI56_1_1

文件名: C:\BACKUP\rman\6LPGSIFN_1_1

文件名: C:\BACKUP\rman\6MPGSIFP_1_1

文件名: C:\BACKUP\rman\6NPGSIFU_1_1

文件名: C:\BACKUP\rman\6OPGSIGR_1_1

文件名: C:\BACKUP\rman\CF_3289_1_856574521

 

2)检查备份文件

RMAN> crosscheck backup;

 

使用通道 ORA_DISK_1

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6CPGPSSQ_1_1 RECID=3276 STAMP=856486811

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6DPGPTSU_1_1 RECID=3277 STAMP=856487839

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6FPGPU7H_1_1 RECID=3279 STAMP=856488177

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6HPGPU8K_1_1 RECID=3281 STAMP=856488213

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\CF_3282_1_856488241 RECID=3282 STAMP=856488243

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6JPGSH8R_1_1 RECID=3283 STAMP=856573211

交叉校验备份片段: 找到为 'AVAILABLE'

备份片段句柄=C:\BACKUP\RMAN\6JPGSH8R_1_1 RECID=3289 STAMP=856778718

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6KPGSI56_1_1 RECID=3284 STAMP=856574119

交叉校验备份片段: 找到为 'AVAILABLE'

备份片段句柄=C:\BACKUP\RMAN\6KPGSI56_1_1 RECID=3290 STAMP=856778719

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6LPGSIFN_1_1 RECID=3285 STAMP=856574456

交叉校验备份片段: 找到为 'AVAILABLE'

备份片段句柄=C:\BACKUP\RMAN\6LPGSIFN_1_1 RECID=3291 STAMP=856778719

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6MPGSIFP_1_1 RECID=3286 STAMP=856574458

交叉校验备份片段: 找到为 'AVAILABLE'

备份片段句柄=C:\BACKUP\RMAN\6MPGSIFP_1_1 RECID=3292 STAMP=856778719

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6NPGSIFU_1_1 RECID=3287 STAMP=856574464

交叉校验备份片段: 找到为 'AVAILABLE'

备份片段句柄=C:\BACKUP\RMAN\6NPGSIFU_1_1 RECID=3293 STAMP=856778719

交叉校验备份片段: 找到为 'EXPIRED'

备份片段句柄=F:\BACKUP\RMAN\6OPGSIGR_1_1 RECID=3288 STAMP=856574492

交叉校验备份片段: 找到为 'AVAILABLE'

备份片段句柄=C:\BACKUP\RMAN\6OPGSIGR_1_1 RECID=3294 STAMP=856778719

交叉校验备份片段: 找到为 'AVAILABLE'

备份片段句柄=C:\BACKUP\RMAN\CF_3289_1_856574521 RECID=3295 STAMP=856778719

已交叉检验的 18 对象

 

RMAN> report schema;

 

RMAN-06139: 警告: 控制文件对于 REPORT SCHEMA 不是最新

db_unique_name CME 的数据库的数据库方案报表

 

永久数据文件列表

===========================

文件大小 (MB) 表空间           回退段数据文件名称

---- -------- -------------------- ------- ------------------------

1    0        SYSTEM               ***     E:\NSTC\ORADATA\CME\CME\SYSTEM01.DBF

2    0        SYSAUX               ***     E:\NSTC\ORADATA\CME\CME\SYSAUX01.DBF

3    0        UNDOTBS1             ***     E:\NSTC\ORADATA\CME\CME\UNDOTBS01.DBF

 

4    0        USERS                ***     E:\NSTC\ORADATA\CME\CME\USERS01.DBF

5    0        N6DATASPACE          ***     E:\NSTC\ORADATA\CME\N6_DATA01.DBF

6    0        N6DATASPACE          ***     E:\NSTC\ORADATA\CME\N6_DATA02.DBF

7    0        N6DATASPACE          ***     E:\NSTC\ORADATA\CME\N6_DATA03.DBF

 

临时文件列表

=======================

文件大小 (MB) 表空间           最大大小 (MB) 临时文件名称

---- -------- -------------------- ----------- --------------------

1    0        TEMP                 32767       E:\NSTC\ORADATA\CME\CME\TEMP01.DBF

2    0        N6DATASPACE_TEMP     32767       E:\NSTC\ORADATA\CME\N6_TEMP01.DBF

 

3)创建数据文件目录C:\app\Administrator\oradata\cme\datafile,并恢复数据文件

 

RMAN> run

{

set newname for datafile 1 to 'C:\app\Administrator\oradata\cme\DATAFILE\SYSTEM01.DBF';

set newname for datafile 2 to 'C:\app\Administrator\oradata\cme\DATAFILE\SYSAUX01.DBF';

set newname for datafile 3 to 'C:\app\Administrator\oradata\cme\DATAFILE\UNDOTBS01.DBF';

set newname for datafile 4 to 'C:\app\Administrator\oradata\cme\DATAFILE\USERS01.DBF';

set newname for datafile 5 to 'C:\app\Administrator\oradata\cme\DATAFILE\N6_DATA01.DBF';

set newname for datafile 6 to 'C:\app\Administrator\oradata\cme\DATAFILE\N6_DATA02.DBF';

set newname for datafile 7 to 'C:\app\Administrator\oradata\cme\DATAFILE\N6_DATA03.DBF';

restore database;

switch datafile all;

}

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

启动 restore 28-8 -14

使用通道 ORA_DISK_1

 

通道 ORA_DISK_1: 正在开始还原数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集还原的数据文件

通道 ORA_DISK_1: 将数据文件 00001 还原到 C:\app\Administrator\oradata\cme\DATAFI

LE\SYSTEM01.DBF

通道 ORA_DISK_1: 将数据文件 00004 还原到 C:\app\Administrator\oradata\cme\DATAFI

LE\USERS01.DBF

通道 ORA_DISK_1: 将数据文件 00005 还原到 C:\app\Administrator\oradata\cme\DATAFI

LE\N6_DATA01.DBF

通道 ORA_DISK_1: 正在读取备份片段 C:\BACKUP\RMAN\6JPGSH8R_1_1

通道 ORA_DISK_1: 段句柄 = C:\BACKUP\RMAN\6JPGSH8R_1_1 标记 = TAG20140826T010010

通道 ORA_DISK_1: 已还原备份片段 1

通道 ORA_DISK_1: 还原完成, 用时: 00:26:18

通道 ORA_DISK_1: 正在开始还原数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集还原的数据文件

通道 ORA_DISK_1: 将数据文件 00002 还原到 C:\app\Administrator\oradata\cme\DATAFI

LE\SYSAUX01.DBF

通道 ORA_DISK_1: 将数据文件 00003 还原到 C:\app\Administrator\oradata\cme\DATAFI

LE\UNDOTBS01.DBF

通道 ORA_DISK_1: 将数据文件 00006 还原到 C:\app\Administrator\oradata\cme\DATAFI

LE\N6_DATA02.DBF

通道 ORA_DISK_1: 将数据文件 00007 还原到 C:\app\Administrator\oradata\cme\DATAFI

LE\N6_DATA03.DBF

通道 ORA_DISK_1: 正在读取备份片段 C:\BACKUP\RMAN\6KPGSI56_1_1

通道 ORA_DISK_1: 段句柄 = C:\BACKUP\RMAN\6KPGSI56_1_1 标记 = TAG20140826T010010

通道 ORA_DISK_1: 已还原备份片段 1

通道 ORA_DISK_1: 还原完成, 用时: 00:10:56

完成 restore 28-8 -14

 

数据文件 1 已转换成数据文件副本

输入数据文件副本 RECID=8 STAMP=856781081 文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\DATAFILE\SYSTEM01.DBF

数据文件 2 已转换成数据文件副本

输入数据文件副本 RECID=9 STAMP=856781081 文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\DATAFILE\SYSAUX01.DBF

数据文件 3 已转换成数据文件副本

输入数据文件副本 RECID=10 STAMP=856781081 文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\DATAFILE\UNDOTBS01.DBF

数据文件 4 已转换成数据文件副本

输入数据文件副本 RECID=11 STAMP=856781081 文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\DATAFILE\USERS01.DBF

数据文件 5 已转换成数据文件副本

输入数据文件副本 RECID=12 STAMP=856781082 文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\DATAFILE\N6_DATA01.DBF

数据文件 6 已转换成数据文件副本

输入数据文件副本 RECID=13 STAMP=856781082 文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\DATAFILE\N6_DATA02.DBF

数据文件 7 已转换成数据文件副本

输入数据文件副本 RECID=14 STAMP=856781083 文件名=C:\APP\ADMINISTRATOR\ORADATA\CME\DATAFILE\N6_DATA03.DBF

 

可以通过以下sql语句查询恢复进度:

select inst_id,sid,serial#,opname,COMPLETE,
trunc(((to_char(last_update_time,'dd')-to_char(start_time,'dd'))*60*24+(to_char(last_update_time,'hh24')-to_char(start_time,'hh24'))*60 +(to_char(last_update_time,'mi')-to_char(start_time,'mi')))*(100-complete)/complete) min from 
( 
SELECT inst_id,
sid,
serial#,
opname,
ROUND(SOFAR / TOTALWORK * 100, 2) COMPLETE,
LAST_UPDATE_TIME,
START_TIME
FROM gV$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
--AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK
) ;

 

8、恢复数据库

RMAN> recover database;

 

启动 recover 28-8 -14

使用通道 ORA_DISK_1

 

正在开始介质的恢复

 

通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标

通道 ORA_DISK_1: 正在还原归档日志

归档日志线程=1 序列=19097

通道 ORA_DISK_1: 正在还原归档日志

归档日志线程=1 序列=19098

通道 ORA_DISK_1: 正在读取备份片段 C:\BACKUP\RMAN\6OPGSIGR_1_1

通道 ORA_DISK_1: 段句柄 = C:\BACKUP\RMAN\6OPGSIGR_1_1 标记 = TAG20140826T012101

通道 ORA_DISK_1: 已还原备份片段 1

通道 ORA_DISK_1: 还原完成, 用时: 00:00:15

归档日志文件名=C:\ARCH\ARC0000019097_0815249527.0001 线程=1 序列=19097

归档日志文件名=C:\ARCH\ARC0000019098_0815249527.0001 线程=1 序列=19098

无法找到归档日志

归档日志线程=1 序列=19099

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: recover 命令 ( 08/28/2014 11:01:18 ) 失败

RMAN-06054: 介质恢复正在请求未知的线程 1 序列 19099 的归档日志以及起始 SCN 363098264

 

9、打开数据库

需要先更改重做日志文件路径:

SQL> col member for a30;

SQL> select * from v$logfile;

 

    GROUP# STATUS         TYPE           MEMBER                         IS_REC

---------- -------------- -------------- ------------------------------ ------

         3                ONLINE         E:\NSTC\ORADATA\CME\CME\REDO03 NO

                                         .LOG

 

         2                ONLINE         E:\NSTC\ORADATA\CME\CME\REDO02 NO

                                         .LOG

 

         1                ONLINE         E:\NSTC\ORADATA\CME\CME\REDO01 NO

                                         .LOG

 

 

SQL> alter database rename file 'E:\NSTC\ORADATA\CME\CME\REDO01.LOG' to 'C:\app\Administrator\oradata\cme\onlinelog\redo01.log';

 

数据库已更改。

 

SQL> alter database rename file 'E:\NSTC\ORADATA\CME\CME\REDO02.LOG' to 'C:\app\Administrator\oradata\cme\onlinelog\redo02.log';

 

数据库已更改。

 

SQL> alter database rename file 'E:\NSTC\ORADATA\CME\CME\REDO03.LOG' to 'C:\app\Administrator\oradata\cme\onlinelog\redo03.log';

 

数据库已更改。

 

  打开数据库:

SQL> alter database open resetlogs;

 

数据库已更改。

 

注意:需要在系统环境变量中增加名称为oracle_sid,值为cme的环境变量,不然每次使用sqlplus连接数据库时需要手动指定oracle_sid变量的值。

请使用浏览器的分享功能分享到微信等