0

Oracle 11g を使用しています。大量のデータをスプールする必要があるため、少なくとも 7 時間以上実行される「スプール オン」の SQL ファイルがあります。しかし、スプール出力はSQL全体が終了したときにのみダンプされますが、SQLの進行状況、またはその時点までスプールされたデータを知る他の方法があることを知りたいので、SQLが期待どおりに正しく実行されています。入力にご協力ください。

4

1 に答える 1

1

を使用しているように聞こえますがDBMS_OUTPUT、これは常に、手順が完了した後にのみ実際に結果を出力し始めます。

進捗状況をリアルタイム/ニアタイムで監視したい場合は、次の3つのオプションがあります。

  1. utl_fileOSファイルへの書き込みに使用します。このためには、dbサーバーのOSファイルシステムにアクセスする必要があります。

  2. テーブルに書き込んで使用するとPRAGMA AUTONOMOUS_TRANSACTION、メインの処理に影響を与えることなくログテーブルのエントリをコミットできます。これは実装が簡単で、簡単にアクセスできます。良い方法で実装すると、これはすべての手順の事実上の標準になる可能性があります。次に、これが大きくなりすぎて扱いにくくなるのを避けるために、ある種のハウスキーピングを実装する必要があるかもしれません。

  3. 一時的な迅速で汚いオプションは、を使用DBMS_APPLICATION.SET_CLIENT_INFOしてからクエリを実行することv$session.client_infoです。これはうまく機能し、物事を追跡するのに適しています。かなり目立たず、メモリ構造であるため高速です。

DBMS_OUTPUT本当に限られています。

于 2013-02-16T14:02:11.047 に答える