快速批量更新數據

生產環境有時候表結構變更,需要在新增字段設置默認值,爲不長時間鎖表,在add 字段時候不能加default * 
需要後續做大批量數據變更,在我們的架構中,更新效率太低或是一個事務更新太多記錄使OGG延時加劇,所以
就有了下面這個批量更新模板。

給大表新增字段需要注意事項,請參考 :大表新增字段

set serveroutput on

declare v_cnt int := 0; TYPE ARRROWID IS TABLE OF ROWID INDEX BY BINARY_INTEGER; TBROWS ARRROWID; ROW PLS_INTEGER; CURSOR BACH_CUR IS SELECT ROWID ROW_ID FROM XHL.DELTEST where OWNER = 'XHL'; BEGIN OPEN BACH_CUR; LOOP FETCH BACH_CUR BULK COLLECT INTO TBROWS limit 50000; /* 每次更新50000*/ FORALL ROW IN 1 .. TBROWS.COUNT() UPDATE PAYADM.DELTEST SET STATUS=1 WHERE ROWID = TBROWS(ROW); COMMIT; v_cnt := v_cnt + TBROWS.COUNT(); DBMS_LOCK.SLEEP(1); /* 休息一秒讓OGG能緩過神來*/

EXIT WHEN BACH_CUR%NOTFOUND;

END LOOP; dbms_output.put_line('UPDATE SUCC:'||v_cnt); CLOSE BACH_CUR; END; /

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章