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);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20893244/viewspace-2200360/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 大資料量刪除的思考(一)大資料
- 大資料量刪除的思考(三)大資料
- 大資料量刪除的思考(四)大資料
- 大資料量刪除的思考(二)大資料
- Oracle 刪除千萬級資料量時,可以考慮以下方法來提高刪除效率Oracle
- oracle刪除重資料方法Oracle
- sql server編寫archive通用模板指令碼實現自動分批刪除資料SQLServerHive指令碼
- Oracle億級大表高效刪除案例分析Oracle
- oracle刪除日誌Oracle
- oracle徹底刪除資料檔案Oracle
- windows下Oracle資料庫完全刪除WindowsOracle資料庫
- ORACLE刪除-表分割槽和資料Oracle
- 刪除linux下的oracle資料庫LinuxOracle資料庫
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- python 刪除大表資料Python
- oracle資料庫建立、刪除索引等操作Oracle資料庫索引
- Oracle10g刪除資料檔案Oracle
- [Oracle]Oracle資料庫資料被修改或者刪除恢復資料Oracle資料庫
- 刪除oracle重複值Oracle
- Oracle 增加 修改 刪除 列Oracle
- oracle級聯刪除使用者,刪除表空間Oracle
- ORACLE批量刪除無主鍵重複資料Oracle
- Oracle中刪除表中的重複資料Oracle
- Redis刪除大KeyRedis
- oracle rac 12徹底刪除,徹底刪除該死的racOracle
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- Oracle快速找回被刪除的表Oracle
- oracle使用小記、刪除恢復Oracle
- Oracle 11g刪除庫重建Oracle
- 【SQL】Oracle資料庫資料量及效能資訊收集SQLOracle資料庫
- 【C/C++】資料庫刪除大表C++資料庫
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- oracle刪除超過N天資料指令碼的方法Oracle指令碼
- 【DATAPUMP】Oracle資料泵定時備份刪除指令碼Oracle指令碼
- Oracle 41億資料量表建立索引記錄Oracle索引
- 刪除資料
- whk我【資料刪除】你個【資料刪除】的
- oracle rman 刪除過期的歸檔Oracle