`
hulu26
  • 浏览: 225939 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle快速删除表空间

阅读更多
1、使用drop tablespace including contents;方式直接来删除. 
  
  SQL>set linesize 132
  
  SQL>set pagezie 0
  
  SQL>set timing on
  
  SQL>drop tablespace TBS_TEST including contents
     
已用时间: 03: 35: 39.10 

经过我耐心的等待,花了三个半小时。 

2、测一下同样的表空间,把它转换为Local方式管理的删除效率。 

a、把TBS_TEST通过恢复回来。 

b、把TBS_TEST转化为Local管理的方式。 
  
  SQL>set timing on
  
  SQL> exec sys.dbms_space_admin.tablespace_migrate_to_local(’TBS_TEST’) ;
     
已用时间: 00: 06: 33.25 

c、删出这个空间。 
  
  SQL> drop tablespace TBS_TEST including contents
  
  2 /
      
已用时间: 00: 00: 45.56 

可以看到总共才花费了7分多钟。 

3、测一下同样的表空间,先删除其中的对象,然后再删这个表空间的效率如何。 

a、把TBS_TEST通过恢复回来。 

b、形成删除表的语句 

 
  SQL>set linesize 132
  
  SQL>set pagezie 0
  
  SQL>set timing off
  
  SQL>spool drop_test_tables.sql
  
  SQL>SELECT ’Drop table ’||TABLE_name||’;’ FROM dba_tables WHERE tablespace_name=’TBS_TEST’;
  
  SQL>spool off
 
     
c、删除表 

SQL>@drop_test_tables.sql 

这一步大约花费20秒。 

d、删出这个空间。 
  
  SQL>set timing on
  
  SQL> drop tablespace TBS_TEST including contents;
      
已用时间: 00: 07: 35.53 

可以看到总共才花费了将近8分钟。 

总结:我们在做数据字典管理的表空间的删除时,最好先删除表空间中的对象再进行删除该表空间操作。也可以先把它转换为本地(local)管理的空间再进行删除。不过需要补充的是本地管理的空间在8i以后的版本中才没有简单的方法来删除表空间的数据文件,唯一的方法是删除整个定义的表空间,步骤有下面(前提是这个数据文件上的数据是不需要了):

如果数据库运行在非归档模式:

1. MOUNT数据库 - startup mount
2. 删除数据文件 - alter database datafile xxx offline drop
3. 打开(OPEN)数据库 - alter database open
4. 查看属于该表空间的所有对象:
         select owner, segment_name, segment_type
         from dba_segments
         where tablespace_name='tbs_name'
5. 导出该表空间的所有对象------用exp命令来做
6. 删除表空间 - drop tablespace tbs_name including contents
7. 删除这个表空间的所有物理的数据文件Delete the physical datafiles belonging to the tablespace
8. 重建表空间,导入前面导出的DMP文件.


如果数据库是运行在归档模式:

1. MOUNT数据库 - startup mount
2. 删除数据文件 - alter database datafile xxx offline
(Note: offline这个数据文件,此数据文件还是属于这个数据库的一部分,只是在控制文件中将它的状态标记为offline.)
3. 在操作系统一级删除物理的数据文件
4. 打开(OPEN)数据库 - alter database open
5. 后面的可以做下面操作:
导出该表空间的对象
删除表空间
重建表空间并导入对象

如果数据库运行在归档模式下,并且数据文件有备份:

1.MOUNT数据库
2.OFFLINE数据文件:alter database datafile xxx offline;
3.将备份的数据文件拷贝到原来数据文件的位置.
4.将备份数据文件到目前的所有归档日志放到归档目录.
5.恢复数据文件:recover automatic datafile xxx(要输入全路径名)
6.然后ONLINE数据文件:alter database datafile xxx online;
7.打开(OPEN)数据库:alter database open;
8.做一次数据库的关机全备份.
分享到:
评论

相关推荐

    oracle快速删除表空间

    本篇文章将详细介绍如何在Oracle数据库中快速删除表空间,以及相关的重要知识点。 首先,理解表空间在Oracle中的角色至关重要。表空间是数据库的逻辑存储单元,它由一个或多个数据文件组成,用于存储数据库对象,如...

    Oracle表删除大量数据(千万)后查询变慢问题(原因分析)

    Oracle 表删除大量数据后查询变慢问题分析 在 Oracle 数据库中,如果删除了大量数据(千万级别),可能会出现查询变慢的问题。下面我们将分析这个问题的原因,并提供解决方案。 问题的原因主要有两个方面: 1. 表...

    oracle 误删除表恢复

    在Oracle数据库管理过程中,误删表是常见的操作失误之一,而如何有效、快速地恢复这些被误删的表对于DBA(数据库管理员)来说至关重要。本文将详细介绍如何在Oracle环境下利用回收站功能进行误删表的恢复。 ### ...

    完整ORACLE创建表空间、用户、设置用户权限脚本

    ### 完整Oracle创建表空间、用户及设置用户权限脚本解析 #### 一、创建表空间 在Oracle数据库管理中,创建表空间是数据库管理的基础之一。表空间是Oracle数据库中逻辑存储结构的一部分,它将数据库物理存储空间...

    Oracle建立表空间.pdf

    这是因为 TRUNCATE TABLE 可以快速释放表空间,而其他两种方式会保留表的元数据,导致表空间被占用。 #### 十、查询表空间和数据文件信息 可以使用以下 SQL 查询来查看表空间的相关信息: ```sql SELECT ...

    Oracle数据库删除表中重复记录的方法三则.txt

    ### Oracle数据库删除表中重复记录的方法 在Oracle数据库管理中,经常会遇到需要处理表中的重复数据的情况。重复数据不仅会占用不必要的存储空间,还可能导致数据统计错误或业务逻辑混乱等问题。因此,掌握如何有效...

    关于oracle的表空间,分区表,以及索引的总结

    - **表空间的删除与调整大小**:通过`DROP TABLESPACE`命令可以删除表空间,同时可以选择`INCLUDING CONTENTS AND DATAFILES`来一并删除所有内容和数据文件。而`ALTER DATABASE DATAFILE`命令则用于调整数据文件的...

    Linux下Oracle删除用户和表空间的方法

    在Linux环境下管理Oracle数据库时,有时需要删除不再使用的用户及其关联的表空间。这通常涉及到数据库的安全性和资源优化。本文将详细介绍如何在Linux下的Oracle环境中删除用户和表空间,以及处理可能遇到的问题。 ...

    快速专业oracle表空间

    本文将深入探讨如何快速专业地进行Oracle表空间转移,这是一项在维护数据库性能、扩展性和安全性时经常需要执行的任务。 ### 快速转移Oracle数据库用户的表所属空间 在Oracle数据库中,表空间是存储数据的基本单位...

    地震前兆Oracle数据库UNDO表空间持续增长修复.pdf

    Oracle数据库在面对UNDO表空间持续增长的问题时,通常涉及...此外,定期维护和备份是防止类似问题的关键,同时,了解和熟悉Oracle数据库的内部机制,如SMON进程的作用和UNDO表空间管理,对快速定位和解决问题至关重要。

    oracle备份及Oracle彻底删除大全

    使用RMAN进行基于表空间的恢复 - Oracle Life.files 使用RMAN进行基于时间点的不完全恢复 - Oracle Life.files 使用RMAN进行快速Dataguard数据库创建 - Oracle Life.files Oracle RMAN物理备份技术详解 Oracle RMAN...

    oracle命令大全及关于oracle 1000问 日志管理,表空间管理,表,索引等等等等

    另外,`TRUNCATE TABLE`可以快速清空表,但不记录删除操作,而`DELETE`则会记录在回滚段中。 索引是提升查询性能的关键工具。Oracle支持B树索引、位图索引、函数索引等多种类型。`CREATE INDEX`用于创建索引,`...

    ORACLE的UNDO表空间

    ORACLE的UNDO表空间 ORACLE的UNDO表空间是Oracle数据库中一个非常重要的组件,playing a crucial role in maintaining data consistency and providing a way to undo changes made to the database. 在本节中,...

    Oracle数据库误删除数据的不同恢复方法整理

    - **原理**:当使用`DROP`命令删除表后,Oracle并没有立即清除表占用的空间,而是将其放入了一个特殊的区域——回收站中,直到这些空间被新的数据覆盖。 - **查询回收站**:可以通过查询`USER_TABLES`视图或`USER_...

    Oracle数据库常见表空间故障恢复方案.pdf

    针对用户表空间故障,可以采用一个比较快速简单的故障排除方法:将损坏的数据文件直接指向备份文件,然后恢复。具体操作过程如下: 1. 创建实验用表空间tbs-test。 2. 创建测试用户test,并授予权限。 3. 在test...

    shell脚本操作oracle删除表空间、创建表空间、删除用户

    在IT行业中,数据库管理是至关重要的任务之一...这些脚本可以帮助开发者和DBA快速地完成表空间的创建、删除,以及用户的管理,极大地提升了工作效率。在实际应用中,可以根据具体需求对这些脚本进行适当的调整和扩展。

    Oracle数据库表空间的维护.pdf

    Oracle数据库表空间是数据库中非常重要的逻辑单位,它对数据的存储和管理起着至关重要的作用。随着Oracle数据库在各个领域的广泛使用,其维护工作变得尤为重要,其中表空间的维护是数据库维护中的一个重要组成部分。...

    oracle表空间管理

    通过这种方式可以快速了解各表空间的状态。 #### 示例二:包括临时表空间在内的更全面统计 ```sql SELECT t.* FROM (SELECT D.TABLESPACE_NAME, SPACE AS "SUM_SPACE(M)", BLOCKS AS SUM_BLOCKS, SPACE - NVL...

    表空间暴长后如何才能取消自动扩展

    在Oracle数据库管理中,表空间的管理是一项重要的任务。当表空间设置为自动扩展时,随着数据的增长,表空间也会自动增加其大小,以适应数据存储的需求。然而,在某些情况下,表空间可能会出现所谓的“暴涨”现象,即...

    用oracle10g的flashback闪回功能快速恢复oracle中被删除的表

    ### 使用Oracle 10g的Flashback闪回功能快速恢复被删除的表 #### Oracle 10g Flashback 特性概述 Oracle Database 10g 引入了一项非常强大的特性——Flashback,该特性使得数据库管理员(DBA)能够轻松地恢复误删除...

Global site tag (gtag.js) - Google Analytics