误删除表空间数据数据文件导致应用连接出问题

本文记录了一次在Oracle数据库中遇到的表空间删除失败的问题及其解决过程。起初尝试直接删除表空间及其数据文件未果,并尝试多种方法,最终通过定位到特定表的索引并进行调整后成功删除。

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

在公司机器上为了挪磁盘空间,就直接把表空间的数据文件删除了(当前数据是OPEN的),结果应用程序跑的时候报错:
ORA-01116:error in opening database file 8
ORA-01110:data file 8:'*/huge01.dbf'
ORA-27041:unable to open file


刚开始是直接去执行的删除表空间及数据文件,结果报错:
SQL> DROP TABLESPACE HUGE_TABLESPACE INCLUDING CONTENTS  AND DATAFILES CASCADE CONSTRAINTS;
DROP TABLESPACE HUGE_TABLESPACE INCLUDING CONTENTS  AND DATAFILES CASCADE CONSTRAINTS
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02429: cannot drop index used for enforcement of unique/primary key




SQL> 
执行DROP TABLESPACE HUGE_TABLESPACE INCLUDING CONTENTS或者DROP TABLESPACE HUGE_TABLESPACE,均报如上错误,
然后想到先把数据文件OFFLINE掉:
SQL> ALTER DATABASE DATAFILE '*/huge01.dbf' OFFLINE DROP;
Database altered.
SQL> 
执行成功,但是这个表空间还是删除不了,依然报上述错误.
没辙了,直接关掉库,重启:
SQL> startup nomount
ORACLE instance started.


Total System Global Area  213909504 bytes
Fixed Size                  1260960 bytes
Variable Size             192938592 bytes
Database Buffers           16777216 bytes
Redo Buffers                2932736 bytes
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
SQL>
再删除表空间,还是不行.....
再回到原点,ORA-02429: cannot drop index used for enforcement of unique/primary key
那么去查数据库DBA_SEGMENTS里面那个段占用的表空间是HUGE_TABLESPACE:
SELECT * FROM DBA_SEGMENTS VV WHERE VV.tablespace_name='HUGE_TABLESPACE;
查出来是**用户下原来有个表的三个索引的存储空间是HUGE_TABLESPACE,直接把这三个索引基于的表移走(删除做备份),
发现这三个索引的SEGMENT_NAME均变成了小数:8.268,7.1,5.89,还是第一次见到这样的SEGMENT_NAME,这三个数的SEGMENT_TYPE是
TEMPORY...
这时候再去删除表空间DROP TABLESPACE HUGE_TABLESPACE INCLUDING CONTENTS;
执行成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值