Oracle DBの特定のテーブルが更新されるたびに(レコードの追加、削除、変更など、あらゆる種類の更新)、Javaでメソッドを実行する必要があります。
パフォーマンスが高く、DBに過度のプレッシャーをかけない、Javaからの変更についてテーブルを「ポーリング」する最も効率的な方法は何ですか。
残念ながら、私には多くの制約があります。
- DBの管理/設計を制御できないため、追加のテーブル、トリガー、ストアドプロシージャなどを作成できません。
- その投稿で提案されているように、C / JNIが関係しているように見えるため、Oracle変更通知は避けたいと思います。
- レコードを数えるだけでは、変更や同時の追加/削除を見逃す可能性があるため、十分ではありません。
- 実際の変更から通知までの最大30/60秒の遅延は許容されます。
- 私が監視したいテーブルには、通常10万以上のレコード(約1m以上)があるため、テーブル全体をプルすることはオプションではないと思います(DBの負荷/パフォーマンスの観点から)。