首页 > 数据库 >Oracle分批delete大表数据

Oracle分批delete大表数据

时间:2023-06-29 17:22:37浏览次数:39  
标签:5000 T3 MYCURSOR ROWID Oracle TABLE 大表 TYPE delete

分批DELETE
DROP TABLE T3;
CREATE TABLE T3 AS SELECT * FROM DBA_OBJECTS;
DECLARE
CURSOR MYCURSOR IS
SELECT ROWID FROM T3 ORDER BY ROWID; --按ROWID排序的CURSOR,删除条件是XXX=XXXX,根据实际情况修改
TYPE ROWID_TABLE_TYPE IS TABLE OF ROWID INDEX BY PLS_INTEGER;
V_ROWID ROWID_TABLE_TYPE;
BEGIN
OPEN MYCURSOR;
LOOP
FETCH MYCURSOR BULK COLLECT
INTO V_ROWID LIMIT 5000; --每次处理5000行,也就是每5000行一提交
EXIT WHEN V_ROWID.COUNT = 0;
FORALL I IN V_ROWID.FIRST .. V_ROWID.LAST
DELETE FROM T3 WHERE ROWID = V_ROWID(I);
COMMIT;
END LOOP;
CLOSE MYCURSOR;
END;
/

标签:5000,T3,MYCURSOR,ROWID,Oracle,TABLE,大表,TYPE,delete
From: https://www.cnblogs.com/guipeng/p/17514724.html

相关文章

  • oracle注入
    基础知识Oracle是一款使用较为广泛的关系型数据库,在SQL注入中他与mysql语法最大的区别就是,使用select查询时需要指定表名才能进行查询。很多时候我们在进行注入时,刚开始是不知道其表名的,所以我们得想一个办法来解决这个问题:就是使用oracle中的dual虚拟表,他是默认存在的,他里面永远......
  • oracle 11g开机自启动
    oracle11g开机自启动vi/etc/oratabPROD:/u01/app/oracle/product/11.2.0/dbhome_1:Yvi/etc/rc.d/rc.localsu-oracle-lc"/u01/app/oracle/product/11.2.0/db_1/bin/dbstart"su-oracle-lc"/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctlstatusli......
  • 根据进程号查看oracle会话信息
    colsidformat9999colspidformat9999999999colserial#format9999999collogon_timeformata20colmachineformata30colterminalformata20setlinesize100selectp.spid,s.sid,p.pid,s.programfromv$processp,v$sessionswherep.addr=s.addrandp.......
  • Oracle 基于标签的安全性
    Oracle基于标签的安全性(OLS)是Oracle数据库的一项功能,可根据安全标签对敏感数据提供细粒度的访问控制。此功能使组织能够根据数据的敏感性而不是传统的用户角色和权限方法来实施访问控制策略。本文将讨论Oracle基于标签的安全性的工作原理及其优势。Oracle基于标签的安全......
  • 查看Oracle自增列
    Oracle添加自增列CreateSequenceSEQ_XXX最后一个是自增列的名称,一般是  SEQ_表名。为表添加一个自增的列并将上面创建的序列值给这个列ALTERTABLEemployeeADDemp_idNUMBER(10)DEFAULTSEQ_XXX.nextvalNOTNULL;这里nextval是关键词,表示下一个值 可以在Pl......
  • Oracle DataGuard 监控日志同步是否正常
    1.查看备库(或者主库)的状态SETfeedoffSETlines300SETpages999COLUMNdatabase_nameheading"Database|Name"FORMATa12COLUMNdatabase_roleheading"Database|Role"FORMATa30COLUMNprotection_modeheading"Prote......
  • Oracle数据库用户密码过期的解决方法
    问题现象:今天在更改数据库数据的时候,程序报错了,如下:ORA-28001:thepasswordhasexpired问题分析:很显然,报错原因就是:密码已过期!所以现在需要做的事情只有两件:1.修改密码的过期时间2.修改/重置密码这里分析一下为什么要这样做:1.修改密码的过期时间:这是因为OracleDatab......
  • pmm1安装部署oracledb_exporter
    ########################被监控的oracle服务器上安装##################1.下载下载地址https://github.com/iamseth/oracledb_exporter#installationoracledb_exporter.tar.gz二进制文件包该文件里只有一个可执行文件oracledb_exporter-0.5.0.tar.gz源码包,我们需要解压该包......
  • 【Oracle】使用PL/SQL快速查询出1-9数字
    【Oracle】使用PL/SQL快速查询出1-9数字简单来说,直接RecursiveWITHClauses在Oracle里面就直接使用WITHresult(参数)即可WITHresult(num)AS(SELECT1ASnumfromdualUNIONALLSELECTnum+1ASnumFROMresultWHEREnum<9)SELECTnumFROMresult......
  • ① Oracle数据库有多个实例,并且不知道sys密码情况下如何更新密码
    ①Oracle数据库有多个实例,并且不知道sys密码情况下如何更新密码sqlplus/@orclassysdba--@orcl是实例名②修改sys密码alterusersysidentifiedby123456;......