Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3673211
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-11-04 21:50:38

dba_data_files 检查数据文件,发现ONLINE_STATUS的值是recover,该怎么办?
select tablespace_name,file_name,autoextensible,
online_status,bytes from dba_data_files;
通常是由于执行了 alter database datafile 3 offline drop导致,估计是因为添加数据文件时写错了名字或者是底层操作系统执行了删除,数据库重启打不开了,但是这个命令并不是真正的删除某个数据文件,而是把一个数据文件置于离线状态,并且需要恢复的目的(recover的含义就已经说明了意图)才用到。 数据文件的相关信息还会存在数据字典和控制文件中。


处于recover状态的,如果确认的确不要了,上面没有业务数据(判断方法往后看),那就导出整个表空间的数据,删除表空间重建,然后再导入。或者将表空间上的其他对象move到另外一个表空间上,再删除这个表空间。


总之,对数据文件的删除,应该通过表空间层面的命令来进行,例如:


ALTER TABLESPACE example DROP DATAFILE '+DG1/exam3.dbf';
如果是归档模式下,而且发生此情况不久(1天以内),可以尝试用以下命令恢复正常:


alter database recover datafile 3; 
alter database datafile 3 online;

删除表空间 命令语法:
DROP TABLESPACE users INCLUDING CONTENTS;

DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;

参考:drop tablespace 后磁盘空间不释放怎么办?

确定数据文件是否为空

SELECT distinct b.owner, b.segment_name
FROM dba_data_files a,
     dba_extents b
WHERE a.file_id = b.file_id
AND a.tablespace_name ='&tablespace_name'
AND a.file_name ='&datafile_name';

确认表空间中是否有回收站内容


SELECT original_name, type, ts_name, can_purge
FROM dba_recyclebin
WHERE ts_name='&tablespace_name'

以后如果alter database datafile 5 offline drop最好立即再执行recover datafile 5,以便后期online。

处于recover状态会有什么影响?
1)此文件中的信息不可访问,如果有的话
2)重启实例不会起不来,告警日志会有异常提示
3)rman备份需要加skip,例如 backup database skip inaccessible;
4)看着难受

结束。




阅读(2433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~