一个表空间里面有10几个datafile, 其中3个变成recover状态了。
尝试recover datafile 都不行。归档和备份已经删除了。怎么才能把这几个文件删掉。
这3个文件是别人新建的,应该没有存数据。

11g的话,先确认asm磁盘空间够不够,在使用rman copy的方法,把数据文件恢复到asm里面。
简单过程如下:
--rman backup
backup as copy datafile 27 format '+datadg';
backup as copy datafile 28 format '+datadg';
backup as copy datafile 29 format '+datadg';
--offline数据文件
alter database datafile 27 offline;
alter database datafile 28 offline;
alter database datafile 29 offline;
--rman copy
switch datafile 27 to copy;
switch datafile 28 to copy;
switch datafile 29 to copy;
--rman 恢复
recover datafile 27;
recover datafile 28;
recover datafile 29;
--sqlplus online datafile
alter database datafile 27 online;
alter database datafile 28 onlien;
alter database datafile 29 onlien;
12C的话,在线move就行。
alter database move datafile '。。。' to '+datadg';
再次提醒,,,,加asm表空间一定不能忘记+号
评论
有用 0
先检查下,物理层面数据文件是不是被删掉了。
要删除的话,可以这么删除
ALTER DATABASE DATAFILE ‘’ OFFLINE DROP;
评论
有用 0有个疑问,数据库我看了 没有开启归档模式,为啥还需要这个归档文件。。。
评论
有用 0图片不清晰看不清楚。
为什么数据文件的ONLINE_STATUS是RECOVER?通常是由于执行了 alter database datafile 1 offline drop导致,估计是因为添加数据文件时写错了名字或者是底层操作系统执行了删除,但是这个命令并不是真正的删除某个数据文件,而是把一个数据文件置于离线状态,并且需要恢复的目的。
我理解现在是数据文件已经是recover状态了,你online的时候提示让recover,但实际上归档也已经删掉了,所以不能从归档里面恢复过来数据。这个时候如果确定数据不需要恢复的话,可以考虑从它在的表空间删除掉。
ALTER TABLESPACE test DROP DATAFILE ‘’;
当然,最保险的做法,那就是导出表空间的数据,删除表空间(drop tablespace xxx including contents and datafiles),重建表空间在导入数据。或者move到其他表空间重建后在move回去。
评论
有用 0
本来是磁盘空间满了。他们加数据文件加在本地磁盘了,不是在ASM里面,这个yahuan好像还不是共享磁盘,所以加完就报数据文件不能访问了。
ALTER TABLESPACE test DROP DATAFILE ‘’; 这个我也尝试了 都不行
评论
有用 0别赶紧试,,,,先研究下理解下原理,在找点经验看看,考虑下风险,如果空间不够先解决空间的问题,跟客户说下情况,最好申请个时间做。
评论
有用 0
墨值悬赏



