2

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、ステートメントを使用すると、一度だけ実行され、その後、はるかに柔軟なリソースを待機します。

何か案は?

4

1 に答える 1