`
blueram
  • 浏览: 756977 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

如何从表空间中“删除”数据文件

阅读更多

本文主要介绍如何从数据库中删除数据文件。因为ALTER DATABASE DATAFILE OFFLINE DROP命令很容易引起删除数据文件的疑惑,所以本文也介绍OFFLINE DROP命令的真正含义。

存在两种情况可能需要从表空间中“移走”数据文件。

1.         你不小心给一个表空间增加了一个数据文件,或者你把文件大小设得过大,所以想把它删掉。

2.         你正在进行恢复,因为丢失了一个数据文件所以不能启动数据库。

本文主要处理第一种情况,有别的文章来讲述由于丢失数据文件而不能使用数据库的恢复问题。

在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表。视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。

 

在对表空间/数据文件进行任何脱机、删除之前,首先对数据库进行一个全备份。

 

如果数据文件是所在表空间的唯一的数据文件,你只要简单地删除表空间即可:

 

DROP TABLESPACE <tablespace name> INCLUDING CONTENTS;

 命令来从Oracle数据字典删除表空间、数据文件和表空间的内容。Oracle不会再访问该表空间中的任何内容。然后重新创建表空间并重新导入数据。

 

 

 

你可以运行下面的命令来查询表空间包含多少数据文件。

select file_name, tablespace_name 

from dba_data_files 

where tablespace_name ='<name of tablespace>';

 

 

DROP TABLESPACE命令从Oracle数据字典删除表空间、数据文件和表空间的内容。Oracle不会再访问该表空间中的任何内容。物理地删除文件需要使用操作系统命令(Oracle从不物理地删除文件<注:本文是针对8i或者之前,9i可以使用including datafile选项来删除物理文件>),依赖你的操作系统平台,有的操作系统需要Oracle完全关闭才才可以删除(例如在WINDOWS NT 中需要关闭数据库,停掉相应的服务,在有的情况下Oracle还可能持有文件锁)。

 

 

如果你的表空间有多个数据文件,而你还需保留该表空间中的其它数据文件中的内容,则你必须首先export出该表空间中的所有内容。为了确定表空间中包含那些内容,运行:

 

 

 

select owner,segment_name,segment_type 

from dba_segments 

where tablespace_name='<name of tablespace>'

 

export出你想保留的内容。如果export结束,你可以使用DROP TABLESPACE tablespace INCLUDING CONTENTS. 这样永久删除表空间的内容,使用操作系统命令物理删除数据文件,按所需数据文件重新创建表空间,把数据import至表空间。

 

 

注意:

ALTER DATABASE DATAFILE <datafile name> OFFLINE DROP命令不能允许你删除数据文件,它的目的是脱机该数据文件以删除表空间。如果在归档模式下,使用ALTER DATABASE DATAFILE <datafile name> OFFLINE DROP来代替OFFLINE DROP。一旦数据文件脱机,Oracle不会再访问该数据文件的内容,但它仍然是表空间的一部分。这个数据文件在控制文件中标记OFFLINE,在数据库启动时不会对它与控制文件进行SCN的比较。在控制文件中保留这个数据文件的入口是方便以后的恢复。

如果你不想按照上述方法来删除表空间,还有其它一些解决方法。

1.         如果你想删除数据文件的原因是因为分配了不合适的文件大小,你可以考虑RESIZE命令。

2.         如果你不小心增加了一个数据文件,而这个文件还没有分配空间,你可以使用

ALTER DATABASE DATAFILE <filename> RESIZE;命令使其小于5个 Oracle块大小,如果数据文件的大小小于这个,Oracle将不会进行扩展数据文件。在以后,Oracle可以重建的时候来剔除这个不正确的文件。

 
分享到:
评论

相关推荐

    如何正确的删除Oracle表空间数据文件

    详细介绍如何正常删除Oracle 数据库表空间数据文件,OFFLINE和OFFLINE DROP的区别,OS级别删除了数据文件后的恢复,删除数据库表空间数据文件演示示例

    oracle表空间和数据文件的详细操作(纯手工)

    内容包括: 1. 创建表空间 2. 改变表空间可用性和读写模式 3. 删除表空间 4. 创建和添加数据文件 5. 数据文件可用性 6. 移动和重命名数据文件 7. 删除数据文件 详细代码步骤;

    删除表空间中的数据文件10GR2以后support

    删除表空间中的数据文件10GR2以后support

    Oracle回滚表空间数据文件误删除处理

    回滚段是数据库的一部分,它记录数据库变更的信息。使用这些信息实现数据库的读一致性及其恢复。若回滚段出现故障,则数据库不能正常启动,导致数据库瘫痪,...本文将为大家介绍Oracle回滚表空间数据文件误删除处理。

    Oracle必杀技物理删除数据文件恢复

    Oracle必杀技物理删除数据文件恢复,详解了实用的Oracle物理表空间删除修复命令。

    MySQL删除数据,表文件大小依然没变的原因

    对于运行很长时间的数据库来说,往往会出现表占用存储空间过大的问题,可是将...可以将表数据存在共享表空间,或者单独的文件中,通过 innodb_file_per_table 来控制。 如果为 OFF ,表示存在系统共享表空间中,和数据

    计算剩余磁盘空间并删除其中一些文件

    计算磁盘剩余空间并删除其中一些文件(如:数据过早的数据,特别是数据库的备份盘空间不足是用得到的

    oracle10g表空间操作命令

    包括:表空间的创建,调整表空间,删除表空间,删除数据文件,增加数据文件,维护表空间的自动扩展属性,设置表空间脱机,联机,读写 移动表空间 查看表空间使用情况

    精品删除文件恢复软件_反删除数据恢复软件_v2.0

    精品删除文件恢复软件是一款简单易用且有专业恢复水准的数据恢复软件,可以恢复硬盘/U盘/SD卡/内存卡上被误删除的文件、直接Shift+del删除的文件、删除文件到回收站再清空、剪切的目录、卸载软件删除的文件、第三方...

    Oracle7.X 回滚表空间数据文件误删除处理方法

    Oracle7.X 回滚表空间数据文件误删除处理方法

    Mysql InnoDB删除数据后释放磁盘空间的方法

    如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间。 运行OPTIMIZE TABLE 表名后,虽然最后会报...

    ORACLE表空间恢复方案

     在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建表空间以及所有的对象.  svrmgrl&gt; startup mount  svrmgrl&gt; alter database datafile filename offline drop;  svrmgrl&gt; alter ...

    如何解决Linux中文件已删除但空间不释放.doc

    一般来说不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件被进程锁定,或者有进程一直在向这个文件写数据等,要理解这个问题,就需要知道Linux下文件的存储机制和存储结构。

    擦除已删除文件的磁盘物理数据

    它有两种功能:第一种功能是“清理硬盘中未使用空间”,让被删除的文件不会有被undeleted的机会,这个清理的动作并不会对存在的文件有任何影响;第二种功能是fully erase存在的文件,这个功能就是结合了删除及清理文件的...

    Oracle Rac 集群数据文件改变目录操作

    一、rac 环境修改spfile位置 1. 从集群的任意一个实例登录,查看spfile信息 2. 重新创建新的spfile 3. 通过ASM命令行,查看spfile,并赋予别名。 ...5. 重启数据库 6. 查看结果 7. 查看参数文件 ...五、数据文件迁移

    ORACLE_表空间操作(图)

    ORACLE_表空间操作(有图有真相)

    SQL数据文件恢复工具 v1.0.zip

    软件主要针对的是被误删除而丢失的MDF文件,或从SQL数据文件中提取用户需要的表数据。软件界面美观简洁、简单全面、实用方便,无需培训,即可快速上手,轻轻松松完成日常SQL数据文件恢复功能,真正做到简单全面实用...

    oracle表空间替换转移级联删除脚本生成工具

    1.可以扫描oracle导出的dmp文件中的表空间信息,然后替换为指定的表空间名,要以将多个表空间名转换为一个表空间名 2.可以进行常规的一些导入导出新建数据库操作 3.可以生成包含子表的按条件删除的脚本,维护数据时...

    veritas Backup Exec DPA 过期数据删除释放磁盘空间

    veritas Backup Exec DPA 过期数据删除释放磁盘空间 讲述设备存在过期数据,删除过期数据的操作方法。过期数据删除可增加DPA软件的可用空间,若有需要可采纳。

Global site tag (gtag.js) - Google Analytics