• 締切済み

リアルタイムに他の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に限らず、さまざまな意見を聞けると大変ありがたいです。 よろしくお願いいたします。

  • Oracle
  • 回答数1
  • ありがとう数2

みんなの回答

  • Tiffa9900
  • ベストアンサー率31% (68/216)
回答No.1

ひとつの手段として、トリガーを利用するのはどうでしょう。 (合わせてDBリンクも必要かな?) トリガーを利用すれば、あるアクション(INSERT、UPDATE、DELETE)を引き金として、特定の処理を実行する事が可能です。 アクション前後のカラム内容の両方を利用する可能ですので、別テーブルに同内容をINSERT、UPDATE、DELETEする事もできます。 ただ、マテリアライズド・ビューと比べてパフォーマンスやCPU負荷がどうなるかは微妙ですね。 頻繁に更新がある表に関しては、マテリアライズド・ビュー。 あまり更新がない表に関しては、トリガー。 がいいのかなぁ?と思っていますが、前者は9i→10g・・・と改善されているので、すべて前者でもいいのかな。 また、他DBの用途にもよりますが、レプリケーションが可能であればそれが一番良いような気もします。 あまり参考にならなくてすみません。

bunmeidou
質問者

お礼

ご回答ありがとうございます!m(_ _)m >ひとつの手段として、トリガーを利用するのはどうでしょう。 >(合わせてDBリンクも必要かな?) なるほどですね、トリガーですね! 実験機で実験してみようと思います。 >ただ、マテリアライズド・ビューと比べてパフォーマンスやCPU負荷がどうなるかは微妙ですね。 たしかに、こうなんだろうとなんとなくわかっていても 実際試してみると結果が違ったということはありますよね(^^;) 今回は、マテビューを使って実装できました(^^) ※ご返事が遅れてすみませんでした。 「1日2日でなんとかしろ」という緊急の話でしたので 不安でいっぱいでした。 コメントをいただけでも大変助かりました。 本当にありがとうございました。

関連するQ&A

  • 別DBのデータをスマートに利用したい

    別DBのデータを扱う場合、Oracle同士であれば普通DatabaseLinkという使い道があるかと思いますが・・・別製品のDBの場合調べたところやはりDatabaseLinkのような機能はないようだということがわかりました。 元データがOracleにあるとして別DBのデータをキーで一致させたデータのうち特定条件に適合したものをOracle側に反映させるといったことを検討しています。 なにかいい方法はないでしょうか? よろしくお願いいたします。 (別DB・・・種類が多いのです。対象は、次の6種類です。 MySQL、PostgreSQL、SQLServer、DB2、HiRDB、Symfoware)

  • oracleが入っているサーバー同士の同期について

    oracle初心者の為教えてください。 現在DBサーバーでoracle10gSEを使用しています。 新たにDBサーバーを導入しoracle10gSEをインストールしますが サーバー間同士で同期を取るためになぜRACやレプリケーションという手法をとらなくてはならないのでしょうか? その必要性を問われ回答に困っています。 SEにはもとからその機能がないと回答すればよいのでしょうが それでは納得してくれそうにありません。 どうかご教示願います。

  • アクセス→オラクルの方法は?

    アクセス(Access2000)で作ったサンプルDBを オラクル(Oracle9i)にインポートするためには どうすればいいのでしょうか。 そもそもできるのでしょうか。 テーブルだけでOKなんです。 いったんデータをcsvにはいてから? 逆方向(オラクル→アクセス)はよく見かけるのですが…

  • DB2のデータ作成ツール探し、Excelから

    Oracle/DB2のデータ作成ツールを探しています。 ご存知であれば、教えてください。 要求: Excelで作ったデータを直接DBに登録できること DBからデータを取得してExcelに出力できること PKの関係で自動的にデータを作成することができること 可能であれば、Excelの列単位で自動的に指定されたタイプでデータ作成できること Excelにテーブル定義を取得できること

  • オラクルDBのデータ削除タイミング

    お世話になります。 .NETとオラクルで作られた小さいシステムを引き継ぎました。 その中にメインになるDBがあり3ヶ月以前のデータは .NETの夜間削除処理APでDELETEしています。 そのメインDBにトリガーテーブルがあるのですが、1日分の データしか保存されていません。 しかし、どこで消えているのかが見つけられないでいます。 .NETの全APを検索してもないし、オラクルの機能であるような気が しているのですが、よくわかりません。 トリガーの条件は「INSERT」と「UPDATE」です。 どなたかヒントを下さい

  • 米ORACLEオラクル社が新開発した「自立型DBデ

    米ORACLEオラクル社が新開発した「自立型DBデータベース」とはどういうデータベースのことを言うのでしょうか? 勝手にテーブルを作ってくれる?勝手に最適化してくれる?

  • MySQL/DBサーバって、MySQL/DBクライアントみたいなものりますか?

    Linux+Apache+MySQLでサイト構築を検討しています。 MySQL/DBって、ORACLE8で言うところの、 いわゆる「Net8クライアント」のようなものってあります? 実は、今まで、NT+MS-SQLServer7でサイト構築してたのですが、 Linuxで再構築することとなっちゃいました。 で、MS-SQLServer7だったら、クライアントPCから、 GUIを使って、データベースのデータを簡単に変更することができます。 しかし、LinuxではMS-SQLServerは使えないので、じゃぁ、ORACLEって手もありますね。 そこで、ORACLEだったら、Net8があるので、多分、 上記のような使い方もできると思うのですが、 ORACLEは、導入コストが高すぎるので、却下されてしまいました。 で、Linux+MySQLにしようかと・・・。 しかし、サーバ機にLinux+MySQL/DBを構築するのはいいのですが、 Windowsなどのクライアントから、ORACLEでいうNet8でODBCのような接続で、 Microsoft-Accessなどを使って、データベースのデータを編集させたいんです。 よろしくお願いします!

  • データ削除の方法

    オラクルのデータベース容量を減らす為に、SQL PLUSにてDELETE文を実行(テーブル別に)しました (テーブルの中身、全件削除ではなく条件に一致した不要なデータのみ削除) 条件に該当するデータは消えましたが、オラクルデータベース自体の容量が逆に増えていました 正しいデータの削除方法を教えて頂きたいのですが。宜しくお願いいたします データベース:ORACLE 9I DATABASE

  • Oracle / DB2のデータ作成ツール探し、Excelから

    Oracle/DB2のデータ作成ツールを探しています。 ご存知であれば、教えてください。 要求: Excelで作ったデータを直接DBに登録できること DBからデータを取得してExcelに出力できること PKの関係で自動的にデータを作成することができること 可能であれば、Excelの列単位で自動的に指定されたタイプでデータ作成できること Excelにテーブル定義を取得できること

  • 異なるサーバのDBデータ同士を結合するには?

    全く違うサーバに載っているDBのデータ同士を結合するいい手段はないでしょうか? DBは両者ともOracleですが9と10という違いがあります。 SERVER1に載っているDBは商品管理のためのものです。主キーは「品ID」です。 SVR2に載っているDBは、保証期間の管理をするためのものです。主キーは「品ID&メーカーID」です。 唯一データのつながりを作れそうなのは両者の主キーのみです。 あとのデータには何にもつながりはありません。 どちらかのサーバに片方のDBのテーブルを作るとかビューを作ればいいかと思いましたが、その方法についてはNGとされています。 (とりあえずその方法でやる場合できますでしょうか???) DBに何かを作ることなくデータの結合をさせれないでしょうか? SQLplusなりSQLクリエイトツールなりどんな方法でもDB自体汚さない限り問題はありません。