はじめに
Oracleで一定時間処理をsleepさせたいことがあると思います。
PL/SQLのDBMS_LOCK.SLEEPを使うと、指定した時間だけ処理を待機させることができます。
事前準備(DBMS_LOCK権限を付与する)
DBMS_LOCK.SLEEPを使うには、実行ユーザにDBMS_LOCKの権限を付与する必要があります。
以下の例ではhogeユーザに対して、DBMS_LOCKの権限を付与します。
CONN / AS SYSDBA GRANT EXECUTE ON DBMS_LOCK TO hoge;
DBMS_LOCK.SLEEPでスリープさせる
以下の例ではtable01をselectした後、5秒だけスリープしています。
set timing on select * from table01 for update; execute DBMS_LOCK.SLEEP(5); commit;
複数プロセスでの排他ロックの確認などで使えそうですね。