datafile online_status 状态是 recover ,怎么办?

本文探讨了数据库数据文件ONLINE_STATUS为RECOVER的原因,可能源于误操作或系统故障。提供了alter database命令的正确使用,以及如何确认问题、删除数据文件和重建表空间的方法。关键步骤包括检查表空间内容、使用ALTER TABLESPACE命令和数据安全性评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dba_data_files 检查数据文件,发现ONLINE_STATUS的值是recover,该怎么办?

select tablespace_name,file_name,autoextensible,
online_status,bytes from dba_data_files;

在这里插入图片描述
为什么数据文件的ONLINE_STATUS是RECOVER?通常是由于执行了 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;

从头梳理一下相关知识点:
1、看看alter database命令的语法:

在这里插入图片描述
在这里插入图片描述
标准命令应该是:
在这里插入图片描述
offline或drop的作用是:
在这里插入图片描述

2、再看一下删除datafile的限制:
在这里插入图片描述
3、再看一下dba_data_files 的ONLINE_STATUS字段的几种状态:
在这里插入图片描述
4、删除表空间的注意事项:
在这里插入图片描述
在这里插入图片描述
命令语法:

DROP TABLESPACE users INCLUDING CONTENTS;

在这里插入图片描述

DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;

5、确定数据文件是否为空

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';

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

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

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

结束。

角色:系统测试工程师 背景:擅长系统测试设计,擅长系统测试、自动化测试,安全测试等,是个综合的高级测试工程师 任务:根据用户输入的需求描述,完成测试设计 需求描述:greenplum分布式数据库,一个集群,安装在两个服务器上,针对gprecoverseg工具,编写测试用例,要求覆盖所有场景。 任务要求:编写详细可执行的测试用例 参考材料:gprecoverseg的参数: COMMAND NAME: gprecoverseg Recovers a primary or mirror segment instance that has been marked as down (if mirroring is enabled). ****************************************************** Synopsis ****************************************************** gprecoverseg [-p <new_recover_host>[,...]] |-i <recover_config_file> [-d <master_data_directory>] [-B <batch_size>] [-b <segment_batch_size>] [--differential] [-F] [-a] [-q] [-s] [--no-progress] [-l <logfile_directory>] gprecoverseg -r gprecoverseg -o <output_recover_config_file> [-p <new_recover_host>[,...]] gprecoverseg -? gprecoverseg --version ****************************************************** DESCRIPTION ****************************************************** In a system with mirrors enabled, the gprecoverseg utility reactivates a failed segment instance and identifies the changed database files that require resynchronization. Once gprecoverseg completes this process, the system goes into resyncronizing mode until the recovered segment is brought up to date. The system is online and fully operational during resyncronization. A segment instance can fail for several reasons, such as a host failure, network failure, or disk failure. When a segment instance fails, its status is marked as down in the Greenplum Database system catalog, and its mirror is activated in change tracking mode. In order to bring the failed segment instance back into operation again, you must first correct the problem that made it fail in the first place, and then recover the segment instance in Greenplum Database using gprecoverseg. Segment recovery using gprecoverseg requires that you have an active mirror to recover from. For systems that do not have mirroring enabled, or in the ev
最新发布
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值