`
wh870712
  • 浏览: 40607 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

oracle10g 释放表空间

阅读更多
我们都知道数据表的庞大导而致其查询速度的降低是水到渠成的,所以我们只有将相关的数据表的数据相应的移走,但是如果使用Oracle delete之后,相关的数据删除了,但是速度没有多大改善,忧闷了。

使用备份表再drop掉原表。的确可以解决问题。但是较麻烦,今天请教了一个Oracle高手,解决了问题。 由于Oracle delete操作是不释放表空间的,要想提高查询速度则必须释放表空间。

对Oracle 9i而言,释放表空间则需要重新分析表。


analyze table itemLog compute statistics; 再进行select ,感觉的确快了很多。

另一种方法:使用exp将表导出,drop 掉表,再imp回去。


在一个应用中如果数据量比较大,开始影响到页面 sql 执行效率的时候,我们通常会考虑到将历史数据搬迁到一个历史库中,以此来提高当前系统的性能,但往往有时候可以发现搬迁了以后效率并没有提升或者反而有一定的下降。



      其中一个主要的原因就是我们在操作的时候通常都是用 delete 语句来删除一些历史数据,但 delete 语句是不会释放表空间占用的数据块,也就是说数据是删掉了,但位置还保留着,这块空着的表空间只能由以后再 insert 进来的时候填充。很显然这不是我们想要的效果,我们想要的就是减少表空间,提高 sql 的执行效率。



      下面说下解决的办法,思路就是用 alter table XX move tablespace XX; 语句将表先移到一个空闲的表空间上再移回来,网上也有人通过查 user_tables 里面的 block 字段来观察 move 表空间前后的占用的块,那个里面只是一个统计的结果,不能作为实际考量,因为在 move tablespace 的时候所有字段的 rowid 都是重新创建的,没有数据的那些块自然也就丢掉了,再 move 回来。可以理解成类似于在其他表空间创建一个临时表,把当前的表删掉重新建回来。



      还有一点要注意的就是,move 的同时既然 rowid 是重新创建的,那么该表上的索引自然也就失效了,再 move 回来以后别忘了把索引重新再建一下,要不然 sql 会报错无法执行。

      最后别忘了分析下表。analyze table XX compute statistics;

ALTER   TABLE   table_name   MOVE
truncate   table   tab_name;

如果整表数据都可以清除,建议首选truncate   table   table_name;
如果delete部分数据之后还再想整理表空间,一种方法使用导入导出重组表,另一种方法是使用create   table   table_name   as   select   ...达到重组表的目的。不过第二种方法需要中转表,相对麻烦一些。

DORP表,在重新建表


一种方法先DORP掉表,在重新建此表,表空间就会释放
二种方法就是MOVE表到另外一个表空间中,然后在MOVE回来

二、清除表中的数据

truncate操作 同没有where条件的delete操作十分相似,只是把表里的信息全部删除,但是表依然存在。

例如:truncate table  XX

Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。

truncate table 后,有可能表空间仍没有释放,可以使用如下语句:

alter table 表名称 deallocate   UNUSED KEEP 0;

注意如果不加KEEP 0的话,表空间是不会释放的。

例如:

alter table F_MINUTE_TD_NET_FHO_B7 deallocate   UNUSED KEEP 0;

或者:

TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能释放表空间。

例如: truncate table  test1 DROP STORAGE;

分享到:
评论

相关推荐

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

    本文将深入探讨如何在Oracle环境中实现定时删除表空间的数据并释放空间,主要涵盖以下几个关键知识点: 1. **Oracle 表空间(Tablespaces)**:表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件...

    Oracle的Temp表空间和UNDO表空间的处理

    CREATE UNDO TABLESPACE undotbs DATAFILE '/oracle/app/oracle/oradata/ora10g/undo01.dbf' SIZE 100M; ``` ##### 步骤二:切换到新的UNDO表空间 可以通过以下方式将数据库的UNDO表空间切换到新创建的表空间: -...

    Oracle 表空间 收缩

    因此,如果直接尝试修改数据文件的大小,可能会导致数据丢失或者无法正确释放空间。 **解决方案**: 1. **确定最大block_id**:通过查询`dba_extents`视图找到当前表空间中最大的block_id,计算出该block_id对应的...

    释放TEMP表空间占用硬盘空间

    标题与描述概述的知识点主要涉及Oracle数据库中临时表空间(TEMP表空间)的管理与优化,特别是当TEMP表空间占用过多硬盘空间时的处理方法。本文将深入解析这一过程,帮助读者理解并掌握释放TEMP表空间所占用硬盘空间...

    一次不太愉快的Windows Server 2008 R2 SP1上安装ORACLE 10G经历

    在本文中,我们将深入探讨在Windows Server 2008 R2 SP1操作系统上安装Oracle 10G数据库过程中遇到的一些问题以及相应的解决方案。首先,我们需要明确的是,Oracle 10G是针对较旧的操作系统设计的,因此在较新的...

    Oracle 10g 学习笔记

    │ oracle10g系统管理之表空间(一) - lvhuiqing的专栏 - CSDN博客.mht.lnk │ oracle10g系统管理之表管理 - lvhuiqing的专栏 - CSDN博客.mht │ oracle10g系统管理之表管理 - lvhuiqing的专栏 - CSDN博客.mht.lnk ...

    精通oracle 10g系统管理学习笔记

    在实际工作中,还需要掌握SQL语言、PL/SQL编程、表空间管理、用户权限管理、网络配置等多个方面,以全面掌握Oracle 10g系统管理。通过深入学习和实践,可以成为一个专业的Oracle 10g系统管理员,为企业的数据管理...

    实战在AIX安装Oracle10g

    内存是运行数据库的重要硬件资源,Oracle10g建议至少1024M的内存空间。Swap空间是系统进行物理内存和磁盘之间的虚拟交换区,用于当物理内存不足时提供额外的内存空间。根据文档,当内存大于1024MB且小于等于2048MB时...

    Oracle建立表空间.pdf

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

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

    LMT使用位图记录表空间内的空闲区域,减少了数据字典的竞争,分配或释放空间时不产生回滚信息,且可以自动合并空闲空间。而DMT则依赖于数据字典来跟踪自由分区,可能需要手动合并连续的空闲区域。 本地管理表空间的...

    ORACLE表空间 状态查询语句

    本文将详细解析一个用于查询Oracle 10g表空间状态的SQL语句,并深入探讨其中涉及的关键概念和技术细节。 #### 一、表空间概述 在Oracle数据库中,所有数据都是存储在表空间内的。表空间是数据库中的最高级逻辑存储...

    oracle 11g卸载教程

    Oracle 11g卸载教程 Oracle 11g是Oracle公司开发的一款关系型数据库管理系统,广泛应用于企业级数据库管理。...卸载 Oracle 11g可以释放磁盘空间,提高计算机性能,解决 Oracle 相关问题,提高数据库管理效率等。

    删除oracle10g垃圾表的最新方法

    在Oracle 10g数据库管理系统中,用户可能会遇到一种特殊的情况,即已经删除的表仍然存在于数据库中,形成所谓的“垃圾表”。这些表虽然在逻辑上已被删除,但并未从物理存储中移除,而是被移动到了“回收站”...

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

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

    Oracle 10g 数据库管理 应用与开发 标准教程 课后答案

    Oracle 10g数据库管理系统是企业级数据库解决方案,广泛应用于数据存储和管理。本教程主要涵盖了数据库的管理和开发,通过课后习题帮助学习者巩固理论知识和实践技能。以下是基于提供的部分章节内容展开的详细知识点...

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

    而大文件表空间则是Oracle 10g引入的新特性,允许单个文件支持更大的存储容量。 在表空间的管理方式上,有两种主要类型:本地管理表空间(LMT)和字典管理表空间(DMT)。LMT使用位图管理空闲空间,效率更高,且在...

    oracle 在删除表,表空间,用户时 如何释放磁盘空间.pdf

    在Oracle数据库管理中,释放磁盘空间是一项关键任务,特别是在处理大型数据表、表空间或用户时。以下是一些关于如何在Oracle中有效地删除表、表空间和用户以释放磁盘空间的详细步骤: 1. **删除表**: - **DROP ...

    Oracle-10g与11g的区别.docx

    Oracle 10g 的表空间(Tablespace)复制功能可以跨平台复制数据,极大的提高数据仓库加载速度。 流复制 Oracle 10g 的流(Streams)复制功能可以实现低系统消耗、双向(double-direction)、断点续传(resume ...

    Oracle 10g数据库自动备份

    - 超过10天的备份文件会被自动删除,以释放存储空间。 ### 二、脚本核心参数解析 接下来,我们将对脚本中的几个关键部分进行详细解释。 #### 1. 备份目录配置 ```batch set BACKUP_DIR=D:\DATABACKUP set ...

Global site tag (gtag.js) - Google Analytics