恢复数据文件时,落下了2个文件,没法恢复完全,请教大家该怎么办?

[复制链接]
查看11 | 回复9 | 2006-12-17 18:11:04 | 显示全部楼层 |阅读模式
大家好
今天晚上做实验,做一个恢复(基于时间点)。过程这样:
1、脱机冷备份(隐患阿,少备份了2个数据文件)
2、startup 启用归档
3、建表 并commit
4、drop table
5、shutdown immediate
6、将备份的数据文件覆盖数据文件
7、startup mount
8、recover database until time (.....)(这次根据错误提示,才想起来,第一步的操作,有2个数据文件丢下了)
如下提示:
SQL> recover database until time '2006-12-17 18:11:04';
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 3 没有从完备的旧备份中恢复
ORA-01110: 数据文件 3: 'D:\TABLESPACE\USER01.DBF'
其中:
SQL> select name from v$datafile;
NAME
---------------------------------------
D:\ORADATA\BAIWZH\DATA01.DBF
D:\ORADATA\BAIWZH\UNDO01.DBF
D:\TABLESPACE\USER01.DBF
D:\TABLESPACE\INDX01.DBF
我只备份了前2个的文件。


麻烦各位兄台,指点一二~~如果这样情况,该怎么恢复呀.....
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
对于这个错误,我觉得:
recover全部数据文件,4个成功了其中2个。这样可以理解为,有2个不成功,将不成功的2个offline后,启动数据库,重新recover datafile,这样或许可以....
于是我实验:
SQL> recover database until time '2006-12-17 18:11:04';
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 3 没有从完备的旧备份中恢复
ORA-01110: 数据文件 3: 'D:\TABLESPACE\USER01.DBF'

SQL> recover datafile 'd:\tablespace\user01.dbf';
ORA-00283: 恢复会话因错误而取消
ORA-00264: 不要求恢复

SQL> alter database datafile 'd:\tablespace\user01.dbf' offline;
数据库已更改。
SQL> alter database datafile 'd:\tablespace\indx01.dbf' offline;
数据库已更改。
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01245: RESETLOGS 完成时脱机文件3将丢失
ORA-01110: 数据文件 3: 'D:\TABLESPACE\USER01.DBF'

SQL> recover datafile 'd:\tablespace\user01.dbf';
ORA-00283: 恢复会话因错误而取消
ORA-00264: 不要求恢复

从结果看,是失败了。:(
麻烦请兄台们指点下,我这样思路适用在什么地方,面对这个问题该怎么解决呢?
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
我觉得如果在第一帖的结尾仔细recover database的化,应该可以让数据库可以
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
取决于你drop 掉的table是否在已经backup的datafile中,如果是的话,没什么问题。如果不是的话,那就没办法了。
1。找另一台机器,装有Oracle software的,将冷备份的datafile/controlfile以及随后产生的所有archive log 恢复会来。
2。启动一个实例到mount状态,当然,controlfile指向恢复出来的controlfile
3。offline drop 没有backup的datafile
4。recover until time (before drop table)
5。alter database open resetlogs;
6。exp the table you had droped.
7. imp to old database
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
alter database add datafile '...user01.dbf' reuse ;
recover datafile'...user01.dbf';
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
谢谢kamus版主。
通过的您指点:
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area118255568 bytes
Fixed Size
282576 bytes
Variable Size
83886080 bytes
Database Buffers 33554432 bytes
Redo Buffers
532480 bytes
数据库装载完毕。
SQL> alter database datafile 'd:\tablespace\user01.dbf' offline drop;
数据库已更改。
SQL> alter database datafile 'd:\tablespace\indx01.dbf' offline drop;
数据库已更改。
SQL> alter database open resetlogs;
数据库已更改。
--------------
已经能够成功启动数据库。。。
最初由 Kamus 发布
[B]If your table been dropped is in DATA01.DBF, then just restore this datafile and recover it only, you will not loose those 2 datafiles which you didn't backup. [/B]

但非常可惜,在这之前没有做rman的备份,那2个文件恢复不了了。
谢谢kamus版主和各位的帮助。。
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
没有备分也只能这样了。
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
最初由 披发头陀 发布
[B]我觉得如果在第一帖的结尾仔细recover database的化,应该可以让数据库可以 [/B]

请问头陀大师,您说的仔细recover 是restore 然后recover这样的一个过程吗?
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
另外我想问下,如果在开始做恢复时,不碰到数据文件备份不全的情况,我这样的一个基于时间点的恢复成功么?
晚上我试验rollingpig的方法的同时,又做了一次恢复。不成功。
建立一个test的表空间,对应的datafile是test01.dbf,在测试时,我不对它进行备份。(冷备份、startup 归档日志启动 的步骤省略)
SQL> create table t3 (id int)
2tablespace test;
表已创建。
SQL> commit;
提交完成。
SQL> create table t4 (id int)
2tablespace users;
表已创建。
SQL> set time on
00:19:00 SQL> commit;
提交完成。
00:19:25 SQL> drop table t3;
表已丢弃。
00:19:43 SQL>
00:19:43 SQL> drop table t4;
表已丢弃。
00:19:52 SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
(将备份的文件恢复,start mount)
00:23:39 SQL> alter database datafile d:\oradata\baiwzh\test01.dbf'
offline drop;(利用rollingpig版主的方法)
数据库已更改。
00:30:44 SQL> alter session set nls_date_format='yyyy-mm-dd
hh24:mi:ss';
会话已更改。
00:33:51 SQL> recover database until time '2006-12-19 00:19:40';
完成介质恢复。
00:34:13 SQL> desc t3;
ERROR:
ORA-04043: 对象 t3 不存在

00:34:45 SQL> desc t4;
ERROR:
ORA-04043: 对象 t4 不存在

00:34:48 SQL> alter database open resetlogs;
数据库已更改。
00:36:41 SQL> desc t3;
ERROR:
ORA-04043: 对象 t3 不存在

00:36:43 SQL> desc t4;
ERROR:
ORA-04043: 对象 t4 不存在
如果t4存在就正常了,看结果是不行的。我的这个试验哪里有问题了? 麻烦各位指点下..
回复

使用道具 举报

千问 | 2006-12-17 18:11:04 | 显示全部楼层
上面的步骤楼主用的是backup controlfile吗
如果是的话,应该会指明 using backup controlfile吧
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行