我知道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
相关推荐
某大型央企SAP系统目前记录了2006年到2017年所有业务数据,随着时间的增长...所有的表数据量大概有100亿条数据,其中需要删除的估计大概有80亿条数据,并且此系统为核心系统不允许停机维护数据,所以删除数据十分麻烦。
13.4.4快速闪回细粒度数据 13.4.5闪回事务 13.4.6闪回DROP的表 13.5数据库特殊情况的恢复 13.5.1联机Redo日志损坏与恢复 13.5.2数据文件脱机与恢复 13.5.3表空间脱机与恢复 13.6本章小结 第14章 RAC安全性 ...
支持自动ORACLE大表分区: 版本进度: 31. 20110420 V2.2 支持任意表任意时间字段分区 以下为安装部署部分: 1.分区相关脚本部署执行顺序,安装前请确保该用户拥有管理员权限, 同时请执行GRANT CREATE ANY TABLE ...
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用...
Oracle2: 1. 《Oracle8 优化技术》摘录 (第一章 安装)...49. 怎样快速查出Oracle 数据库中的锁等待 50. 怎样在SQLPlus中使用 '&' 来实现自定义参数变量? 51. 怎样在查询记录时给记录加锁 52. 自动备份Oracle数据库
7.5.2 快速备份的技巧 7.6 恢复策略和情况 7.6.1 数据库恢复和涉及的数据库结构 组织 7.7 各种需要恢复的情形 7.8 恢复丢失的数据文件 7.8.1 SYSTEM 数据文件的丢失 7.8.2 包含活动回退段的数据文件的丢失 ...
3.8 如何将Oracle8数据导入Oracle7数据库 41 3.9 怎样判断是否存在回滚段竞争 41 3.10 怎样手工跟踪函数/存储过程执行情况 42 3.11 多种业务使用同一数据库如何分配回滚段 42 3.12 怎样远程用Sql*Load倒入数据 43 ...
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用...
第5~9章分别介绍了Oracle11g的体系结构、表空间与数据文件的管理、启动和关闭数据库、网络服务与管理,第10—13章介绍了有关安全的几个内容(权限、角色、概要文件、用户的管理),第14—17章介绍了几种方案对象...
2.3.3 手动删除Oracle遗留的成分 2.4 Oracle的应用结构 2.4.1 单磁盘独立主机结构 2.4..2 多磁盘独立主机结构 2.4.3 多数据库独立主机结构 2.4.4 C/S结构 2.4.5 分布式结构 2.5 Oracle网络与防火墙 2.5.1 Oracle网络...
2.3.3 手动删除Oracle遗留的成分 2.4 Oracle的应用结构 2.4.1 单磁盘独立主机结构 2.4..2 多磁盘独立主机结构 2.4.3 多数据库独立主机结构 2.4.4 C/S结构 2.4.5 分布式结构 2.5 Oracle网络与防火墙 2.5.1 Oracle网络...
事务控制语言(Transactional Control Language,TCL),用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句 二、 Oracle的数据类型 类型 参数 描述 字符类型...
实验22:dml语句,插入删除和修改表的数据 49 实验23:事务的概念和事务的控制 52 实验24:在表上建立不同类型的约束 54 实验25:序列的概念和使用 58 实验26:建立和使用视图 60 实验27:查询结果的集合操作 63 ...
Oracle 应 用进行文件 I/O操作的目录为任意目录 因此 只要空间允许 可以将备份数 据存放到任意目录下 <br>1.2.4 监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 ...
8.3.3. 删除表 32 8.4. 表分区管理: 33 8.4.1. 表分区定义 33 8.4.2. 数据分区存储的优点 33 8.4.3. 分区方法 34 8.4.4. 创建分区表 34 8.4.5. 查询分区 35 8.4.6. 添加分区 35 8.4.7. 删除分区 35 8.4.8. 修改分区...
3.3.4 删除数据 71 3.3.5 事务处理 72 3.3.6 查询作业 75 3.4 创建和管理表(重点) 76 3.4.1 数据类型(重点) 76 3.4.2 表的建立(重点) 77 3.4.3 表的删除(删除) 79 3.4.4 表的修改(了解) 79 3.4.5 对表重命名(了解)...