将RMAN最新的备份拷贝的恢复服务器指定目录下(一定要是本机磁盘,不要使用共享盘中的文件),最好是保持与数据库服务器备份文件路径一致,如果不一致,需要在恢复过程中修改相关路径。本文是拷贝到C:\backup\rman目录下,与数据库服务器备份文件路径不一致。
启动数据库安装程序。
启动Net Manager,创建监听
启动监听
将监听服务设置为自动启动
在命令行窗口执行如下命令:
C:\Users\Administrator>oradim -new -sid cme
实例已创建。
(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
在新打开的命令行窗口输入如下命令:
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
(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
) ;
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
需要先更改重做日志文件路径:
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变量的值。


















