`
hollowinhart
  • 浏览: 128628 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

oracle删除数据的技巧

阅读更多
问题:

在oracle里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。




原因:

因为oralce有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样。



解决方案:

1.首先导出表,然后truncate这张表,最后导入这张表。

2.在存储空间当中移动表,但是由于rowid会被打乱,所以需要重建索引.

3.如果是oracle 10g.可是直接更新表的高水位线。

对应的SQL:


9i中:
create table aa_bak as select * from aa where record_time > sysdate - 10;
truncate table aa;
insert into aa select * from aa_bak;
drop table aa_bak;
10g 版本
alter tablename enable row movement;
alter tablename shrink space;


分享到:
评论

相关推荐

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

    本篇文章将深入探讨Oracle数据库中物理删除数据文件的恢复方法,帮助你掌握这一关键的故障恢复技能。 首先,我们要理解数据文件物理删除的后果。一旦数据文件被物理删除,不仅文件本身消失,Oracle数据库可能无法...

    oracle数据文件的删除命令

    3. **将数据文件设置为离线**:在删除数据文件之前,需要将其设置为离线状态。 ```sql SQL> alter database datafile 'filename' offline; ``` 4. **删除数据文件**:此时可以执行删除命令。 ```sql SQL> ...

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

    6. **创建定时任务删除数据**:使用DBMS_SCHEDULER,我们可以创建一个定时任务,定期运行删除过期数据的SQL脚本。例如,可以创建一个过程来删除旧的审计记录,然后将其添加到调度程序中。 7. **表分区和段压缩**:...

    Oracle恢复误删除数据,解除锁定的等SQL语句

    在日常操作中,有时可能会发生误操作,如误删除数据或锁定问题,本篇文章将详细讲解如何在Oracle中恢复误删除数据以及解锁相关操作。 1. **恢复误删除数据** 当你不小心删除了数据库表中的数据时,Oracle提供了一...

    OracleSQL实例-删除重复数据行留最新日期实例.pdf

    在Oracle SQL中,删除重复数据并保留最新日期的实例是一个常见的数据清理任务,尤其是在具有历史记录或事务数据的数据库中。这个实例展示了如何通过SQL查询有效地处理这种情况。在这个例子中,我们有一个名为`abc`的...

    oracle 删除去掉重复项

    在Oracle数据库管理中,处理数据冗余和删除重复项是一项重要的任务,这有助于维护数据的完整性和提升查询效率。本文将深入探讨Oracle中删除和处理重复数据的方法,特别是基于提供的内容,我们将详细解析如何通过SQL...

    oracle SQL优化技巧

    如果你没有 COMMIT 事务,Oracle 会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况)。而当运用 TRUNCATE 时,回滚段不再存放任何可被恢复的信息。 10. 尽量多使用 COMMIT 只要有可能,在...

    Oracle数据库用户角色、表空间创建、删除命令

    ### Oracle数据库用户角色、表空间创建与删除命令详解 #### 创建数据表空间 在Oracle数据库中,表空间是逻辑存储单元...这些命令和技巧对于Oracle数据库管理员来说非常重要,能够有效帮助他们管理和维护数据库系统。

    Oracle 常用SQL技巧经典收藏

    以下是一些关于Oracle常用SQL技巧的经典要点: 1. **避免在SELECT子句中使用“*”**:在SQL查询中,使用通配符“*”代表选择所有列,虽然方便但效率低下。Oracle在解析时需要查询数据字典获取所有列名,增加了额外...

    Oracle性能优化技巧

    Oracle性能优化技巧是数据库管理员和开发人员关注的重要领域,它涉及到如何提高SQL查询效率,减少资源消耗,从而提升系统的整体性能。以下是一些关键的Oracle性能优化策略: 1. **选择有效的表名顺序**:在FROM子句...

    oracle性能优化技巧

    ### Oracle性能优化技巧详解 #### 一、Oracle优化器模式 在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)...

    oracle删除非主键重复类型的数据

    ### Oracle 删除非主键重复类型的数据 在Oracle数据库管理中,有时我们需要处理数据表中的重复记录,特别是当这些记录是非主键字段重复时。本文将详细介绍如何通过SQL语句来实现这一目标,并深入探讨其中涉及的技术...

    oracle数据库管理的三个技巧

    本文将详细探讨Oracle数据库在空间管理的三个实用技巧。 首先,我们关注的是表空间的自由空间管理。通过观察表空间的自由空间,DBA可以评估每个表空间的使用情况,判断是否需要进行扩展或优化。如上所述,可以使用...

    OracleSQL性能优化技巧

    Oracle SQL性能优化是数据库管理中的关键环节,它涉及到多个层面,包括数据结构设计、应用程序结构、SQL语句、服务器内存分配、硬盘I/O以及操作系统参数的调整。这些方面都直接影响到Oracle数据库系统的运行效率和...

    ORACLE 多表查询与数据修改

    3. **DELETE**:用于从表中删除数据。 例如,如果我们要更新学生表中名为“Mike”的学生的信息,可以使用以下语句: ```sql UPDATE stu SET stuName = 'Michael' WHERE stuName = 'Mike'; ``` 以上SQL语句将把名为...

    oracle数据泵的方式导入导出数据库

    ### Oracle 数据泵导入导出详解 #### 一、Oracle 数据泵简介 Oracle 数据泵是一种用于在 Oracle 数据库之间高效地移动数据的工具。它通过 `EXPDP` 和 `IMPDP` 命令来实现数据的导出和导入操作。与传统的 `EXP` 和 ...

    oracle误删除表空间后恢复

    综上所述,Oracle数据库中误删除表空间的恢复是一项复杂但有序的过程,需要结合控制文件、数据字典、RMAN备份以及系统的当前状态进行综合考虑和操作。掌握这些技巧不仅有助于及时应对数据丢失的紧急情况,也是提升...

    Excel的oracle插件

    3. 表格操作:允许用户直接在Excel中创建、修改和删除Oracle数据库中的表。 4. 动态链接:创建动态链接到Oracle数据库,数据更新时Excel表格会自动同步。 5. 数据刷新:定期或按需手动刷新数据,确保工作表中的信息...

    Oracle SQL性能优化技巧大总结

    ### Oracle SQL性能优化技巧大总结 #### 一、选择最有效率的表名顺序 **背景**:在基于规则的优化器(RBO)中,Oracle解析器处理FROM子句中的表名是从右向左的。为了提高查询效率,需要合理安排表的顺序。 **技巧...

    oracle xml publisher使用技巧

    Oracle XML Publisher是一款强大的报表工具,尤其在Oracle E-Business Suite(EBS)R12模块中,它提供了灵活的数据整合和格式化能力,使得企业能够根据需求生成定制化的报告。以下是一些关于Oracle XML Publisher的...

Global site tag (gtag.js) - Google Analytics