`
blueram
  • 浏览: 762507 次
  • 性别: 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数据库管理中,删除表空间数据文件是一项关键操作,涉及到数据的安全性和系统的稳定性。本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据...

    如何查询Oracle表空间和数据文件信息

    在Oracle数据库管理中,了解和监控表空间及数据文件的状态对于数据库管理...同时,根据表空间和数据文件的使用情况,还可以调整表空间的大小,增加或删除数据文件,或者改变数据文件的存储位置,以满足不同的业务需求。

    表空间和数据文件的管理

    【表空间和数据文件的管理】是数据库管理系统中的核心概念,尤其在Oracle数据库中尤为重要。本文将深入探讨这两个概念以及如何进行相关操作。 首先,**表空间(Tablespace)**是数据库的逻辑组织单位,它从逻辑上...

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

    最后,通过再次查看`DBA_DATA_FILES`视图,确认数据文件是否已成功从表空间中删除: ```sql SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'MYALAN'; ``` 此时,'D:\ORACLE\PRODUCT\...

    oracle定时删除表空间的数据并释放表空间

    1. **Oracle 表空间(Tablespaces)**:表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件组成。每个表、索引和其他对象都会被分配到特定的表空间中。理解表空间的工作原理对于管理数据库空间至关...

    Oracle 表空间与数据文件

    表空间的管理还需要了解数据文件的管理,包括数据文件的创建、修改和删除等。 Oracle 表空间的应用包括数据库设计、数据库优化和数据库维护等。表空间的应用需要了解表空间的逻辑结构和物理结构,了解表空间的分类...

    oracle表空间和数据文件管理.ppt

    从物理上说,数据库的数据存放在数据文件中,从逻辑上说数据是被存放在表空间中的。一个表空间可以有多个数据文件,一个数据文件只能属于一个表空间。 表空间的作用包括控制数据库所占用的磁盘空间,控制用户所占用...

    oracle 表空间 控制数据日志文件 备份还原

    实验4“Oracle表空间管理”旨在让学生掌握如何创建、扩展和删除表空间,理解表空间与数据文件的关系。在Oracle中,表空间的创建通常涉及以下步骤: 1. **规划表空间**:确定表空间的用途,例如用户数据、临时数据等...

    Oracle 12c表空间与数据文件

    ### Oracle 12c 表空间与数据文件详解 #### 一、表空间概述 在Oracle 12c中,数据库是由多个表空间组成的。这些表空间是逻辑上的存储单元,用于组织数据库中的数据和元数据。每一个数据库对象,如表、索引等,都...

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

    Oracle回滚表空间数据文件误删除处理是一个严重的问题,因为它涉及到数据库的核心组件——回滚段。回滚段在Oracle数据库中扮演着至关重要的角色,它们记录了事务的修改历史,确保了数据库的一致性,同时也为数据库...

    oracle 9i UNDO表空间数据文件丢失恢复

    #### 四、离线并删除丢失的UNDO表空间数据文件 - **离线丢失的数据文件**: - 执行命令`ALTER DATABASE DATAFILE 'D:\oracle\oradata\orcl\undotbs01.dbf' OFFLINE DROP;`来离线并删除丢失的数据文件。这里需要...

    oracle表空间和数据文件管理.pptx

    "Oracle表空间和数据文件管理" Oracle数据库存储结构可以分为物理存储结构和逻辑存储...在Oracle数据库中,表空间和数据文件管理是非常重要的,需要合理地设计和管理表空间和数据文件,以提高数据库的性能和可靠性。

    表空间文件被误删除 怎么办

    1. **理解表空间**:在Oracle或SQL Server等关系型数据库管理系统中,表空间是逻辑存储单元,它由一个或多个物理数据文件组成,这些文件实际保存了数据库的数据。每个表、索引和其他对象都存在于某个表空间内。 2. ...

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

    删除数据文件时需要注意,如果是表空间中的最后一个数据文件,则删除操作会自动删除整个表空间。 ```sql ALTER TABLESPACE DATA01 DROP DATAFILE 'D:\DATA01C.DBF'; ``` #### 8. 查看数据文件的信息 可以通过查询...

    表空间及临时文件的操作

    表空间是Oracle数据库中逻辑存储结构的一部分,它由一个或多个数据文件组成,用于存储数据库中的数据。下面是如何创建一个表空间的示例命令: ```sql CREATE TABLESPACE tablespace_name DATAFILE 'filepath' SIZE ...

    oracle表空间与数据文件.docx

    数据在逻辑上位于表空间内的段和区中,而在物理上存储在具体的数据文件中。 **四、创建表空间** 创建新的表空间通常涉及以下步骤: 1. 定义表空间名称。 2. 分配一个或多个数据文件给表空间,并指定文件大小和路径...

    Oracle基础知识之表空间与数据文件.pptx

    Oracle数据库管理系统中,表空间和数据文件是存储数据的核心组件,理解它们的概念和管理方式对于数据库管理员至关重要。表空间在逻辑上是数据库的容器,它将数据组织成一个或多个数据文件,这些文件则在物理层面上...

    oracle数据文件的删除命令

    `以确保所有更改都被写入到数据文件中。 - **验证**:操作完成后,应该验证数据文件是否已被成功删除。可以使用`select * from dba_data_files;`来查看当前数据库中的所有数据文件列表。 #### 四、常见问题解答 **...

Global site tag (gtag.js) - Google Analytics