我的编程空间,编程开发者的网络收藏夹
学习永远不晚

oracle大数据量分批删除

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

oracle大数据量分批删除



很多时候,我们要清理一个大表的数据,比如几个亿,业务还不能停,还只能delete,这种情况下分批删除是个好办法。



create or replace procedure delBigTab --分批提交删除
(p_TableName in varchar2, --表名
 p_Condition in varchar2, --条件
 p_Count     in varchar2 --每批提交的条数
 ) as
  pragma autonomous_transaction;
  n_delete number := 0;
begin
  while 1 = 1 loop
    EXECUTE IMMEDIATE 'delete from ' || p_TableName || ' where ' ||
                      p_Condition || ' and rownum <= :rn'
      USING p_Count;
    if SQL%NOTFOUND then
      exit;
    else
      n_delete := n_delete + SQL%ROWCOUNT;
      DBMS_OUTPUT.PUT_LINE(n_delete);
    end if;
    commit;
  end loop;
  commit;
  DBMS_OUTPUT.PUT_LINE('Finished!');
  DBMS_OUTPUT.PUT_LINE('Totally ' || to_char(n_delete) || ' records deleted!');
end;

执行方法:
exec delBigTab('XXXXX','status=1','10000');


清理表之后,重新收集下该表的统计信息


EXECUTE dbms_stats.gather_table_stats (ownname=>'XXXX', tabname=>'XXXXXX',estimate_percent=>30,cascade=>true,degree => 4);


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

oracle大数据量分批删除

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL 删除数据 批量删除(大量)数据

在删除数据的时候根据不同的场景使用不同的方法,比如说删除表中部分数据、删除表的结构、删除所有记录并重置自增ID、批量删除大量数据等,可以使用delete、truncate、drop等语句。 一、方法分类 二、具体方法 类型语句删除全部/部
2023-08-30

oracle怎么批量删除数据库表

要批量删除数据库表,可以使用Oracle SQL的DROP TABLE命令。以下是一个示例:DROP TABLE table1, table2, table3;这将同时删除名为table1、table2和table3的三个表。要注意的是,
oracle怎么批量删除数据库表
2024-04-09

oracle怎么批量删除表分区

在Oracle中,可以使用以下步骤来批量删除表分区:创建一个存储过程来循环删除表的分区。以下是一个示例存储过程:CREATE OR REPLACE PROCEDURE delete_partitions ISBEGINFOR part
oracle怎么批量删除表分区
2024-04-09

redis怎么大批量删除缓存数据

要大批量删除Redis缓存数据,可以使用Redis的DEL命令来删除多个key。以下是一些方法:使用通配符删除:可以使用通配符来匹配多个key,然后一次性删除这些匹配的key。例如,可以使用如下命令来删除所有以"prefix:"开头的key
redis怎么大批量删除缓存数据
2024-04-09

mysql 大表批量删除大量数据的实现方法

问题参考自:https://www.zhihu.com/question/440066129/answer/1685329456 ,mysql中,一张表里有3亿数据,未分表,其中一个字段是企业类型,企业类型是一般企业和个体户,个体户的数据量
2022-05-11

navicat怎么批量删除数据

批量删除数据:编写 sql 删除查询,如 delete from table_name;在 navicat sql 编辑器中执行查询;确认删除操作;验证删除成功,如刷新表视图或运行 select 查询。如何使用 Navicat 批量删除数据
navicat怎么批量删除数据
2024-04-24

mysql批量删除数据语句

使用 delete 语句配合 in 子句,指定要删除的行 id 列表,一次性删除多个行。MySQL 批量删除数据语句问题:如何在 MySQL 中批量删除数据?回答:可以使用 DELETE 语句配合 IN 子句一次性删除多个行。详细说明
mysql批量删除数据语句
2024-08-01

oracle怎么快速删除大量数据

要快速删除大量数据,可以使用Oracle的DELETE语句结合一些优化技巧来实现。以下是一些可以加快删除大量数据速度的方法:1. 使用TRUNCATE语句:TRUNCATE语句比DELETE语句更快,因为它不会将数据逐行删除,而是直接释放表
2023-08-31

oracle怎么批量删除分区表的分区

在Oracle中,可以使用以下步骤来批量删除分区表的分区:首先,连接到数据库并登录到sys用户或具有适当权限的用户。使用ALTER TABLE语句来删除分区。例如,要删除名为table_name的表的所有分区,可以使用以下语句:ALTER
oracle怎么批量删除分区表的分区
2024-04-20

oracle如何快速删除大量数据

要在Oracle中快速删除大量数据,可以尝试以下方法:1. 使用TRUNCATE语句:TRUNCATE语句可以快速删除表中的所有数据,而不是逐行删除。它比DELETE语句更高效,因为它不会生成事务日志,并且可以立即释放表空间。但是,请注意,
2023-10-08

mysql怎么批量删除表数据

如果要批量删除表数据,可以使用以下方法:使用DELETE语句批量删除数据:DELETE FROM table_name WHERE condition;在上面的语句中,table_name是要删除数据的表名,condition是删除数据的条
mysql怎么批量删除表数据
2024-04-09

PHP中怎么批量删除数据

本篇文章为大家展示了PHP中怎么批量删除数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先在文章列表页面(list.php),将多选筐命名为:“$del_id[]”,值为文章ID号。 例如(li
2023-06-17

oracle删除大量数据慢怎么解决

要提高Oracle删除大量数据的速度,可以考虑以下几个方面的优化:使用适当的删除语句:确保删除语句使用了合适的索引,避免全表扫描。可以通过分析表的使用情况和查询执行计划,确定是否需要创建新的索引或优化现有索引。批量删除:使用批量删除语句,如
oracle删除大量数据慢怎么解决
2024-04-09

编程热搜

目录