1000行づつ削除してコミットし、1000行毎に10秒Waitします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
SET SERVEROUTPUT ON declare v_max_row NUMBER; BEGIN select max(rownum) into v_max_row from sys.aud$; while v_max_row > 0 loop DBMS_OUTPUT.PUT_LINE('残り' || v_max_row || '行'); delete from sys.aud$ where rownum < 1000; commit; v_max_row := v_max_row - 1000; DBMS_LOCK.SLEEP(10); end loop; end; / |
sqlplusから実行した場合の実行結果サンプル。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
F:\work>sqlplus (ID)/(Password)@(ホスト名orIP):1521/(インスタンス名) @delet_aud_table.sql SQL*Plus: Release 12.1.0.2.0 Production on 金 4月 27 11:55:10 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. 最終正常ログイン時間: 金 4月 27 2018 11:49:52 +09:00 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options に接続されました。 残り6186行 残り5186行 残り4186行 残り3186行 残り2186行 残り1186行 残り186行 PL/SQLプロシージャが正常に完了しました。 |
コメント