生产环境有时候表结构变更,需要在新增字段设置默认值,为不长时间锁表,在add 字段时候不能加default * 需要后续做大批量数据变更,在我们的架构中,更新效率太低或是一个事务更新太多记录使OGG延时加剧,所以 就有了下面这个批量更新模板。 给大表新增字段需要注意事项,请参考 :大表新增字段 set serveroutput ondeclare 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; /
快速批量更新数据
最新推荐文章于 2024-05-17 18:18:16 发布
3万+

被折叠的 条评论
为什么被折叠?



