1000行づつ削除してコミットし、1000行毎に10秒Waitします。
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から実行した場合の実行結果サンプル。
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プロシージャが正常に完了しました。
最近のコメント