我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备份oracle数据库内一个月以前的数据,然后从表内删除这些数据。
之前的做法是这样的:
1:备份数据
create table MY_TEMP as select * from TEMP t where t.create_time < to_date('2014-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss');
2:删除数据
delete from TEMP t where t.create_time < to_date('2014-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss');
3:重建索引
alter index indexname rebuild;
当然这几步都需要停止业务防止新录入数据,且oracle执行时耗时较久。
那么今天我尝试了一个新的办法。
1:备份要留下的数据
create table MY_TEMP as select * from TEMP t where t.create_time > to_date('2014-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss');
2:重命名表,也把原来表整个备份
rename TEMP to TEMP_0701_0801; rename MY_TEMP to TEMP;
3:新增索引和主键
create index TEMP_INDEX_NAME on TEMP (COL_NAME); alter table TEMP add constraint TEMP_PK primary key (ID);
4:删除数据
delete from TEMP_0701_0801 t where t.create_time > to_date('2014-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss');
比较耗时的是1和3,虽然4也很耗时,但是因为是独立出来的表,已经和业务无关,所以可以随时删除且对系统无影响。
但是要注意的是,新表是没有任何主键、外键、索引的,这里要重新创建。
按照之前的方法,每次耗时都以小时计算,慢的要死。
按照后来办法去做以后,除了删数据没做,1、2、3下来,几百万数据表,半个小时搞定了。
请您到ITEYE看我的原创
或支持我的个人博客,地址:http://www.javacui.com
相关推荐
在Oracle 11g中,通常采用RMAN(恢复管理器)进行备份,因为它是Oracle提供的一个强大工具,可以执行各种类型的备份,包括完整数据库备份、表空间备份、数据文件备份等。RMAN可以通过命令行或者脚本方式运行,非常...
总结来说,Oracle表空间的备份和恢复是数据库维护的关键环节,涉及到RMAN、Data Pump以及良好的备份策略。正确实施这些操作可以保障数据的安全,确保在出现问题时能迅速恢复服务,从而降低业务中断的风险。
- **逻辑删除**:如果完全物理删除数据不可行,可以考虑逻辑删除的方式,即通过标记某些记录为已删除状态而不是真正地从数据库中移除它们。 - **优化查询性能**:针对查询频繁的表或字段,优化索引结构,减少查询...
这种脚本通常基于Oracle的Export/Import工具或RMAN(Recovery Manager)工具来实现数据的完整备份、增量备份以及归档日志的备份,确保在数据库发生故障时能够快速恢复至最新的状态。 ### 脚本实现原理及步骤 #### ...
### 删除Oracle某个用户下所有数据 在Oracle数据库管理过程中,有时候我们需要清理某个用户下的所有数据。这可能是因为项目结束、测试环境重置或是其他原因导致的。为了完成这一任务,我们可以通过一系列SQL命令来...
### Oracle 数据泵服务器备份知识点详解 #### 一、Oracle 数据...通过以上详细介绍,我们可以清晰地了解到如何使用 Oracle 数据泵进行数据库备份与恢复,这对于维护 Oracle 数据库系统的稳定性和可靠性具有重要意义。
**Q1:如果在删除数据文件时遇到“表空间正在使用”错误怎么办?** A1:这通常意味着表空间中有活跃的数据或事务。你可以尝试将表空间设置为只读模式,然后再进行删除操作。 ```sql SQL> alter tablespace ...
实验4“Oracle表空间管理”旨在让学生掌握如何创建、扩展和删除表空间,理解表空间与数据文件的关系。在Oracle中,表空间的创建通常涉及以下步骤: 1. **规划表空间**:确定表空间的用途,例如用户数据、临时数据等...
然而,在某些情况下,我们需要删除和重建 Oracle 实例,以便解决一些问题或进行升级维护。在这篇文章中,我们将介绍删除和重建 Oracle 实例的步骤和要点。 删除 Oracle 实例 删除 Oracle 实例是一个复杂的过程,...
数据库自动备份删除脚本是确保数据安全性和可恢复性的重要工具。在IT环境中,数据库是存储关键业务信息的核心,因此定期备份和管理这些备份至关重要。本文将深入探讨MySQL、Oracle和SQL Server在Windows和Linux环境...
Oracle自动备份工具是一种高效的方法,用于定期保护和维护Oracle数据库,确保数据安全并方便恢复。在Oracle数据库环境中,数据安全是至关重要的,因为任何意外的数据丢失都可能导致业务中断,甚至严重损失。Oracle...
综上所述,Oracle RMAN增量备份脚本是数据库管理的重要工具,通过合理的备份策略和参数设置,可以有效地保护数据,节省存储资源,并确保在需要时能够快速恢复。在实践中,应根据具体环境和需求定制备份计划,以达到...
人为失误案例:维护一张表时,认为数据不再需要了,就 truncate table t_xxx, 结果后来又证明那张表还有需要的数据,但后悔已经来不及了… 避免各种自然灾害、人为失误及应用程序故障的方法: Oracle 提供了多种...
1. **数据泵(Data Pump)导出与导入**:Oracle的数据泵功能提供了快速且高效的数据迁移工具,能够以压缩格式进行数据的导出和导入,极大地提高了数据传输的效率。 2. **RMAN备份与恢复**:RMAN是Oracle数据库系统...
ORACLE 删除重复数据 在 ORACLE 数据库中,删除重复数据是一项常见的操作。重复数据的存在可能会导致数据不一致、查询效率下降等问题。今天,我们将介绍三种删除重复数据的方法,并对每种方法的执行时间进行比较。 ...
在压缩DMP文件后,为了维护备份策略,可能会有删除30天前旧备份的步骤。这可以通过查找并删除日期在特定范围之外的文件实现。在Linux中,可以使用`find`命令: ```bash find /backup/path -name "database_name*....
标题中的“Oracle自动(删除)备份日志表”指的是在Oracle数据库环境中,通过自动化脚本或工具来定期清理不再需要的备份日志记录。这些日志通常包括归档日志和Redo Log,它们在数据库备份和恢复过程中起着至关重要的...
在Oracle数据库管理过程中,物理表空间的管理和维护是非常重要的一个环节。物理表空间是Oracle数据库存储数据的一种方式,它由一个或多个数据文件组成。在日常的数据库操作中,可能会遇到误删除物理表空间的情况,...
### Oracle 10g在EM中备份并删除过时文件的方法 #### 背景介绍 Oracle 10g作为一款广泛使用的数据库管理系统,在企业级应用中占据着重要的地位。随着业务数据量的增长,数据库备份与管理变得越来越重要。本文将详细...
在Oracle SQL中,删除重复数据并保留最新日期的实例是一个常见的数据清理任务,尤其是在具有历史记录或事务数据的数据库中。这个实例展示了如何通过SQL查询有效地处理这种情况。在这个例子中,我们有一个名为`abc`的...