0

こんにちは、

3 つのデータベースがあります。SID は config、prod1、および prod2 です。

マテリアライズド ビューを使用して、構成データベース内の 11 個のテーブルのデータを他の 2 つのデータベースに複製しています。マテリアライズド ビューは現在 5 秒ごとに更新されていますが、コミット時に更新されるのが理想的です。

リモートデータベースから複製する場合、コミット時にサポートされていないことを説明するこのWebサイトに出くわしました。

これは私が期待していた仕事です

CREATE MATERIALIZED VIEW "schema"."table" USING INDEX REFRESH FORCE ON COMMIT AS select column1 from schema.table@config;

「主キーを使用してオンデマンドで高速に更新する」方法がリンクで提案されていますが、明らかにこれはオンデマンドです。可能であれば、リフレッシュ オン コミット環境を実行するために、誰かがどのようなアイデアを持っているのでしょうか?

ありがとう

4

1 に答える 1

1

リモート表からのコミット時にリフレッシュされるマテリアライズド・ビューを作成することはできません。ドキュメントから:

COMMITでの更新に関する制限

この句は、オブジェクト型またはOracle提供の型を含むマテリアライズドビューではサポートされていません。

この句は、リモートテーブルを持つマテリアライズドビューではサポートされていません。

その理由は、データベースリンクが「親」データベースではなく「子」データベースで定義されているためです。したがって、親データベースは、それ自体で子データベース内の何かをトリガーまたは変更することはできません。

テーブルの100%リアルタイムのコピーが必要な場合は、ビューをお勧めします。

コミット時にデータを複製する場合は、DMLプロシージャを変更して、子のリモートテーブルを同時に更新することができます。

于 2012-09-03T12:54:59.033 に答える