oracle有个数据表现在已经有2500万条数据了,软件用到这个表的数据时就变的特别慢,所以准备把一个月以前的数据全部清除。

我的步骤是(下边操作都是在plsql中运行的)

1、首先 将这个月的数据导出到一个临时表中(这些数据是自己希望保留的)

create table tempTable as select id,name from table1 where sj>to_date('2013-7-31 23:59:59','yyyy-mm-dd hh24:mi:ss');

2、然后将2500万数据整个删除(这个是我在有备份情况下才用的)

truncate table table1;

3、然后将整个表删除(因为事先从网上查了下,有网友说truncate后,直接把数据从临时表导回来事个数据文件没有变小,自己没有试)

drop table table1;

4、将数据从临时表全部导回来

create table table1 as select id,name from tempTable;

5、然后删除临时表

drop table tempTable;

这样整个过程用了大概10分钟左右就完成了。

以上仅是自己操作心得,如有不正确或者更好的方法希望大家指正。

语法 delete from aa truncate table aa

区别 1.delete from后面可以写条件,truncate不可以。

2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少。

3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。

4.当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。

5.如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始。

6.truncate不会触发delete的触发器,因为truncate操作不记录各个行删除。

总结1.truncate和 delete只删除数据不删除表的结构(定义)        drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态。

2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发     truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger。

3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动        显然drop语句将表所占用的空间全部释放        truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;   truncate会将高水线复位(回到最开始)。

4.速度,一般来说: drop> truncate > delete。

5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及。

6.使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.     想删除表,当然用drop     想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete 如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

plsql删除大量数据_一次oracle大量数据删除经历相关推荐

  1. oracle拆分分区语法详解大全_学习笔记:Oracle分区表 添加 删除 合并 删除 交换 拆分等分区表的操作案例...

    天萃荷净 Oracle分区表管理,记录关于Oracle分区表的管理案例:创建.删除.合并.拆分.交换.更改分区表的操作方法 1.添加创建分区表 1.1)增加分区(add partition) 语法是: ...

  2. js删除mysql记录_(DELETEUPDATE)修改、删除数据记录_MySQL

    有时,希望除去某些记录或更改它们的内容.DELETE 和 UPDATE 语句令我们能做到这一点. 用update修改记录 UPDATE tbl_name SET 要更改的列 WHERE 要更新的记录 ...

  3. jsp在mysql中删除数据_如何在jsp页面中删除数据库中的数据

    如何在jsp页面中删除数据库中的数据 各位大虾! 我想在jsp页面上写一个按钮功能,从而动态的删除数据库中的一行数据. 不知道怎么实现 这是我写的一段代码 数据库是MySql UserBean p3= ...

  4. oracle 抽样_[转载]利用ORACLE实现数据抽样

    做数据分析的,免不了碰到记录数据量很大,怎么办? 做全面分析是不现实也没有必要. 介绍一下抽样方法及实现 几种常用的抽样方法: 1.简单随机抽样(simple random sampling) 将所有 ...

  5. 爬虫goodreads数据_使用Python从Goodreads数据中预测好书

    爬虫goodreads数据 Photo of old books by Ed Robertson on Unsplash 埃德·罗伯森 ( Ed Robertson)的旧书照片,内容为Unsplash ...

  6. 微软大数据_我对Microsoft的数据科学采访

    微软大数据 Microsoft was one of the software companies that come to hire interns at my university for 202 ...

  7. oracle 删除老存档,【转】oracle存档日志删除

    在controlfile中记录着每一个archivelog的相关信息,当然在OS下把这些物理文件delete掉后,在我们的 controlfile中仍然记录着这些archivelog的信息,在orac ...

  8. mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  9. python如何读dat数据_如何用Python进行数据质量分析

    概述 数据挖掘的第一步工作是数据准备,而数据准备的第一步就是数据质量分析了.本篇文章着重介绍如何使用Python进行数据质量分析的初步工作,属于比较基础的入门教程. 为什么要进行数据质量分析 根据百度 ...

最新文章

  1. 数据、人工智能和传感器按COVID-19新冠流感排列
  2. tomcat7在eclipse中,调试时断点频繁停在threadpoolexecutor
  3. 使用blas做矩阵乘法
  4. svn版利用什么技术实现_金葱粉涂料印花利用了什么技术?
  5. Adobe illustrator 粉色背景字体是为什么 - 连载19
  6. 思杰20140522
  7. 【LeetCode】【HOT】617. 合并二叉树(递归)
  8. 【flume】flume的安装配置理解
  9. C语言整型在计算机的储存
  10. sqlalchemy mysql教程_SQLAlchemy 教程 —— 基础入门篇
  11. 创建单实例WPF应用程序的正确方法是什么?
  12. php7版本搭建sqli labs,CentOS 7 LAMP搭建并且部署sqli-labs
  13. Emacs中自动刷新dired缓冲区
  14. bmp图片批量改成jpg
  15. 27_ArrayList类
  16. CMOS反相器版图设计
  17. 敏捷开发一千零一问系列之二十六 如何进行优先级排序
  18. 青蛙现象、鳄鱼法则、鲇鱼效应、羊群效应、刺猬法则、手表定律、破窗理论、二八定律、木桶理论、马太效应
  19. EVM 操作码(Opcode)与 字节码(Bytecode)
  20. DBLP实验数据集处理

热门文章

  1. sublime3 常用功能总结
  2. 云计算监控—Prometheus监控系统(文末赠书)
  3. 从1行代码到20万行开源,我已经走过了三年
  4. JimuReport积木报表,一个好用的开源免费的报表平台
  5. 小白也可以玩转的炫酷大屏!
  6. 【JEECG技术博文】jeecg 定时任务配置用法
  7. jeecg 如何重新加载当前渲染tab页面
  8. 如何向开源软件贡献自己的力量
  9. 【实战项目】采用jeecg3.2框架,一个人写的购物系统
  10. JSF 源代码赏析之FacesServlet