Oracle 11g では、 と呼ばれるセッションとシステム パラメータを設定できますddl_lock_timeout
。いくつかのステートメントを実行する必要があり、リソースが非常に使用されている場合に非常に便利です ( ORA-00054 例外を回避するため)。
ただし、10g にはそのようなパラメータはありません。
もちろん、次のような構成を使用できます。
DECLARE START_DATE DATE := SYSDATE;
BEGIN
LOOP
IF SYSDATE>START_DATE+30/60/60/24 THEN
EXIT;
END IF;
BEGIN
<some statement>
EXIT;
EXCEPTION WHEN OTHERS THEN
IF sqlcode != -54 THEN
RAISE;
END IF;
END;
END LOOP;
END;
そしてそれを使って、30秒間のステートメントを1サイクルで実行しようとしますが、ここでのことは、ステートメントが何度も実行され、いくつかのトラブルを引き起こす可能性があるということです(よくわかりませんが、なんとなく感じます)、ただしddl_lock_timeout
、ステートメントを使用すると、一度だけ実行され、その後、はるかに柔軟なリソースを待機します。
何か案は?