1

私は2つのOracle 11gデータベースを持っています.本番とバックアップでは、一部のデータがMQメカニズムを介して複製され、残りのデータはまだ解決策が必要です. 基本的に、私が必要としているのは、本番データベースで非常に高速に更新されているテーブル内の列を同期的に複製する方法です。レプリケーションは瞬時に行う必要があるため、本番データベースがダウンした場合に備えて、そのすべての情報 (その列) を準備してバックアップで更新する必要があります。それは一方でです。一方、パフォーマンスは、レプリケーション中に本番環境で変更されるべきではありません。テーブルには数十万行が含まれる可能性がありますが、すべてを複製する必要はありません (データ IN とデータ OUT があります - データ OUT の場合のみ、その列をバックアップで複製する必要があります)。ビュー、トリガー、ストリームを具体化することを考えていました。トリガーの場合は...簡単ですが、そう言う人もいます' 推奨される方法ではありません。私はdbリンクとそのようなトリガーを行いました:

after update of column
for each row
update table@backup set column = :NEW.column...

マテリアライズドビューの場合...マテリアライズドビューのレコードを使用して、Production.tableで更新された最後の行のみをbackup.tableで実際に更新する方法がわからないため、解決策はまだ考えていません。

ストリームの場合..私はこれらに精通していません.列の変更のみを複製できるかどうか、またはテーブル全体を複製してから、バックアップ時に選択などを実行できるかどうかは本当にわかりません.

何か案は?どうもありがとう

4

2 に答える 2

1

おそらく、Oracle Streams と、場合によっては Change Data Capture の組み合わせが必要になるでしょう。また、Oracle は Streams を廃止する方向に進んでおり、将来のユーザーが Goldengate に移行することを奨励していることにも注意してください。ここを参照してください: http://docs.oracle.com/cd/E16655_01/server.121/e17642/deprecated.htm#BABEAJJE

したがって、私が理解できる要件は次のとおりです。

  1. 100%確実なデータ複製。
  2. ソースへのパフォーマンスへの影響はありません。

これらのどちらも単独で達成することはできません。あらゆる種類のレプリケーションでは、ソース システムとターゲット システムの負荷、IO、CPU、ネットワーク トラフィックとレイテンシ、DB コミット、その他すべてに基づいて、システム間で常に遅延が発生します。そして、はい、これらのアイテムのレイヤーを混同しています。それらのすべてが「リンゴからリンゴへ」というわけではありませんが、ポイントは、複製を行うために多くのことが起こらなければならないということです.

また、プライマリ データベース システムがダウンした場合に、このセカンダリ データベース システムにフェールオーバーする方法についても少し混乱しています。プライマリがダウンした場合にセカンダリへの書き込みを許可する予定ですか? アプリケーションは、プライマリの障害を検出できるほどスマートですか? 実際のビジネス要件が「アプリケーションは 99.9% (または任意の割合) の可用性を備えている必要がある」である場合、レプリケーションがあなたの望む答えであるかどうかはわかりません。

できることは次のとおりです。

  1. 管理者/ビジネス ユーザーに、許容できるダウンタイムのレベルを定義してもらいます。彼らが「なし!」と言ったら。次に#2に進みます。無限のコストについて質問せずに完璧を求める人が時々います。
  2. いくつかのオプションをプレゼンテーションにまとめて、次のような内容を伝えます。

「99.9% の計画外のダウンタイムの場合、これは 1 か月あたり 45 分のダウンタイム (31*24*60*.001) であり、災害から回復するのに 24 時間かかり、最悪の場合、最後の数時間までデータが失われます。シナリオでは、スタンドアロンの Oracle サーバーを実行し、バックアップ ハードウェアを手元に用意して、X ドル/ユーロなどの費用がかかります。

99.99% の場合、定期的なバックアップの復元などを行う 2 台目のサーバーが必要で、5 倍の費用がかかります

99.999% を達成するには、レプリケーション、複数のマスター、ソフトウェア アプリケーションの更新、より高いレベルのテスト、より多くのスタッフなどが必要であり、10 倍または 20 倍程度の費用がかかります。」

これらの数字とシナリオはすべて私が純粋に作り上げたものですが、どのように機能するかを見ることができます。実際にこれを行うのにどれだけの費用がかかるか、そしてそれを維持するための費用に直面すると、人々は考えを変えることがよくあります。

費用がかかり、面倒な詳細をすべて説明する前に、最初にレプリケーションが本当に必要かどうかを確認しようとしています. 以前にレプリケートされたシステムで作業したことがあり、アップタイムが増加するはずですが、Streams と CDC を使用したレプリケーションは非常に複雑であり、多くの場合、まったく別の一連の障害モードを作成することを警告します。

于 2014-04-15T19:22:15.593 に答える