eygle.com   eygle.com
eygle.com  
 

« 使用Profile对用户Session会话进行资源限制 | Blog首页 | cursor_space_for_time参数在11.1.0.7中 »

Oracle10gR2如何删除误添加的空文件

作者:eygle |【转载时请以超链接形式标明文章和作者信息及本声明
链接:
今天又有朋友问到,当向一个表空间错误的添加了一个数据文件,如何来将这个文件删除?

如果是在Oracle10g之前,删除一个表空间中的数据文件后,其文件在数据库数据字典中会仍然存在,除非你删除表空间,否则文件信息不会清除。
但是从Oracle10gR2开始,Oracle允许我们彻底删除一个空文件,不留痕迹。

但是注意:如果你向SYSTEM表空间错误的添加了一个文件,那么就让它在哪里好了,不要动
对于普通表空间,则可以参考以下步骤处理。

数据库版本Oracle10gR2:
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

向USERS表空间增加一个数据文件:
SQL> alter tablespace users add datafile '/opt/oracle/oradata/eygle/users02.dbf' size 10M;

Tablespace altered.

SQL> select file#,name from v$datafile;

    FILE# NAME
---------- --------------------------------------------------
        1 /opt/oracle/oradata/eygle/system01.dbf
        2 /opt/oracle/oradata/eygle/undotbs01.dbf
        3 /opt/oracle/oradata/eygle/sysaux01.dbf
        4 /opt/oracle/oradata/eygle/users01.dbf
        5 /opt/oracle/oradata/eygle/users02.dbf

5 rows selected.
确认表空间文件信息:
SQL> select file_name,file_id from dba_data_files where tablespace_name='USERS';

FILE_NAME                                            FILE_ID
-------------------------------------------------- ----------
/opt/oracle/oradata/eygle/users02.dbf                      5
/opt/oracle/oradata/eygle/users01.dbf                      4

确认表空间未被存储占用:
SQL> select segment_name,file_id,blocks from dba_extents where file_id=5;

no rows selected

删除表空间中的空数据文件:
SQL> alter tablespace users drop datafile '/opt/oracle/oradata/eygle/users02.dbf';

Tablespace altered.

检查数据字典,这个空文件的信息已经被彻底清除了:
SQL> select file_name,file_id from dba_data_files where tablespace_name='USERS';

FILE_NAME                                            FILE_ID
-------------------------------------------------- ----------
/opt/oracle/oradata/eygle/users01.dbf                      4

不过删除文件时一定注意反复确认,拒绝误操作!


历史上的今天...
      >> 2006-10-20文章:
             DBA警世录:备份重于一切
      >> 2005-10-20文章:
             明天公司大会,外出活动一天
------
这篇 【Oracle10gR2如何删除误添加的空文件】来自 www.eygle.com | CSDN技术网摘| del.icio.us|365Key

By eygle on 2008-10-20 14:00 | Comments (4) | Posted to FAQ | HowTo | Edit |Pageviews:

相关文章 随机文章
  • 数据文件SCN的一致性问题
  • Oracle Wait Event:Data file init write
  • DMT之后SMON还需要coalesce么?
  • Oracle中数据文件大小的限制
  • 10gR2使用RMAN恢复临时表空间的增强
  • The Usage Of BFILENAME Function
    瑞典游记-预告篇
    过年回家 您都买点啥?
    How Big SCN can be?
    2006年 我们有更多的时间能浪费
    搜索本站:

    留言 (4)

    这个操作非常危险,在删掉前一定得反复检查。

    Posted by: wzknet at October 20, 2008 3:02 PM

    数据库操作无小事,马虎不得啊!

    Posted by: eygle at October 20, 2008 3:17 PM

    呵呵,前几日在一个生产系统上也做了,补充一点:要删除的数据文件不能是所在表空间的第一个数据文件,还有就是如果该数据文件不为空的话,做删除操作时会失败,提示不能被删除,也就是说不会误删除存在数据的数据文件。

    Posted by: fwei_fengwei at October 21, 2008 9:31 AM

    谢谢补充!

    Posted by: eygle at October 21, 2008 9:46 AM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.