快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据
本文主要向大家介绍了Oracle数据库之批量清除一个表的数据,TB级别数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。
有个需求,要求清理8TB的数据,只保留一个月的数据,现有数据量由2010年至2018年底都需要清除,因此写了通用的该清除脚本。该表为没有分区的含有BLOB的大表,一共由三列,file_no,BLOB,还有create_time列,其中file_no为主键,create_time非空。
脚本如下:create or replace procedure proc_batch_delete(PI_table_name in varchar2, -- table name which will delete dataPI_where_condition in varchar2, -- delete sql conditionPI_thread_count in varchar2, -- thread number of the sql which use parallel hintPI_commit_count in varchar2) is -- per delete count and commit countv_delete integer;v_sql varchar2(2000);begindbms_output.put_line('Delete table is ' || PI_table_name || ';');dbms_output.put_line('Where condition is ' || PI_where_condition || ';');dbms_output.put_line('Number of threads is ' || to_char(PI_thread_count) || ';');dbms_output.put_line('Commit count is ' || to_char(PI_commit_count) || ';');dbms_output.put_line('Now start to batch delete. Timestamp is ' || to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'));
v_delete := 0;
execute immediate 'alter session enable parallel dml';
v_sql := 'delete /+ parallel('||PI_table_name || ' ' || PI_thread_count ||')/ from ' || PI_table_name ||' where '|| PI_where_condition || 'and rownum <= ' || PI_commit_count; dbms_output.put_line('Sql is ' || v_sql);
while 1=1 loopEXECUTE IMMEDIATE v_sql; if SQL%NOTFOUND then exit; else v_delete:=v_delete + SQL%ROWCOUNT; end if; commit; dbms_output.put_line('already deleted :' || to_char(v_delete) ||'.Timestamp is' || to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')); end loop; commit;
dbms_output.put_line('End to batch delete. Timestamp is ' || to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'));
end proc_batch_delete;
1.该图
2.执行语句
3.输入值
4.显示值pi_table_name 需要删除数据的表名pi_where_condition 选择条件pi_thread_count并发线程数 pi_commit_count 每次删除和提交事务数量
本文由职坐标整理并发布,希望对同学们学习Oracle有所帮助,更多内容请关注职坐标数据库Oracle数据库频道!
快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据相关推荐
- 如何更新mysql数据库字段_如何使用MySQL一个表中的字段更新另一个表中字段
1,修改1列 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 update ...
- C++基础:什么是数据库?如何创建一个表?
标题:C++基础:什么是数据库?如何创建一个表? 如果你是一个数据库新手,这将给你提供一些必需的基本知识.理解数据库是掌握MySQL的一个重要部分. 什么是数据库 数据库这个术语的用法很多,数据库是一 ...
- mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法
mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法: select a.nodeId,a.cpuCharge-b.cpuCharge cpuCharge, a.chargeTime fr ...
- SQL数据库中如何把一个表中的数据复制到另一个表中?
SQL数据库中如何把一个表中的数据复制到另一个表中?** 1整个表复制:** insert into table1 select * from table2 2部分列复制:** insert into ...
- 数据表从一个表空间中移动到另一个表空间中
数据表从一个表空间中移动到另一个表空间中 1) alter table [table_name] move tablespace [new tablespace]; 移动LOB字段 2) alter ...
- mysql将一个表的字段更新到另一个表中
mysql将一个表的字段更新到另一个表中 今天遇到了这个问题 百度了一下,给出的解决方案如下 UPDATE T_CONDETAILED SET latesprice=t_temp.amount FRO ...
- 查看oracle的版本、所在表空间、字符集及查询一个表的所有字段名和数据类型
一.oracle 数据库版本 select * from v$version; 注:https://blog.csdn.net/zhufengzhuiri/article/details/791391 ...
- oracle可以创建多个数据库实例吗_oracle 一个实例下可以建多个数据库么?
oracle 如何在一个数据库创建多个实例 首先"创建数据库的时候起不同的名字"不是一个数据库对应多个实例,概念不清~ 如果就你的问题来看,你可以查阅关于Oracle rac 的信 ...
- oracle查看所有用户_Oracle实用命令查看共用一个表空间的所有用户
概述 有朋友问到如何查出表空间都被哪些用户使用的一些方法,因为有几种情况需要考虑,也顺便做个总结. 需求:如何查看共用一个表空间的所有用户 查看某表空间下表的所有者 使用dba用户查询: 1.如果先要 ...
最新文章
- Windows7 设置 Java环境变量
- 两对光纤收发器用网线连接_光纤那么快,路由器和电脑之间为何不用光纤连接,反而用普通网线...
- 《CUDA C编程权威指南》——3.4 避免分支分化
- 安卓盒子运行 linux,全志 Allwinner A20 机顶盒刷入原生 Debian
- xhr返回值_XMLHttpRequest发送POST、GET请求以及接收返回值
- Java scirpt简介
- leetcode题解677-键值映射
- php 破解加密帖子,某PHP加密文件解密过程初探 · 浮萍’s Blog
- html 京东购物车样式,js京东简单购物车增减功能
- php访问对象的成员,如何使用PHP从JSON访问另一个对象内的类的成员
- #洛谷oj:P3144 Closing the Farm S
- (JS)蔚蓝网上书店(课本案例)
- vscode:解决按英文感叹号!+tab,无法生成html模板框架的问题
- php revel,Revel命令行工具源码阅读
- JAVA语言基础知识总结
- 掷骰子python代码_python模拟掷骰子
- python画布组件_Python Tkinter 画布(Canvas)
- pythonarp工具_Python 实现ARP扫描欺骗工具
- chrome总是提示\喔唷,崩溃啦\的解决办法
- oracle+not+logged+on,sqlplus ORA-01012: not logged on