`
igogo007
  • 浏览: 155046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ora-01116,ora-01110,ora-27041

阅读更多
由于是自己用的测试数据库,发现电脑空间快不够用了,查询有一个dbf文件占用了很多空间,将近40G。反正是自己用的测试数据库,就无所谓了,没有任何备份,自作主张,直接
$rm -f my_db.dbf

数据库依然正常,查询表空间
SELECT c.tablespace_name tablespace_name, ROUND(a.bytes/1048576,2) total_size,ROUND((a.bytes-b.bytes)/1048576,2) used_size,
ROUND(b.bytes/1048576,2) free_size, 
ROUND(b.bytes/a.bytes * 100,2)||'%' free_pct FROM 
(SELECT tablespace_name,SUM(a.bytes) bytes 
FROM sys.DBA_DATA_FILES a 
GROUP BY tablespace_name) a, 
(SELECT a.tablespace_name, 
NVL(SUM(b.bytes),0) bytes 
FROM sys.DBA_DATA_FILES a, 
sys.DBA_FREE_SPACE b 
WHERE a.tablespace_name = b.tablespace_name (+) 
AND a.file_id = b.file_id (+) 
GROUP BY a.tablespace_name) b, 
sys.DBA_TABLESPACES c 
WHERE a.tablespace_name = b.tablespace_name(+) 
AND a.tablespace_name = c.tablespace_name 
ORDER BY ROUND(b.bytes/1048576,2)


报错如下:
ORA-01116:error in opening database file 7
ORA-01110:data file 54:'/oracle/oradata/mydb/my_db.dbf'
ORA-27041:unable to open file
Linux-x86_32 Error:2: No Such file or directory
Additional information: 3


杯具了!

不敢关闭数据库了,可能关闭之后,无法启动,虽然说是测试数据库,但是有很多表结构还是需要的。
试了如下几种方法:

(1)执行select * from dba_data_files,看看表空间文件,没办法看了,还是报同样的错误。
(2)查看系统中所有的表空间,无法查询
(3)删除表空间
SQL> drop tablespace MY_DB including CONTENTS and datafiles;
不行,无法删除
(4)新建一个同样名字的dbf文件,想蒙混过关,不行。

一晚上没有关电脑,问朋友,好像都不知道,说没试过干这样的傻事。

最后网上搜索到解决方法:

SQL> alter database datafile  '/oracle/oradata/mydb/my_db.dbf' offline drop;

说明:
是测试数据库,没有做备份的前提下这样操作的。
请生产数据库最好不要这样操作,出了问题不负责。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics