当前位置:  数据库>oracle

使用PL/SQL删除百万条记录的大表

    来源: 互联网  发布时间:2017-04-27

    本文导语: 使用PL/SQL删除百万条记录的大表: 最近开发人员对测试环境数据库进行了压力测试,数据库中产生了大量的脏数据。有几张大表里数据量均在百万甚至千万条的记录数。开发人员现提出需求如下: 只清理其中的部分脏数据,不...

使用PL/SQL删除百万条记录的大表:

最近开发人员对测试环境数据库进行了压力测试,数据库中产生了大量的脏数据。有几张大表里数据量均在百万甚至千万条的记录数。开发人员现提出需求如下:

只清理其中的部分脏数据,不允许对这些表使用truncate操作。于是就有了下面的PL/SQL清理脚本:

1.编写删除数据表数据的脚本内容如下:

$ cat data_del.sql 
set serveroutput on
show serveroutput
DECLARE
V_LOGNUM NUMBER;
V_NEEDARC NUMBER;
BEGIN
SELECT count(1) INTO V_LOGNUM FROM V$LOG;
LOOP
LOOP
SELECT count(1) INTO V_NEEDARC FROM V$ARCHIVE;
IF V_NEEDARC < V_LOGNUM - 1 THEN
 EXIT;
ELSE
 DBMS_LOCK.SLEEP(60);
END IF;
END LOOP;
 
DELETE FROM T_USER.T_TABLE_NAME WHERE mobile='13800138000' AND rownum < 100;
IF SQL%ROWCOUNT = 0 THEN
 EXIT;
END IF;
 COMMIT;
END LOOP;
END;
/























 
2.编写调用脚本:
 
$vim clear_dirt_data.sh
source ~/.bash_profile
sqlplus -s mytest/passwd@mydb

    
 
 

您可能感兴趣的文章:

  • 在linux在如何保护正在使用的文件不被删除
  • 如何使用perl删除指定文件
  • 如何使用命令行删除Linux下的POSIX有名信号灯
  • 请使用“rm ./-510.lg”删除文件 “-510.lg”。
  • 请问如何使用snmp给一个表添加、修改记录? iis7站长之家
  • linux使用mysql删除数据库的问题,谢谢!
  • 在shell脚本中如何使用FTP一次删除远端的多个文件?
  • 使用secureCRT删除字符的问题
  • 超级菜鸟问题:使用VMware安装linux会删除硬盘上的数据吗?
  • 怎么使用sed命令删除^M啊????
  • 使用java怎样删除目录,
  • 在线等待!请教Linux中删除用户使用什么命令?
  • 使用vi编辑文件,输错了,使用backspace删除,结果出现乱码,求解决办法。。。
  • 使用SQL Server判断文件是否存在后再删除(详解)
  • 找到删除XP后的分区,想把该分区放到LINUX下使用的问题??
  • 请问在Red Hat Linux下怎么使用find exec组合命令查询全部的shell可执行文件并删除这些文件 ?
  • 使用python删除nginx缓存文件示例(python文件操作)
  • 使用完ejb对象,快速释放出它占用的空间,而不删除数据库记录,是用的那条语句?
  • linux系统中使用Vim删除偶数行或者奇数行
  • 使用mysql事件调度器定时删除binlog
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • rhel as 4.7的sendmail使用中mx记录的问题
  • 使用存储过程实现循环插入100条记录
  • Linux系统会不会把一个工作中的进程的cpu使用情况记录在文件中?
  • 请问如何使用snmp给一个表添加、修改记录?
  • 用来记录登录后使用命令的shell脚本
  • 使用php记录用户通过搜索引擎进网站的关键词
  • 在Servlet中使用Jdbc-odbc连接access数据库,为什么模糊查询查不出记录啊,求救!!
  • 查询返回多条记录是不是就不能使用Entity Bean了?
  • 使用mysql的disctinct group by查询不重复记录
  • MySql中having字句对组记录进行筛选使用说明
  • 使用SQL Server 获取插入记录后的ID(自动编号)
  • 使用SQL查询昨天、今天、明天和本周等记录的语句
  • 求一个使用tcp协议传送类似数据库表的二维数组的例子。每条记录上的字段数据类型不一定一样。
  • jquery.validate.js插件使用经验记录
  • SQL Server遍历表中记录的2种方法(使用表变量和游标)
  • 使用Linux下script工具记录Oracle输出
  • 使用distinct在mysql中查询多条不重复记录值的解决办法
  • 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
  • 使用mss2sql工具将SqlServer转换为Mysql全记录
  • java使用动态代理来实现AOP(日志记录)的实例代码
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,