RMAN基于备份控制文件恢复失败

[复制链接]
查看11 | 回复9 | 2013-1-29 11:27:26 | 显示全部楼层 |阅读模式
我做了个RMAN基于备份控制文件恢复的测试,但最后datafile显示MISSING00006不知是何原因,下面是测试步骤,请帮忙看看/
--先建立一个表空间,后面删除并恢复它
SQL> create tablespace eric
2datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\eric01.DBF'
3size 10m;
Tablespace created.
C:\Documents and Settings\L5M>rman target /
Recovery Manager: Release 10.2.0.3.0 - Production on Tue Feb 26 08:45:09 2008
Copyright (c) 1982, 2005, Oracle.All rights reserved.
connected to target database: LISA (DBID=1171353837)
RMAN> configure controlfile autobackup on;
RMAN> backup database;
SQL> select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2008-02-26:08:50:11
SQL> drop tablespace eric including contents and datafiles;
Tablespace dropped.
C:\Documents and Settings\L5M>set nls_date_format=yyyy-mm-dd hh24:mi:ss
C:\Documents and Settings\L5M>rman target /
RMAN> startup force nomount
RMAN> set dbid=1171353837
RMAN> restore controlfile from autobackup;
Starting restore at 2008-02-26 08:57:13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK
recovery area destination: D:\oracle\product\10.2.0\admin\lisa\flash_recovery_ar
ea
database name (or database unique name) used for search: LISA
channel ORA_DISK_1: autobackup found in the recovery area
channel ORA_DISK_1: autobackup found: D:\ORACLE\PRODUCT\10.2.0\ADMIN\LISA\FLASH_
RECOVERY_AREA\LISA\AUTOBACKUP\2008_02_26\O1_MF_S_647686276_3W6RN4SW_.BKP
channel ORA_DISK_1: control file restore from autobackup complete
output filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\CONTROLFILE\CONTROL.CTL
Finished restore at 2008-02-26 08:57:19
RMAN> alter database mount;
RMAN> run {
2> set until time='2008-02-26 08:50:11';
3> restore database;
4> recover database;
5> sql 'alter database open resetlogs';
6> }

SQL> select ts#,name from v$datafile;
TS# NAME
---------- -----------------------------------------------------------------
0 D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\SYSTEM01.DBF
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\UNDOTBS01.DBF
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\SYSAUX01.DBF
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\USERS01.DBF
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\USERS02.DBF
9 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00006
6 rows selected.

SQL> select ts#,name from v$tablespace;
TS# NAME
---------- -----------------------------------
0 SYSTEM
1 UNDOTBS1
2 SYSAUX
4 USERS
3 TEMP
9 ERIC
6 rows selected.

看得出来,表空间是恢复出来了,数据文件应该恢复到'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\eric01.DBF'。不知哪里有问题,请大虾们帮忙看看。
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
因为控制文件是最新的已经记录这个表空间和数据文件已经删除,
但你做的是不完全恢复,但控制文件认不到它,所以数据库就自动命名,
你把这个数据文件重命名回来就可以了
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
楼上说的对,我也出过这个问题
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
应该是你说的原因。既然恢复的控制文件是已删除了表空间的那个,也就是恢复的是最新的控制文件。如果不使用restore controlfile from autobackup,是不是也没有关系?
SQL> alter tablespace eric rename datafile 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABA
SE\MISSING00006' to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\eric01.DBF';
Tablespace altered.
SQL> select file#,ts#,status,name from v$datafile where file#=6;
FILE#TS# STATUSNAME
---------- ---------- ------------ ------------------------------------------------------------
6
9 RECOVER D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\ERIC01.DBF
SQL> recover datafile 6;
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 6 belongs to an orphan incarnation
ORA-01110: data file 6:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\ERIC01.DBF'
也恢复不了,怎么办?
[ 本帖最后由 jolly10 于 2008-2-26 09:42 编辑 ]
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
还有个问题,在drop tablespace eric including contents and datafiles时,发现log里记录了
WARNING: Cannot delete file D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\ERIC01.DBF
Tue Feb 26 08:51:16 2008
Errors in file d:\oracle\product\10.2.0\admin\lisa\udump\lisa_ora_3276.trc:
ORA-01265: Unable to delete DATA D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\ERIC01.DBF
ORA-27056: could not delete file
OSD-04024: Unable to delete file.
O/S-Error: (OS 32) The process cannot access the file because it is being used by another process.
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
rename
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
原帖由 battleman 于 2008-2-26 09:53 发表
rename

已rename了,但好像还要做recover呀,现恢复不了,错误已贴在上面了
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
你用set newname for datafile to '';
restore datafile ;
switch datafile all;
recover datafile ;
试试呢?
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
原帖由 jolly10 于 2008-2-26 09:41 发表
应该是你说的原因。既然恢复的控制文件是已删除了表空间的那个,也就是恢复的是最新的控制文件。如果不使用restore controlfile from autobackup,是不是也没有关系?
SQL> alter tablespace eric rename datafile 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABA
SE\MISSING00006' to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\eric01.DBF';
Tablespace altered.
SQL> select file#,ts#,status,name from v$datafile where file#=6;
FILE#TS# STATUSNAME
---------- ---------- ------------ ------------------------------------------------------------
6
9 RECOVER D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\ERIC01.DBF
SQL> recover datafile 6;
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 6 belongs to an orphan incarnation
ORA-01110: data file 6:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LISA\DATAFILE\ERIC01.DBF'
也恢复不了,怎么办?

和控制文件有关系 ,恢复控制文件到创建表空间时backup database 时的那个自动生成的控制文件即可
而不是恢复最新的控制文件,因为最新的控制文件已经删除了那个数据文件,所以恢复时有问题
[ 本帖最后由 paulyibinyi 于 2008-2-26 12:26 编辑 ]
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
原帖由 paulyibinyi 于 2008-2-26 12:24 发表

和控制文件有关系 ,恢复控制文件到创建表空间时backup database 时的那个自动生成的控制文件即可
而不是恢复最新的控制文件,因为最新的控制文件已经删除了那个数据文件,所以恢复时有问题


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行