set ORACLE_SID=OSS
set ORAHOME=D:\ORACLE\ORA92
set ORABASE=D:\ORACLE
mkdir %ORABASE%\admin\%ORACLE_SID%\bdump
mkdir %ORABASE%\admin\%ORACLE_SID%\cdump
mkdir %ORABASE%\admin\%ORACLE_SID%\create
mkdir %ORABASE%\admin\%ORACLE_SID%\pfile
mkdir %ORABASE%\admin\%ORACLE_SID%\udump
mkdir %ORABASE%\ora92\database
mkdir %ORABASE%\oradata\%ORACLE_SID%
:: 建立Oracle服务
%ORAHOME%\bin\oradim.exe -new -sid %ORACLE_SID% -startmode m
:: 创建密码文件
%ORAHOME%\bin\orapwd.exe file=%ORAHOME%\database\PWD%ORACLE_SID%.ora password=change_on_install
##################
# 1.恢复spfile #
##################
以pfile启动到nomount
SQL> startup force nomount pfile='D:\oracle\admin\OSS\pfile\init.ora'
ORACLE 例程已经启动。
Total System Global Area 143728252 bytes
Fixed Size 454268 bytes
Variable Size 88080384 bytes
Database Buffers 54525952 bytes
Redo Buffers 667648 bytes
C:\Documents and Settings\Administrator>set ORACLE_SID=OSS
C:\Documents and Settings\Administrator>rman target / nocatalog
恢复管理器: 版本9.2.0.8.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: OSS(未安装)
正在使用目标数据库控制文件替代恢复目录
从RMAN的备份文件中恢复SPFILE
RMAN> restore spfile from 'D:\oracle\oradata\rman\OSS_34.DBF';
启动 restore 于 27-10月-08
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 已找到的自动备份: D:\oracle\oradata\rman\OSS_34.DBF
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 27-10月-08
如果是多个备份片的备份集,一般在第一个备份片文件
RMAN> restore spfile from 'D:\oracle\oradata\rman\OSS_35_1.DBF';
启动 restore 于 27-10月-08
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 已找到的自动备份: D:\oracle\oradata\rman\OSS_35_1.DBF
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 27-10月-08
RMAN>
####################
# 2.恢复控制文件 #
####################
方法1:RMAN>restore controlfile from ‘/…备份文件..’
RMAN> restore controlfile from 'D:\oracle\oradata\rman\OSS_35_1.DBF';
启动 restore 于 27-10月-08
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=D:\ORACLE\ORADATA\OSS\CONTROL02.CTL
输出文件名=D:\ORACLE\ORADATA\OSS\CONTROL03.CTL
完成 restore 于 27-10月-08
RMAN>
方法2:
declare
devtype varchar2(256);
done boolean;
begin
devtype := sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
sys.dbms_backup_restore.restoreSetDatafile;
sys.dbms_backup_restore.restoreControlfileTo(cfname=>'D:\oracle\oradata\OSS\CONTROL02.CTL');
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\oracle\oradata\rman\OSS_35_1.DBF',params=>null);
sys.dbms_backup_restore.deviceDeallocate;
end;
验证是否恢复了控制文件
SQL> show parameter control_files
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files string
D:\oracle\oradata\oss\control0
2.ctl, D:\oracle\oradata\oss\c
ontrol03.ctl
SQL>
##################
# 3.mount数据库 #
##################
SQL> alter database mount;
数据库已更改。
当恢复控制文件后,可以查看备份集信息
C:\Documents and Settings\Administrator>rman target / nocatalog
恢复管理器: 版本9.2.0.8.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: OSS (DBID=666923275)
正在使用目标数据库控制文件替代恢复目录
RMAN> list copy;
数据文件副本列表
关键字 文件 S 完成时间 Ckp SCN Ckp 时间 名称
------- ---- - ---------- ---------- ---------- ----
4 5 A 24-10月-08 146655 24-10月-08 D:\ORACLE\ORADATA\RMAN\DF_5.DBF
已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
18 1 5 A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00005.001
19 1 6 A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00006.001
20 1 7 A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00007.001
21 1 8 A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00008.001
22 1 9 A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00009.001
23 1 10 A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00010.001
24 1 11 A 24-10月-08 D:\ORACLE\ORADATA\ARCH\ARC00011.001
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
19 Full 208M DISK 00:00:34 27-10月-08
BP 关键字: 23 状态: AVAILABLE 标记:TAG20081027T221948
段名:D:\ORACLE\ORADATA\RMAN\OSS_34.DBF
包含的 SPFILE: 修改时间: 24-10月-08
备份集 19 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 175026 27-10月-08 D:\ORACLE\ORADATA\OSS\SYSTEM01.DBF
2 Full 175026 27-10月-08 D:\ORACLE\ORADATA\OSS\UNDOTBS01.DBF
3 Full 175026 27-10月-08 D:\ORACLE\ORADATA\OSS\INDX01.DBF
4 Full 175026 27-10月-08 D:\ORACLE\ORADATA\OSS\TOOLS01.DBF
5 Full 175026 27-10月-08 D:\ORACLE\ORADATA\OSS\USERS01.DBF
RMAN>
################
# 恢复数据文件 #
################
RMAN> restore database;
启动 restore 于 27-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=10 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\ORADATA\OSS\SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE\ORADATA\OSS\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\ORADATA\OSS\INDX01.DBF
正将数据文件00004恢复到D:\ORACLE\ORADATA\OSS\TOOLS01.DBF
正将数据文件00005恢复到D:\ORACLE\ORADATA\OSS\USERS01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:\ORACLE\ORADATA\RMAN\OSS_34.DBF tag=TAG20081027T221948 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 27-10月-08
由于没有redo log日志文件所以我们不应用日志恢复:
RMAN> recover database noredo;
启动 recover 于 27-10月-08
使用通道 ORA_DISK_1
完成 recover 于 27-10月-08
到此,已经拥有了参数文件,控制文件,数据文件了
还差日志文件
################
# 恢复日志文件 #
################
SQL> alter system set "_allow_resetlogs_corruption"=TRUE scope=spfile;
alter system set "_allow_resetlogs_corruption"=TRUE scope=spfile
*
ERROR 位于第 1 行:
ORA-32001: ????? SPFILE, ????????? SPFILE
SQL> shutdown immediate;
ORA-01109: ??????
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup force mount;
ORACLE 例程已经启动。
Total System Global Area 143728252 bytes
Fixed Size 454268 bytes
Variable Size 88080384 bytes
Database Buffers 54525952 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter system set "_allow_resetlogs_corruption"=TRUE scope=spfile;
系统已更改。
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup force
ORACLE 例程已经启动。
Total System Global Area 143728252 bytes
Fixed Size 454268 bytes
Variable Size 88080384 bytes
Database Buffers 54525952 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
数据库已更改。
至此,数据库恢复!
阅读(1577) | 评论(0) | 转发(0) |