1.首先要有一个包含spfile备份的rman备份:
run
{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database format 'f:\backup\%U.dbf';
backup current controlfile format 'f:\backup\%U.ctl' ;
backup archivelog all format 'f:\backup\%U.log' delete input ;
release channel c1;
release channel c2;
}
得到:
RMAN> list backup;
备份集列表
===================
BS关键字 类型LV大小 设备类型经过时间完成时间
------- ---- -- ---------- ----------- ------------ ----------
48 Full 1M DISK 00:00:02 10-2月-09
BP关键字: 55 状态: AVAILABLE 标记:TAG20090210T113440
段名:F:\BACKUP\2BK70P6G_1_1.CTL
控制文件包括: Ckp SCN: 9008404539762 Ckp时间:10-2月-09
BS关键字 类型LV大小 设备类型经过时间完成时间
------- ---- -- ---------- ----------- ------------ ----------
49 Full 120M DISK 00:01:00 10-2月-09
BP关键字: 56 状态: AVAILABLE 标记:TAG20090210T113544
段名:F:\BACKUP\2DK70P8G_1_1.DBF
备份集49中的数据文件列表
文件LV类型Ckp SCN Ckp时间 名称
---- -- ---- ---------- ---------- ----
2 Full 9008404539854 10-2月-09 D:\ORACLE\ORADATA\WASD\UNDOTBS01.DBF
3 Full 9008404539854 10-2月-09 D:\ORACLE\ORADATA\WASD\RMAN01.DBF
4 Full 9008404539854 10-2月-09 D:\ORACLE\ORADATA\WASD\STATSPACK_01.DBF
6 Full 9008404539854 10-2月-09 D:\ORACLE\ORADATA\WASD\INDX01.DBF
BS关键字 类型LV大小 设备类型经过时间完成时间
------- ---- -- ---------- ----------- ------------ ----------
50 Full 352M DISK 00:02:02 10-2月-09
BP关键字: 57 状态: AVAILABLE 标记:TAG20090210T113544
段名:F:\BACKUP\2CK70P8G_1_1.DBF
包含的SPFILE:修改时间: 10-2月-09
备份集50中的数据文件列表
文件LV类型Ckp SCN Ckp时间 名称
---- -- ---- ---------- ---------- ----
1 Full 9008404539859 10-2月-09 D:\ORACLE\ORADATA\WASD\SYSTEM01.DBF
5 Full 9008404539859 10-2月-09 D:\ORACLE\ORADATA\WASD\STATSPACK_02.DBF
8 Full 9008404539859 10-2月-09 D:\ORACLE\ORADATA\WASD\TOOLS01.DBF
9 Full 9008404539859 10-2月-09 D:\ORACLE\ORADATA\WASD\USERS01.DBF
BS关键字 类型LV大小 设备类型经过时间完成时间
------- ---- -- ---------- ----------- ------------ ----------
51 Full 1M DISK 00:00:02 10-2月-09
BP关键字: 58 状态: AVAILABLE 标记:TAG20090210T113751
段名:F:\BACKUP\2EK70PCF_1_1.CTL
控制文件包括: Ckp SCN: 9008404539963 Ckp时间:10-2月-09
BS关键字 大小 设备类型占用时间完成时间
------- ---------- ----------- ------------ ----------
52 12M DISK 00:00:04 10-2月-09
BP关键字: 59 状态: AVAILABLE 标记:TAG20090210T113756
段名:F:\BACKUP\2FK70PCK_1_1.LOG
备份集52中的已存档日志列表
Thrd Seq 低SCN 短时间 下一个SCN 下一次
---- ------- ---------- ---------- ---------- ---------
1 76 9008404445122 08-2月-09 9008404466404 08-2月-09
1 77 9008404466404 08-2月-09 9008404525427 09-2月-09
BS关键字 大小 设备类型占用时间完成时间
------- ---------- ----------- ------------ ----------
53 4M DISK 00:00:05 10-2月-09
BP关键字: 60 状态: AVAILABLE 标记:TAG20090210T113756
段名:F:\BACKUP\2GK70PCK_1_1.LOG
备份集53中的已存档日志列表
Thrd Seq 低SCN 短时间 下一个SCN 下一次
---- ------- ---------- ---------- ---------- ---------
1 78 9008404525427 09-2月-09 9008404538974 10-2月-09
1 79 9008404538974 10-2月-09 9008404539065 10-2月-09
1 80 9008404539065 10-2月-09 9008404539194 10-2月-09
BS关键字 大小 设备类型占用时间完成时间
------- ---------- ----------- ------------ ----------
54 307K DISK 00:00:02 10-2月-09
BP关键字: 61 状态: AVAILABLE 标记:TAG20090210T113756
段名:F:\BACKUP\2HK70PCQ_1_1.LOG
备份集54中的已存档日志列表
Thrd Seq 低SCN 短时间 下一个SCN 下一次
---- ------- ---------- ---------- ---------- ---------
1 81 9008404539194 10-2月-09 9008404539971 10-2月-09
2.删除spfile文件
WASD (DBID=3036526324)
SQL>shutdown immediate;
SQL> host;
Microsoft Windows XP [版本5.1.2600]
(C)版权所有1985-2001 Microsoft Corp.
C:\Documents and Settings\wasd>
C:\Documents and Settings\wasd>delD:\oracle\ora92\database\SPFILEWASD.ORA;
这个时间已经是rman备份做过半天以后了。
此时的数据库已经打不开了:
SQL> startup;
ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND
SQL>
3. RMAN进行恢复;
C:\Documents and Settings\wasd>rman target/
RMAN> set dbid=3036526324
正在执行命令: SET DBID
RMAN> startup nomount;
启动失败: ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND
正在尝试在没有参数文件的情况下启动Oracle例程...
RMAN>RESTORE SPFILE FROM AUTOBACKUP;
发现无法从自动备份里面找到合适的spfile;
此时怎么办呢??可以尝试从以前rman备份中恢复spfile,接着上面继续;
RMAN> restore spfile from 'F:\backup\2CK70P8G_1_1.DBF';
启动restore于10-2月-09
使用通道ORA_DISK_1
通道ORA_DISK_1:已找到的自动备份: F:\backup\2CK70P8G_1_1.DBF
通道ORA_DISK_1:从自动备份复原SPFILE已完成
完成restore于10-2月-09
RMAN> shutdown immediate;
Oracle例程已关闭
RMAN>
RMAN>
RMAN> startup;
已连接到目标数据库(未启动)
Oracle例程已启动
数据库已加载
数据库已打开
总结:
这个是我在做RMAN练习的时候,有个例子说是可以在非catalog模式恢复被误删的spfile,但是没注意其前提:有自动的控制文件备份!
于是发生了上面一幕,在当时的情况下,rman无法连接到目标数据库,目标数据库只能启动到nomount,rman里面连list backup都不能使用,更无法restore database了,呵呵。
做rman一定要有完整的备份,另外呢,dbid也要经常记录。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9719235/viewspace-571435/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9719235/viewspace-571435/