- 締切済み
リアルタイムに他のDBにデータを反映させる方法
現在、リアルタイムに自DBから他DBへのデータを反映させる仕組みを Oracle10gSE(Oracle10gSEone)で探しております。 OS:RedhatLinux4 ES Oracle:Oracle10.2.0.1.0SE (Oracle10gEEなら、レプリケーション機能を使って実現できそう かなとは思いますがライセンスまた私のスキルが足りないため 無理です。) 今考えていますのは Oracleのマテリアライズド・ビューを使って一定の間隔 (10秒毎、1時間毎、1日毎)でリフレッシュする方法です。 ●自Oracle -> 他Oracle ただ、自Oracle内のテーブルは50テーブル近く存在し、 レコードの件数ももっとも多いテーブルで 200万近くに及びます。(しかもカラム数は200・・・) DBサーバへの負荷も考慮し、高速リフレッシュを使うところは 使いたいと思っておりますが、この自Oracleは 他のシステムのDBもバッチプログラム、マテビュー等々で 使っているため、なるべくシンプルにしたいです。 (更新頻度が多いため、MVログを安易に作成したくありません) 設計を見直す上でも、テーブルのデータを他のDBのテーブルへ リアルタイムに(近く)反映させる方法はありませんでしょうか。 Oracleに限らず、さまざまな意見を聞けると大変ありがたいです。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tiffa9900
- ベストアンサー率31% (68/216)
ひとつの手段として、トリガーを利用するのはどうでしょう。 (合わせてDBリンクも必要かな?) トリガーを利用すれば、あるアクション(INSERT、UPDATE、DELETE)を引き金として、特定の処理を実行する事が可能です。 アクション前後のカラム内容の両方を利用する可能ですので、別テーブルに同内容をINSERT、UPDATE、DELETEする事もできます。 ただ、マテリアライズド・ビューと比べてパフォーマンスやCPU負荷がどうなるかは微妙ですね。 頻繁に更新がある表に関しては、マテリアライズド・ビュー。 あまり更新がない表に関しては、トリガー。 がいいのかなぁ?と思っていますが、前者は9i→10g・・・と改善されているので、すべて前者でもいいのかな。 また、他DBの用途にもよりますが、レプリケーションが可能であればそれが一番良いような気もします。 あまり参考にならなくてすみません。
お礼
ご回答ありがとうございます!m(_ _)m >ひとつの手段として、トリガーを利用するのはどうでしょう。 >(合わせてDBリンクも必要かな?) なるほどですね、トリガーですね! 実験機で実験してみようと思います。 >ただ、マテリアライズド・ビューと比べてパフォーマンスやCPU負荷がどうなるかは微妙ですね。 たしかに、こうなんだろうとなんとなくわかっていても 実際試してみると結果が違ったということはありますよね(^^;) 今回は、マテビューを使って実装できました(^^) ※ご返事が遅れてすみませんでした。 「1日2日でなんとかしろ」という緊急の話でしたので 不安でいっぱいでした。 コメントをいただけでも大変助かりました。 本当にありがとうございました。