免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4181 | 回复: 5
打印 上一主题 下一主题

oracle删除数据文件后提示错误,请问该如何处理!? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-12 11:22 |只看该作者 |倒序浏览
我用的数据库集群,4个节点,挂接裸设备(redhat linux as 3.0 + oracle 9204)
我创建了一个新的数据文件(qqfw.DBF),却不小心将其挂到一个不正确的表空间下面(czrk),正确的表空间应该是(qqfw)
我使用alter database datafile 'dev\oracle\qqfw.dbf' offline drop;提示成功删除数据文件
但是打开OEM,还能看到该数据文件,不过该数据文件为0,且我不能创建新的数据文件并使其归于正确的表空间qqfw
我重新启动了数据库后,提示错误如下图1 图2 ,请高手帮忙(目前我的数据库还能用,只是提示如下错误)



在前面我已经发过帖子问怎么删除数据文件了,现在是问怎么能够让我的数据库恢复正常

[ 本帖最后由 gfgf37 于 2008-3-12 15:11 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-03-12 13:01 |只看该作者
alter database datafile 'dev\oracle\qqfw.dbf' offline drop;提示成功删除数据文件
用这个SQL从表空间删除数据文件,从而达到释放出该文件给其他表空间用的概念是错误的。

NOTE:  The ALTER DATABASE DATAFILE <datafile name> OFFLINE DROP command, is not meant to allow you to remove a datafile. What the command really means is that you are offlining the datafile with the intention of dropping the tablespace.
If you are running in archivelog mode, you can also use: ALTER DATABASE DATAFILE <datafile name> OFFLINE; instead of OFFLINE DROP. Once the datafile is offline, Oracle no longer attempts to access it, but it is still considered part of that tablespace. This datafile is marked only as offline in the controlfile and there is no SCN comparison done between the controlfile and the datafile during startup (This also allows you to startup a database with a non-critical datafile missing). The entry for that datafile is not deleted from the controlfile to give us the opportunity to recover that datafile.

如果想另外的表空间利用这个raw device,只有将拥有这个raw device文件的表空间drop,重新创建该表空间,然后再另外的表空间上add datafile

论坛徽章:
0
3 [报告]
发表于 2008-03-12 14:56 |只看该作者

回复 #2 numenhuang 的帖子

非常感谢2楼的高手,你一下就解释明白了,你看看下面的步骤可行不可行,是我从文档中找出来的,如果可行,需要注意哪些地方?

1) MOUNT数据库:
STARTUP MOUNT PFILE='<location_of_pfile>';
2) OFFLINE DROP数据文件:
ALTER DATABASE DATAFILE '<full_path_file_name>' OFFLINE DROP;
3) 打开数据库:
ALTER DATABASE OPEN;
4) 删除表空间:
DROP TABLESPACE <tablespace_name> INCLUDING CONTENTS;
5) 重建表空间:
CREATE TABLESPACE <tablespace_name> DATAFILE
'<datafile_full_path_name'> SIZE <required_size>;
6) 重建表空间中所有以前存在的对象:可以使用以前创建对象的脚本或者利用最近可用的EXPORT DUMP来重建以前存在的对象。

[ 本帖最后由 gfgf37 于 2008-3-12 18:19 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-03-13 11:08 |只看该作者
好象10g可以删除单独的数据文件,但要在文件为空的前提下。

论坛徽章:
0
5 [报告]
发表于 2008-03-13 12:32 |只看该作者
原帖由 gfgf37 于 2008-3-12 14:56 发表
非常感谢2楼的高手,你一下就解释明白了,你看看下面的步骤可行不可行,是我从文档中找出来的,如果可行,需要注意哪些地方?

1) MOUNT数据库:
STARTUP MOUNT PFILE='';
2) OFFLINE DROP数据文件:
AL ...


如果不考虑recover这个文件的话,
首先要确定要drop的tablespace上有没有objects,如果有,则先要move到其他表空间
如果该tablespace上没有objects,则直接drop,然后recreate即可

论坛徽章:
0
6 [报告]
发表于 2008-03-13 15:10 |只看该作者

回复 #5 numenhuang 的帖子

谢谢了,我的问题已经搞定,EM不再报错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP