2

2つのPL/SQLシステムがあり、2つの別々のデータベースにあります。SystemAはSystemBのテーブルにデータを入力する必要があります。これはおそらくデータリンクを介して行われます。レコードのセットがSystemBのテーブルに挿入されるたびに、SystemBのプロセスを実行する必要があります。SystemAが完了するのを待ってから、スクリプトを実行してSystemBでの処理を開始することもできますが、SystemAはSystemBの処理と入力に何時間も費やす可能性があるため、SystemBがレコードの各セットを利用可能になったらすぐに処理することをお勧めします(セットは他のものとは独立して処理できるので、これは問題なく機能するはずです)。

よくわからないのは、PL/SQLで偶数駆動型プログラミングを実行する方法です。セットを処理する準備ができたことをSystemBに通知するには、SystemAが必要です。私の最初のアイデアは、SystemBに特別な「イベント」テーブルを作成し、SystemAがセットを終了すると、「イベント」テーブルに挿入され、挿入時にプロセスを開始するトリガーがあります(プロセスは長いものになる可能性があります)。 、SystemBではおそらくプロセスごとに5〜10分)。これが確立された方法であるかどうか、またはより良いメカニズムがあるかどうかを知るために、Oracleでのトリガーに関する十分な経験がありません。提案?チップ?助言?

4

2 に答える 2

6

OracleAdvancedQueuingを使用します。このために設計されています。2つのシステム間にデータベースリンクを設定する必要があると思います(この場合、Aのキューを使用するにはBからAへ)。

于 2011-02-16T19:26:01.977 に答える
2

はい、Oracle Advance Queues、またはAに由緒あるOracleJobをBに提出させることもより良い考えです。

また、プロセスでAからBへのデータの完全なレプリケーションが必要になる場合は、Oracle Streamsプロセスのように見せて、データをコピーしてから処理を実行することをお勧めします。

于 2011-02-16T19:39:33.990 に答える