关于无法删除表空间的问题

archwuke1 2010-07-09 11:11:07
有一测试库,由于是测试库,所以某人比较随便的直接在数据库关闭的状态下删除了一数据文件

现在数据中此表空间的状态是:
SQL> select file#,status,name from v$datafile where file#=3;

FILE# STATUS NAME
---------- ------- ----------------------------------------------
3 RECOVER /oracle/product/10.2.0/dbs/MISSING00003

想要把此表空间删除,然后再重新建立空的同名表空间
SQL> drop tablespace platform including contents;
drop tablespace platform including contents and datafiles
*
第 1 行出现错误:
ORA-00604: error occurred at recursive SQL level 2
ORA-00376: file 3 cannot be read at this time
ORA-01111: name for data file 3 is unknown - rename to correct file
ORA-01110: data file 3: '/oracle/product/10.2.0/dbs/MISSING00003'
ORA-06512: at line 19


请问要如何处理呢
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
archwuke1 2010-07-13
  • 打赏
  • 举报
回复
不加其他更不行了,会提示你表空间非空
虽然表空间的数据文件没了,但这些表的定义全在的

做为一个新手,试了几天也还是不行,还好是测试库,现在只能删掉全库,重新安装了
mahanso 2010-07-09
  • 打赏
  • 举报
回复
模拟环境:

数据库文件丢失或者损坏。

--关闭数据库
1、shutdown immediate

--启动数据库、此时提示数据文件丢失,并且有丢失的序列号例如:ORA-01110: 数据文件 5: 'D:\APP\MKF18858\ORADATA\MAHANSO\TEST.DBF'
2、startup

--把丢失的数据文件卸下
3、alter database datafile '丢失文件路径和文件名称' offline drop

--打开数据库
4、alter database open

--创建数据文件
5、alter database create datafile '丢失文件路径和文件名称';

--恢复数据库文件
6、recover datafile 丢失的序列号

--装载数据文件
7、alter database datafile '丢失文件路径和文件名称' online;
huangdh12 2010-07-09
  • 打赏
  • 举报
回复
这样你的数据库还能启动? 不会报错?

没有处理过恢复,但是方法是 需要重建表空间,然后再删吧。
zhizhuo89 2010-07-09
  • 打赏
  • 举报
回复
drop tablespace 表空间名 ;后面不用加其它。
archwuke1 2010-07-09
  • 打赏
  • 举报
回复
不知道是不是因为开始重构了控制文件的关系
现在的数据文件名是变成了'/oracle/product/10.2.0/dbs/MISSING00003' 这样的

SQL> alter database create datafile '/oracle/product/10.2.0/dbs/MISSING00003' as '/oradata/mydata/platform.dbf';
alter database create datafile '/oracle/product/10.2.0/dbs/MISSING00003' as '/oradata/mydata/platform.dbf'
*
ERROR at line 1:
ORA-01178: file 3 created before last CREATE CONTROLFILE, cannot recreate
ORA-01111: name for data file 3 is unknown - rename to correct file
ORA-01110: data file 3: '/oracle/product/10.2.0/dbs/MISSING00003'
mahanso 2010-07-09
  • 打赏
  • 举报
回复
哥们,不好意思,我当初的笔记自己总结没写全,我重新操作了一次。

你重新执行第五步。

5、alter database create datafile oldfile as newfile

archwuke1 2010-07-09
  • 打赏
  • 举报
回复
针对二楼兄弟所说的,在第五步无法创建数据文件,如果随便起一个新名字
SQL> alter database create datafile '/oradata/mydata/platform.dbf';
alter database create datafile '/oradata/mydata/platform.dbf'
*
ERROR at line 1:
ORA-01516: nonexistent log file, datafile, or tempfile
"/oradata/mydata/platform.dbf"
如果用v$datafile里的名字
SQL> alter database create datafile '/oracle/product/10.2.0/dbs/MISSING00003';
alter database create datafile '/oracle/product/10.2.0/dbs/MISSING00003'
*
ERROR at line 1:
ORA-01178: file 3 created before last CREATE CONTROLFILE, cannot recreate
ORA-01111: name for data file 3 is unknown - rename to correct file
ORA-01110: data file 3: '/oracle/product/10.2.0/dbs/MISSING00003'

直接想删除表空间也不行
SQL> drop tablespace platform including contents;
drop tablespace platform including contents
*
第 1 行出现错误:
ORA-00604: error occurred at recursive SQL level 2
ORA-00376: file 3 cannot be read at this time
ORA-01111: name for data file 3 is unknown - rename to correct file
ORA-01110: data file 3: '/oracle/product/10.2.0/dbs/MISSING00003'
ORA-06512: at line 19
xiaosheng2008 2010-07-09
  • 打赏
  • 举报
回复
shutdown immediate;
startup mount;
alter database datafile 'full_name' offline drop;
alter database open;
drop tablespace tablespace_name;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧