6

テーブル内のいくつかの行を変更または追加するときにフックを設定し、そのようなイベントが発生したときに何らかの方法で通知を受け取ることはできますか? 私はウェブを発見し、パイプだけで立ち往生しています。しかし、パイプメッセージが送信されたときにすぐにパイプメッセージを取得する方法はありません。定期のみ受信を試みます。

4

5 に答える 5

4

他の回答に加えて、データベースの変更通知を見ることができます。アプリケーションが Java ベースの場合は、 JDBCをカバーする特定のドキュメントがあり、.NET についても同様のドキュメントがここここにあります。ここに別の記事があります。

また、OCI から使用できる継続的なクエリ通知も確認できます。

リンクのみの回答が良くないことは知っていますが、何も書く経験がありません (どちらも使用していないことを告白しなければなりませんが、しばらくの間 DCN を調べるつもりでした.. .) これはコメントするには長すぎます *8-)

于 2013-04-27T18:11:11.177 に答える
3

データベース自体のトリガーは、必要なものです。データが挿入、削除、更新されたとき、またはそれらの任意の組み合わせが実行されたときに、任意の PL/SQL を実行できます。

イベントをデータベースの外部に伝播させる必要がある場合は、PL/SQL トリガーから外部アプリケーションを呼び出す方法が必要になります。可能なオプションは次のとおりです。

  1. DBMS_PIPES - Oracle のパイプは、Unix パイプに似ています。1 つのセッションで書き込みを行い、別のセッションで読み取りを行って情報を転送できます。また、トランザクションではないため、すぐにメッセージを取得できます。1 つの欠点は、API がポーリング ベースであることです。そのため、オプション #2 をお勧めします。
  2. Java - PL/SQL は任意の Java を呼び出すことができます (クラスをデータベースにロードすると仮定)。これにより、JMS を使用してメッセージをメッセージ キューにプッシュするなど、ほぼすべての種類のメッセージングを実行できるようになります。これをどのように実装するかによっては、INSERT/UPDATE/DELETE ステートメント自体をトランザクション的に関連付けることさえできます。リッスンするアプリケーションは、JMS キューをリッスンするだけで、イベントを発行する DB にはまったく関連付けられません。
于 2013-04-27T00:39:48.447 に答える
2

要件に応じて、トリガーまたは監査を使用します

于 2013-04-18T10:25:09.407 に答える