oracle database 10g: oracle streams replication

19
Oracle Database 10g: Oracle Streams プリケーション オラクル・ホワイト・ペーパー 2005 5

Upload: others

Post on 12-Sep-2021

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oracle Database 10g: Oracle Streams Replication

Oracle Database 10g: Oracle Streams レプリケーション

オラクル・ホワイト・ペーパー 2005 年 5 月

Page 2: Oracle Database 10g: Oracle Streams Replication

Oracle Database 10g: Oracle Streams レプリケーショ

概要 ...................................................................................................................... 3 Oracle Streamsの概要 .......................................................................................... 3

独自のデータベース..................................................................................... 4 ディレクテッド・ネットワーク ................................................................. 5

Oracle Streamsのアーキテキチャ ...................................................................... 5 取得................................................................................................................. 5

論理変更レコード ................................................................................... 5 ログ・ベースの取得 ............................................................................... 6 REDOログのマイニング ........................................................................ 6

ステージング................................................................................................. 7 伝播 ........................................................................................................... 8

消費................................................................................................................. 8 デフォルト適用 ....................................................................................... 9 ユーザー定義のカスタム適用 ............................................................... 9

Oracle Streamsレプリケーション .................................................................... 10 レプリケーション環境の構成 ................................................................... 11 競合の解消................................................................................................... 12

Oracle Streamsレプリケーションのカスタマイズ ........................................ 13 ルール........................................................................................................... 13

水平サブセット化および垂直サブセット化 ..................................... 14 変換............................................................................................................... 15 異機種環境................................................................................................... 15

OracleシステムからのOracle以外のシステムに対する取得/適用 ... 15 Oracle以外のシステムからのOracleシステムに対する取得/適用 ... 16

Streams構成の例................................................................................................ 17 Oracle Streamsの利用例 .............................................................................. 17 アプリケーション/プラットフォームの移行例 ...................................... 18

結論 .................................................................................................................... 18

Oracle Database 10g: Oracle Streams レプリケーション

2

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 3: Oracle Database 10g: Oracle Streams Replication

Oracle Database 10g: Oracle Streams レプリケーショ

概要

Oracle Database 10g は、統一された情報共有ソリューションである Oracle Streams

を提供します。Oracle Streams では、データベースの更新、イベント、アプリケー

ション・メッセージを取得し配布します。また、自動的に、更新を接続先データ

ベースに適用したり、イベントとメッセージをカスタム・プロシージャおよびア

プリケーションに渡したりすることができます。これらの機能を組み合わせるこ

とで、レプリケーション、メッセージ・キューイング、イベント通知などのソリュー

ションに非常に高い柔軟性がもたらされます。従来のソリューションとは異なり、

Streams を使用して、従来の情報共有ソリューション機能の一部またはすべてを統

合する強力な情報共有ソリューションを単一の機能で作成することができます。

このホワイト・ペーパーでは、Oracle Streams テクノロジの 3 つの基本要素(取得、

ステージング、コンシューム)を使用して Oracle 10g データベースで情報を複製

する方法を説明します。

Oracle Streams の概要

企業が成長し拡大すると、複数のデータベースとアプリケーション間で情報を共

有することが重要になります。従来、企業は、それぞれがビジネスに関する特定

の問題を解決するための様々なテクノロジを共有する情報から、選択していまし

た。これらのターゲット・ソリューションは、当初、容易に使用し実装できると

思われましたが、企業のニーズが簡単なターゲット・ソリューションの機能を超

えた場合、実現できません。このような状況では開発者は、1 つのソリューショ

ンを構築するために複数のツールを実装しなければならず、きわめて複雑になり

ます。

Oracle Database 10g は、単一の統一された情報共有ソリューションである Oracle

Streams を実装しています。Oracle Streams には、イベントを取得、ステージング、

コンシュームするための一連の要素があり、しかもそれらは Oracle データベース

内で簡単に実行することができます。これらのイベントには、アプリケーション

がデータベース・キューにエンキューしたメッセージ、ならびに DML、DDL を

使用した表やプロシージャなどのデータベース・オブジェクトへの変更が含まれ

ます。

ストリームの各要素は、明示的または暗黙的に構成できます。明示的に取得する

と、ユーザー・アプリケーションはメッセージをソース・データベースのステー

ジング・エリアに明示的にエンキューすることができます。Oracle Streams の暗黙

的な取得メカニズムを使用すると、データベースに加えた変更を効率的に取得し、

Oracle Database 10g: Oracle Streams レプリケーション

3

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 4: Oracle Database 10g: Oracle Streams Replication

元のシステムにインパクトを与えることなく複数のリモート・システムに複製す

ることができます。この取得メカニズムでは、REDO ログからデータ変更(DML)

と構造変更(DDL)の両方が抽出され、ステージング・エリアで公開されます。

明示的および暗黙的に取得された変更は、複数のリモートのステージング・エリ

アに伝播することができ、そこから接続先サイトに適用できます。ステージング・

エリア内で適用エンジンがコンシュームした変更は、データベースに反映される

か、またはアプリケーションによってコンシュームされます。Oracle Streams には

柔軟な適用エンジンがあるため、標準またはカスタムで適用された機能を使用す

ることができます。これにより、データを必要に応じて変換できます。

既存のアプリケーションは、 小限の修正または特別な処理で Oracle Streams を使

用することができます。Oracle Streams では、ルールを、データベース、スキーマ、

表など、複数の細分化レベルで指定できます。Oracle Streams の各要素は、これら

のルールを使用して、データベース全体、スキーマのセットまたは個々の表に関

する変更の取得などを容易に構成できます。

ユーザーは、これらの基本要素を使用して、情報をストリームに入れる方法、ス

トリームが流れる方法あるいはノードからノードへ転送される方法、各ノードへ

流れる際にストリーム内のイベントに発生すること、ストリームを終了する方法

などを制御します。ストリームに作用する要素の構成を指定することで、ユーザー

は仕様要件に対応することができます。Oracle Streams の配置を簡単にするため、

オラクル社は特定の市場向けに特別に構成されたアプリケーションを提供してい

ます。

前述のように、Oracle Streams は各種の情報共有ソリューションを実装するために

使用できますが、このホワイト・ペーパーでは、レプリケートされた環境で Oracle

Streams を使用することに焦点を当てます。

独自のデータベース

Oracle Streams テクノロジを使用してレプリケートされたデータベースは、必ずし

も同一ではありません。関係するデータベースは、Oracle Streams を使用して異

なったデータ構造を維持することで、データを適切なフォーマットに変換できま

す。Oracle Streams は、別の宛先に伝播する際の取得時、または接続先サイトでの

適用時など、様々な時点でストリームを変換する機能を提供します。Oracle はユー

ザー定義の変換をサポートするだけでなく、列または表の名前の変更など、 も

一般的な変換に対しても使いやすい宣言的変換を提供します。

また、各サイトのデータもその内容に基づきサブセット化できます。たとえば、

特定の部門の従業員に関係したイベント(つまり変更)のみを部門の識別子列に

基づいて特定の表に適用することができます。Oracle Streams では、変更を自動的

に管理して、表に適用されるデータをサブセット・ルール基準に一致させます。

Oracle Database 10g: Oracle Streams レプリケーション

4

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 5: Oracle Database 10g: Oracle Streams Replication

有向ネットワーク

ローカルに取得されたイベントまたはエンキューされたイベントはローカルに消

費できますが、複数の遠隔地に伝播することもできます。ストリームの有向ネッ

トワーク機能により、中間のデータベースを使用して変更を送信できます。いず

れのデータベースにおける変更も、ネットワーク上にある他の任意のデータベー

スに公開し、またはこれを通じて伝播できます。ステージング・エリア・キュー

に備わったルール・ベースのパブリッシュ/サブスクライブ機能を使用することで、

データベース管理者は各接続先データベースに伝播する変更を選択できるうえ、

メッセージが接続先までに経由するルートを指定できます。この有向ネットワー

ク・アプローチは広域ネットワーク(WAN)でも使いやすく、変更をその後複数

の接続先に送付する場合、各接続先に直接送付するのではなく、ネットワークを

横断してまず 1 つのサイトに送付してから複数の接続先に配布することができま

す。

Oracle Streams のアーキテキチャ

Oracle Streams には、取得、ステージング、コンシュームという 3 つの基本要素が

あります。

取得

Oracle Streams は、ステージング・エリアでイベントの取得をサポートします。こ

れらのイベントは、2 つの方法で取得できます。明示的取得を使用すると、アプ

リケーションは明示的にイベントを生成して、ステージング・エリアに入れます。

または暗黙的取得が使用できます。暗黙的取得は Oracle Streams レプリケーション

によって使用され、表の変更を自動的に取得します。一般に暗黙的取得では、サー

バーはソース REDO ログおよびアーカイブ・ログをローカルにマイニングして、

ソース・データベースの DML イベントと DDL イベントを取得します。または、

代替データベースが類似のプラットフォーム型およびオペレーティング・システ

ム上にある場合、ソース・データベースの REDO ログまたはアーカイブ・ログを

代替データベースにマイニングすることもできます。

論理変更レコード

Oracle Streams は論理変更レコード(LCR)を使用して、1 つの DML 文が変更し

た表中の 1 行の変更を記述します。表中の複数の行に対して作用する 1 つの DML

文は、複数の LCR を生成します。1 つのトランザクションは複数の DML で構成

することができます。各論理変更レコードには、変更した表の名前、変更した列

の元の値と新しい値、およびキー列の値が含まれます。これらの情報により、変

更を接続先サイトの正しい行に適用し、競合を検出することができます。

Oracle Database 10g: Oracle Streams レプリケーション

5

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 6: Oracle Database 10g: Oracle Streams Replication

異なるサイトで発生した変更を区別することが重要な場合があります。そのため、

各 LCR には、変更元に関するソース・データベース情報のタグが付けられます。

これらのタグは一般に、Streams の消費段階で使用されます。場合によって、この

情報を使用して、別サイトで発生し適用プロセスで行われた変更をフィルタ除去

することで、この情報がステージング・エリアに入って元のサイトに逆戻りする

ことを防止します。これは特に、N ウェイ・レプリケーション構成で顕著です。

この構成では、レプリケートされた各サイトが、その変更を構成内の他サイトと

互いに直接やりとりします。この他、たとえばハブ・アンド・スポーク構成では、

他のサイトでの変更も含めてすべての変更を取得することが重要です。この場合、

個々のスポークでの変更を構成内の他のスポークにハブを経由して反映させるこ

とが適当です。

ログ・ベースの取得

Oracle Streams レプリケーションの重要な機能の 1 つは、ログ・ベースの取得のサ

ポートです。ログ・ベースの取得では、表の変更が REDO ログに記録されること

を利用して、クラッシュまたはメディア障害が発生した場合にリカバリ能力を保

証します。REDO ログ・ファイルから変更を直接取得することで、システムのオー

バーヘッドを 小限にすることができます。Oracle は、データベース上のアクティ

ビティの履歴情報を含む REDO 情報を読み、分析し、解釈することができます。

Oracle Streams は、情報をマイニングし、変更データを取得プロセスに出力します。

この情報の出力を容易にするためには、Oracle Streams でレプリケーションする表

で、主キー列などのログ補足情報を REDO ストリームに記録する必要があります。

この取得プロセスは、1 つのリーダー・サーバー、複数のプリペアラ・サーバー、

1 つのビルダー・サーバーのコンポーネントで構成されています。リーダー・サー

バーは REDO ログを読み込んでリージョンに分割します。プリペアラ・サーバー

は、パラレルのリーダー・サーバーが定義したリージョンをスキャンし、REDO

で検出した変更を事前フィルタリングします。この取得プロセスでは、定義され

たルールに基づいて LCR をインテリジェントにフィルタリングできます。これに

より、必要なオブジェクトへの変更のみが取得されます。

ビルダー・サーバーは、プリペアラ・サーバーからの REDO レコードをマージし

て、取得プロセスに渡します。取得プロセスは、変更を論理変更レコードにフォー

マットします。LCR が定義済ルールに適合することがわかると、LCR はステージ

ング・エリアにエンキューされてさらに細かく処理されます。リーダー・サーバー、

プリペアラ・サーバー、ビルダー・サーバーはそれぞれ、パラレル実行サーバー

です。この取得プロセスは、Oracle のバックグラウンド・プロセスです。

REDO ログのマイニング

Oracle Streams は、アーカイブ・ログ・ファイルのマイニング同様、アクティブ

REDO ログのホット・マイニングもサポートします。ホット・マイニングでは、

変更データのアクティブ REDO ログへの書込みと同時に、REDO ストリームが変

更データに対してマイニングされるため、取得の待機時間が削減されます。ステー

ジング・エリアには、取得の選択条件を満たす LCR のみが置かれます。

Oracle Database 10g: Oracle Streams レプリケーション

6

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 7: Oracle Database 10g: Oracle Streams Replication

Oracle Database 10g では、異なるサーバーのソース・データベースの変更を取得す

る新機能が追加されました。REDO 転送サービスは、ソース・データベースでロ

グ・ライター・プロセス(LGWR)を使用して、REDO データをダウンストリー

ムのデータベースに非同期に送信します。同時に、LGWR はソース・データベー

スのオンライン REDO ログに REDO データを記録します。リモート・サーバーは、

そのステージング・エリアに変更を取得し、リモート・ログをマイニングします。

リモート・サーバーが変更のサブスクライバである場合、それらの変更も適用で

きます。これにより、本番データベースから Streams のアクティビティを完全に

オフロードできます。これは、大容量の OLTP データベースにおいて非常に重要

な要件です。また、ログ・ファイルは標準の Oracle ツールを使用してリモートで

記述されているため、環境に適した保護レベルを構成できます。1 つのリモート・

サーバーを使用して、複数のソース・データベースから変更を取得できます。

さらに、Oracle はダウンストリームのデータベースにあるアーカイブ REDO ログ

のマイニングもサポートしています。Oracle がダウンストリームのデータベース

でサポートしているのは、1 回のみのリアルタイム・ダウンストリーム取得プロ

セスですが、このリアルタイム・プロセスは複数のダウンストリームのアーカイ

ブ・ログ・プロセスと共存できます。

ステージング

イベントは、取得後、ステージング・エリアに置かれます。ステージング・エリ

アは、取得されたイベントを格納し管理するよう設計されたキューです。すでに

取得プロセスで LCR としてフォーマットされたデータベース変更は、メモリー内

のキューに格納されて、すべてのサブスクライバによる消費に備えます。将来の

処理のためにアプリケーションがステージング・エリアに明示的にキューしたイ

ベントも、ステージング・エリアに保持されます。キューにより、データの監査

と追跡だけでなく、安全な保有エリアも提供されます。

サブスクライバはステージング・エリアの内容を調べ、そのイベントを表現する

メッセージに関連しているかどうかを判定します。サブスクライバは、ユーザー・

アプリケーション、別のステージング・エリア(通常、別のシステム上にある)

またはデフォルト適用プロセスのいずれかです。サブスクライバは、任意でルー

ル・セットを評価して、メッセージがサブスクリプションで設定された基準を満

たしているかどうかを判定することができます。基準を満たしている場合、その

メッセージはサブスクライバによって消費されます。

サブスクライバがユーザー・アプリケーションの場合、アプリケーションはメッ

セージを消費するために、ステージング・エリアからメッセージを明示的にデ

キューします。サブスクライバが別のステージング・エリアの場合、メッセージ

はそのステージング・エリアに伝播されエンキューされます。サブスクライバが

適用プロセスの場合、サブスクライバは、適用プロセスによってデキューされ消

費されます。

Oracle Database 10g: Oracle Streams レプリケーション

7

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 8: Oracle Database 10g: Oracle Streams Replication

伝播

ステージング・エリアにあるイベントは、他のデータベースのステージング・エ

リアに伝播することができます。ネットワーク・ルーティングを簡素化し WAN

の通信量を減らすために、イベントをすべてのデータベースおよびアプリケー

ションに送信する必要はありません。かわりに、イベントはサブスクライビング・

システムに到達するまで複数のシステム上のキューを経由して送付できます。た

とえば、サイト A、B および C 間のネットワークがあり、サイト A と B およびサ

イト B と C は直接通信可能であるが、サイト C と A は直接通信できないとしま

す。サイト A の変更をサイト B 経由でサイト C に反映するように、ストリームを

構成することができます。サイト B では、変更をローカルに適用することなく、

サイト C にイベントを通過させることができます。変更がこの中間サイトでも要

求された場合、サイト C への通過に影響を与えることなく、サイト B にも変更を

適用できます。

管理者は、ストリームのルーティングをきわめて柔軟に指定できます。ステージ

ング・エリア・キューのルール・ベースのパブリッシュ/サブスクライブ機能を使

用することで、各接続先データベースに伝播する変更を選択すること、および接

続先までにメッセージが経由するルートを指定することができます。異なるサイ

トからの変更を差別化することが重要な場合もあるため、Oracle Streams は、シス

テム全体を通じて各イベントのソース・データベース情報を維持します。管理者

は、他のサイトからの変更も含め、すべての変更を選択するか、またはローカル・

サイトで行われた変更のみを選択して適用エンジンによる変更を選択しないかを

決定します。

コンシューム

ステージング・エリア内のメッセージは、適用エンジンによってコンシュームさ

れます。この場合、メッセージが示す変更はデータベースに適用されるか、また

はアプリケーションによって使用されます。Oracle Streams 適用エンジンは、DML

による変更、DDL による変更、ユーザー提供の LCR およびユーザーによってエ

ンキューされたメッセージを適用します。接続先データベースが Oracle データ

ベースの場合、適用エンジンは Oracle データベースを収容しているシステム上で

ローカルに動作します。柔軟性を高めるために、Oracle Streams 適用エンジンは、

デフォルト適用プロシージャとカスタム適用プロシージャの両方をサポートしま

す。明示的デキューがサポートされているため、アプリケーション開発者は Oracle

Streams の変更の取得および伝播機能を活用しながら、Oracle Streams を使用して

データの変更をアプリケーションに通知できます。Oracle Streams レプリケーショ

ンでは、デフォルトの適用プロシージャを使用すること、または必要に応じてカ

スタム適用プロシージャを作成することを選択できます。

Oracle Database 10g: Oracle Streams レプリケーション

8

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 9: Oracle Database 10g: Oracle Streams Replication

デフォルト適用

デフォルト適用エンジンは、取得された DML と DDL の変更およびユーザー提供

のLCRを自動的に適用します。宛先の行が変更され、あるべき元の値がない場合、

デフォルト適用エンジンは競合を検出します。競合が検出されると、必要に応じ

て宣言的競合解消ルーチンまたはユーザー記述による競合解消ルーチンを呼び出

すことができます。

適用エンジンは、適用コーディネータ、リーダー・サーバー、1 つ以上のアプラ

イサーバーなど、一連のサーバー・プロセスを含むバックグラウンド・プロセス

です。サーバーは、取得により生成された LCR のためにトランザクションを組み

立てします。適用コーディネータは、トランザクション依存性および DML レベ

ル依存性のスケジューリングを実行し、処理を 大限、同時実行します。適用サー

バーは実際に変更を適用します。適用コーディネータと適用サーバーは、通常、

同じ Oracle インスタンスにあるため、依存性スケジューリングに関連したネット

ワーク・ラウンドトリップは発生しません。適用エンジンは、変更を正しいフォー

マットまたは各 LCR の名前に変換するため、宣言的変換またはユーザー定義によ

る関数を呼び出すことができます。

複数のデータベースからの変更は複数の接続先ステージング・エリアに送付され

ることが必要です。次に複数の適用エンジンが使用され、各ソース・データベー

スからの変更が同時に適用されます。各適用エンジンは、1 つのソース・サイト

からの変更のみを適用します。異なるサイトからの変更を差別化することが重要

な場合もあるため、Oracle Streams は、システム全体を通じてソース・データベー

ス情報を維持します。管理者は、他サイトからの変更も含め、すべての変更を取

得するか、またはローカル・サイトで行われた変更のみを取得して適用エンジン

による変更を取得しないかを決定します。

ユーザー定義のカスタム適用

ユーザー定義によるカスタム適用プロシージャにより、適用されるイベントを完

全に制御できます。カスタム適用では、適用エンジンは、LCR またはユーザーが

エンキューしたメッセージをユーザー定義プロシージャまたは適用ハンドラに適

用します。これにより、メッセージがきわめて柔軟に処理されます。ユーザーは、

非 LCR メッセージ用の複数の適用ハンドラ、および特定の表で実行される各種の

DML 操作(挿入、更新または削除)の個別の適用ハンドラを定義して、適用処理

で 大限の柔軟性を得ることができます。

たとえば、ユーザーはこのカスタム適用機能を使用して、Employee 表に対し全削

除の適用をスキップするプロシージャを記述することができます。この使用例で

は、Employee 表に対する削除を実行する LCR の動作のみが影響を受けます。

Employee 表に対する挿入と更新は、デフォルト適用エンジンを使用することで継

続されます。したがって、他サイトからの削除 LCR は、Streams サイト・レプリ

カでは実行されず、Employee 表のすべての行はレプリカ・サイトで存続します。

このように、カスタム DML ハンドラにより、ユーザーは適用エンジンの動作を

完全に管理でき、カスタムの Streams サイトの実装において、あらゆる業務要件

を満たすことができます。

Oracle Database 10g: Oracle Streams レプリケーション

9

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 10: Oracle Database 10g: Oracle Streams Replication

Oracle Streams レプリケーション

次の図に、レプリケーションで使用されるストリームの構成要素を示します。

Oracle Streams のレプリケーションでは変更をソース・データベースから取得し、

1 つ以上のリモート・データベースにステージングし伝播します。その後、変更

は各ターゲット・データベースで消費または適用されます。

LCR またはユーザー・

メッセージ

ユーザー・アプリケーション DConsumes Messages

LCR またはユーザー・

メッセージ

ユーザー・アプリケーション CProduces Messages

Oracle データベース Oracle データベース

LCR またはユーザー・

メッセージ プロセスの

適用

取得 プロセス

キュー キュー

ユーザー・メッセージ

LCR ユーザー・メッセージLCR LCR

LCR ユーザー・メッセージ

LCR LCR LCR ユーザー・メッセージ

伝播 メッセージ変更

ユーザー・

メッセージ 変更Redo ログ

メッセージ ハンドラー・ プロシージャ

DML ハンドラー・

プロシージャ

DDL ハンドラー・

プロシージャ

変更

データベース・オブジェクトデータベース・オブジェクト

この図では、100 の従業員 id(empid)を持つ EMP 表で列を変更する Update 文が

示されています。変更は REDO ログに記録されます。EMP 表の変更を収集するた

めに事前に構成された取得プロセスは、変更を REDO ログから取得し、情報を論

理変更レコード(LCR)にフォーマットし、LCR をローカル・データベースのス

テージング・エリアに置きます。この例では、取得プロセスはパフォーマンス上

の理由からソース・データベースで実行されますが、別の場所で取得プロセスを

実行するように選択もできます。次に、取得された LCR は、このソース・データ

ベースのステージング・エリア(またはキュー)から伝播され、EMP 表の変更に

サブスクライブされた他のデータベースに送信されます。また、この第 2 データ

ベースの適用エンジンは、EMP 表の変更を受け取るように構成されています。一

度変更が新しいサイトに伝播されると、この第 2 データベースでローカル・デフォ

ルト適用プロセスにより、変更がデータベースに自動的に適用されます。

Oracle Database 10g: Oracle Streams レプリケーション

10

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 11: Oracle Database 10g: Oracle Streams Replication

レプリケーション環境の構成

Oracle Streams は、Oracle エクスポート・ユーティリティ、インポート・ユーティ

リティまたは RMAN(Recovery Manager)の複製データベース機能を使用して、

ターゲット・サイトの複製オブジェクトをインスタンス化する簡単な方法を提供

します。このインスタンス化は、Streams 構成のいずれの既存サイトにも影響を及

ぼすことなく、ターゲット・データベースで実行されます。すべてのサイトがそ

れぞれの作業を処理しながら、新しいサイトへ向けてインスタンス化が進行しま

す。ソース・サイトで新オブジェクトが作成されて、レプリケーションのために

変更を取得すると、そのオブジェクトの Streams レプリケーション・メタデータ

には適切な SCN のマークが付けられ変更が失われないようにします。エクスポー

トとインポートを使用しオブジェクトのコピーがターゲット・サイトで作成され

ると、システムはコピー済データのソース SCN を記録し、オブジェクトのコピー

後にコミットされたすべての変更の適用を開始します。

Oracle Streams 環境の構成、管理および監視を簡素化するために、Oracle Enterprise

Manager のコンソールに Streams ツールが用意されています。この Streams ツール

が提供するウィザードにより、Streams レプリケーション環境を構成することがで

きます。この Streams ツールを使用して、スクリプトを生成し、このスクリプト

を変更して特定の要件を満たすこともできます。

もう 1 つ、共通のレプリケーション・シナリオを容易に構成する方法として、レ

プリケーション用にカスタマイズされた API が提供されます。

DBMS_STREAMS_ADM パッケージのコマンドを使用すると、データベース管理

Oracle Database 10g: Oracle Streams レプリケーション

11

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 12: Oracle Database 10g: Oracle Streams Replication

者は表、スキーマまたはデータベース・レベルのレプリケーション環境をすばや

く実装できます。このパッケージは、プロセスのルールの自動生成を含め、指定

された Streams プロセスの種類に従って、管理者に複数の構成手順を提供します。

たとえば、次の API コールは、ローカル・データベース(source_database=>null)

と NYC データベース間の HR スキーマに加えられた変更をレプリケートする

Streams 環境を構成します。

DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS( schema_names=>'HR', source_directory_object=>null, destination_directory_object=>null, source_database=>null, destination_database=>'NYC', bi_directional=>TRUE, instantiation=> DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORK );

この簡単なコマンドの発行により、双方向のレプリケーション環境が作成され、2

つのサイト間の DML 変更がレプリケートされます。Oracle は Data Pump のネット

ワーク・オプションを使用して、レプリケーションされたサイトの初期インスタ

ンス化を実行するため、レプリケーション元とレプリケーション先のディレクト

リ・オブジェクト・パラメータは NULL に設定されます。

Data Pump のエクスポート/インポート操作では、レプリケーション・サイトの

Streams プールを使用します。Streams プールは、システム・グローバル領域のメ

モリーの一部です。このシステム・グローバル領域は、Streams レプリケーション

が取得および適用プロセスにメモリーを提供するために使用されます。このプー

ルのサイズは、SGA_TARGET 初期化パラメータがゼロ以外の値に設定された場合、

Oracle の自動共有メモリー管理機能によって自動的に管理されます。

前述したように、双方向のレプリケーション環境では、競合解消ルーチンを指定

することを強くお薦めします。管理者は、必要に応じてルールと Streams プロセ

スに関連した他のパッケージを使用して、これらの各手順を個別に実行できます。

競合の解消

レプリケーションのサポートに Oracle Streams を使用すると、エンド・ユーザーは、

すべてのレプリケーション・アクティビティにおいて、ソースと接続先の両方の

データベースで読込みと書込みができます。ユーザーはどこからでも同一の表の

異なるコピーを更新できるため、同じデータ要素の更新が同時に別のデータベー

ス・サイトで行われることがあります。この場合、更新の競合が発生します。デ

フォルトの適用メカニズムは、着信したレプリケーション変更が適用されるたび

にこれらの競合を検出します。Oracle では、 新のタイムスタンプや上書きなど

の競合を自動的に解消する内蔵型競合解消ルーチンを提供します。各表に対して、

異なる解消方法を選択できます。また、ユーザーは、独自のルーチン作成を選択

して、特定のビジネス・ニーズに合せた解消ルールを採用することもできます。

解消されなかった競合はデータベース内に記録され、手作業で競合を解消後、特

別に処理されるか再度実行されます。

Oracle Database 10g: Oracle Streams レプリケーション

12

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 13: Oracle Database 10g: Oracle Streams Replication

Oracle Streams レプリケーションのカスタマイズ

Oracle Streams のルールと変換の組合せにより、取得、伝播および適用するイベン

トまたは変更を制御できます。

ルール

Oracle Streams の各要素では、一連のルールを使用して管理対象のイベントを区別

します。ユーザーが指定したルールは、変更イベントを取得してステージング・

エリアに選択的にエンキューすることで実施されます。同様に適用エンジンも、

適用のために定義されたルールに基づいて、変更を選択的に適用します。ルール

は、複数のステージング・エリア間でイベントを選択的に伝播する場合にも使用

されます。ルールにより、個々の表に加え、データベース全体またはスキーマの

選択を指定できます。ルールは、TRUE か FALSE かを評価する SQL のような式

です。ルールはまた、イベント自体の内容に基づいてイベントを制限する場合に

も使用できます。タグのない DML の HR スキーマのみに変更を制限されたルール

の例を、次に示します。

:dml.get_object_owner() = 'HR' AND :dml.is_null_tag() = 'Y'

このルールでは、タグの使用に注意してください。多くの場合、ローカルなデー

タベースの変更にはタグがありませんが(NULL タグ)、他のデータベースから

適用された変更では、NULL 以外の値を使用して REDO ログにタグが付けられま

す。

簡単にするために、ルールはルール・セットと呼ばれる名前付きの集合に編成さ

れます。ルールは、容易にルール・セットに追加したりルール・セットから排除

することができます。複数のルールが 1 つのルール・セットに属することも、複

数のルール・セットが同一の個別ルールを含むこともできます。これらのルール

の管理を容易にするために、DBMS_RULES_ADM パッケージが用意されています。

各 Streams プロセスでは、正のルール・セットと負のルール・セットという 2 つ

のルール・セットが使用され、ルール・セットの評価によって、各プロセスの既

定の基準を満たすイベントが効率的に特定されます。正のルール・セットは、

Streams の処理に含まれるオブジェクトのルールを識別します。負のルール・セッ

トは、Streams の処理から排除するオブジェクトのルールを識別します。各 Streams

プロセスは、まず負のルール・セットを評価し、負のルール・セットのルールに

対応するメッセージを排除します。プロセスは次に正のルール・セットを使用し

て、ルールを評価します。正のルール・セットのルールを適用して TRUE と評価

されたメッセージのみがプロセスに渡されます。

Oracle Database 10g: Oracle Streams レプリケーション

13

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 14: Oracle Database 10g: Oracle Streams Replication

水平サブセット化および垂直サブセット化

Oracle Streams 要素はオブジェクトのサブセット化をサポートしています。そのた

め、宛先に必要なのはソースのデータ・サブセットに対するサブスクライブのみ

です。本社データベースと支店データベースを含む典型的な分散型の使用例を考

えてみます。支店データベースは、支店に関連したデータのみを必要とします。

支店は、その支店に影響するイベントのみをサブスクライブします。他の支店は

異なるサブセットを受け取ります。

Oracle Streams は、1 つのサブセットから別のサブセットへのデータの移行をサ

ポートしています。サブスクリプションは内容ベースであり、内容が変化すると

サブスクリプションも変化します。このため、あるサブセット・データベースか

らデータを削除し、別のサブセット・データベースへの挿入が必要な場合があり

ます。Streams では変更と行の移行課題が自動的に管理され、レプリカに適用され

たデータにサブセット基準が反映されます。特定の宛先への伝播サブセット・ルー

ルを構成することで、サブセット基準と一致しない Insert LCR と Delete LCR は、

レプリカ・サイトへ送信されません。変更がレプリカに影響しないか Update LCR

を調べます。影響する場合、正しく変更を適用するために、更新を適切なコマン

ド(insert または delete)に変換します。次の例では、カリフォルニア州(CA)の

顧客のデータのみを保持するよう適用サイトのルールを構成する方法を示します。

Customers 表は HR スキーマにあり、データのサブセットは、MYREP.WORLD デー

タベースへレプリケートされ Streams キューに入れられます。

DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES( table_name => ‘HR.CUSTOMER’, dml_condition => ‘STATE=’’CA’’’, streams_type => 'PROPAGATION', queue_name =>'strmadmin.streams_queue', destination_queue_name => ‘[email protected]’ source_database => ‘MYDB.WORLD’ );

この例では、CUSTOMER 表には STATE 列が含まれ、各レプリカ・サイトは各州

の顧客のみに制限されます。このインスタンスでは、州=CA です。顧客が挿入ま

たは削除する LCR に、CA という州の列がある場合、LCR はターゲット・サイト

へ送信されます。挿入または削除がその他の州を対象としている場合、LCR は送

信されません。ただし、顧客表の更新で、顧客の Joe がカリフォルニア州からニュー

ヨーク州へ転居したことが示されている場合、Streams は Joe がカリフォルニア州

の顧客としてレプリカに表示されないよう、そのレコードを自動的に排除します。

また、顧客表の更新で、顧客 Jim がペンシルバニア州からカリフォルニア州に転

居したことが示されている場合、Jim の顧客レコードは自動的にデータベースに挿

入されます。

データの垂直サブセット化は、次のセクションで説明するように、変換で実行で

きます。

Oracle Database 10g: Oracle Streams レプリケーション

14

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 15: Oracle Database 10g: Oracle Streams Replication

変換

変換とは、取得、伝播または適用されたオブジェクトのフォームが変わること、

またはオブジェクトが保有するデータが変わることです。Oracle Streams は、表、

スキーマまたは列の名前変更、特定のサイトの表に対する列の追加または削除な

ど、各種の宣言的変換をサポートしています。また、Oracle Streams はユーザー指

定の変換もサポートします。これらのカスタム変換は、ソース・データ型を入力

としてターゲット・データ型のオブジェクトを戻す PL/SQL 関数によって表現で

きます。

宣言的変換またはカスタム変換が使用された場合、指定されたオブジェクトのイ

ベントはすべて、変換を使用して操作されます。カスタム変換は、ステージ・エ

リアに置かれたイベントまたはステージング・エリアから削除されたイベントと

して実行できます。宣言的変換が実行されるのは、取得の間のみです。取得時の

変換では、メッセージが変更されてからステージング・エリアへ挿入されます。

たとえば、ある企業が、その他のサイトには表示したくない機密情報の列を含む

表をレプリケートするとします。取得時の変換を使用すると、その列をイベント

または LCR から排除できます。その結果、他のサイトはこの制限情報を見ること

ができません。カスタム変換は伝播のためにも構成できます。これは、メッセー

ジをフォーマット後、次のリモート・サイトに送る場合に便利です。 後に、カ

スタム変換は、イベントが適用プロセスで消費されるときに指定できます。これ

は、メッセージを特定の宛先に適した方法でフォーマットする場合に便利です。

異機種環境

Oracle Streams はオープンな情報共有ソリューションであり、Oracle と Oracle 以外

のシステム間で異種レプリケーションをサポートしています。Oracle Transparent

Gateway を使用することで、Oracle データベースで 初に実行された変更を Oracle

以外のプラットフォームに適用できます。Oracle 以外のプラットフォームへのレ

プリケーションは、DML による変更にかぎり実行できます。

レガシー・アプリケーションとの統合というニーズを満たすために、Oracle キュー、

Websphere MQ キュー、Tibco キュー間のメッセージ伝播を自動化するメッセー

ジ・ゲートウェイが提供されます。

Oracle システムからの Oracle 以外のシステムに対する取得/適用

DML による変更の取得と適用を、Oracle ソースから Oracle 以外の宛先に実装する

ために、Oracle システムはプロキシとして機能し、Oracle の接続先サイトで通常

実行される適用エンジンを実行します。次に Oracle システムは、透過的ゲートウェ

イを経由して Oracle 以外のシステムと通信します。変更は Oracle データベース自

体でデキューされ、ローカルの Oracle 適用プロセスにより、Oracle 以外のデータ

ベース固有の透過的ゲートウェイ経由のネットワーク接続全体で、Oracle 以外の

システムに適用されます。

次の図に、DML 文の異種伝播の様子を示します。

Oracle Database 10g: Oracle Streams レプリケーション

15

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 16: Oracle Database 10g: Oracle Streams Replication

Oracle データベース

Oracle 以外の

データベース

キュー

異機種 サービス

LCR の デキュー

データベース・

オブジェクト

変更の 適用プロセスの

適用

Oracle 以外のシステムからの Oracle システムに対する取得/適用

Oracle 以外のデータベースから Oracle データベースに変更を伝播する場合、ユー

ザーは Oracle 以外のデータベースで行われた変更を取得するアプリケーションを

書き込む必要があります。このアプリケーションは、トランザクション・ログか

らの読込みまたはトリガーを使用して、変更を取得します。アプリケーションは、

これらの変更を集めて順位を付け、トランザクションに変更したうえで、Oracle

で定義された LCR フォーマットに変換して、ターゲットの Oracle データベースの

ステージング・エリアに公開します。

Oracle 以外の

データベース Oracle

データベース

LCR の デキュー

プロセス

の適用

取得の 変更

LCR の エンキュー ユーザー・

アプリ ケーション-

キュー

変更の

適用

データベース・

オブジェクト

Oracle Database 10g: Oracle Streams レプリケーション

16

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 17: Oracle Database 10g: Oracle Streams Replication

Streams 構成の例

Oracle Streams は、様々な市場で顧客の情報共有要求を満たすために 大限の柔軟

性をもって設計されています。たとえば、顧客は Oracle Streams レプリケーション

を使用して、N ウェイ・マスターまたは有向ネットワーク構成の作成、データ・

プロビジョニング・ソリューションの実装、プラットフォームやアプリケーショ

ンの移行時に高可用性を確保することなどができます。顧客は Oracle Streams の全

機能を活用して、複数の市場にまたがる構成を作成し、新しいクラスのアプリケー

ションを使用できます。また、すべての配置とその関連メタデータには互換性が

あります。たとえば、データウェアハウスをロードするため、または双方向のレ

プリケーションを可能にするため、レプリケーションのインストールを簡単に拡

張できます。そのための完全な再構成は必要ありません。

次に、Oracle Streams の柔軟性を表す例を示します。ある企業の IT 組織で、重要

なグローバル・アプリケーションのデータ可用性を 24 時間体制で保持する必要が

生じました。この組織の方針は、この重要なアプリケーションの必須データすべ

てを、地理上の異なる 3 つのデータベースで保持することです。ニューヨーク本

社のアナリストたちが随時問合せを実行できるよう、 新の情報を収納した報告

データベースを維持し、また障害時リカバリ・データベースをニューヨーク本社

以外で維持することが重要な要件です。さらに、Sybase データベースに収納され

た既存アプリケーションとデータを共有することも要件になります。

Oracle Streams の利用例

Oracle Streams を使用して、3 つの地域サイト(ニューヨーク、ロンドン、東京)

で構成された N ウェイ構成でデータを複製します。各地域でサブスクライブされ

た表に変更が生じた場合、Streams ログ・ベースの取得によりこの変更が各サイト

で取得され、キューでローカルにステージングが実行されます。各地域で取得さ

れたあらゆる変更は、他の各地域のデータベースに転送され、各サイトのあらゆ

る変更を全サイトに反映し、世界中で、完全なデータをサブスクライブされたオ

ブジェクトに提供します。

Oracle Database 10g: Oracle Streams レプリケーション

17

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 18: Oracle Database 10g: Oracle Streams Replication

更新は、各地域データベースで受信されたとき自動的に適用されるため、Oracle

Streams のデフォルト適用エンジンを使用して変更が適用されます。更新が適用さ

れるたびに Oracle Streams は競合がないか点検し、ある場合はそれを解消します。

Streams はまた、Oracle 以外のデータベースと特定の表のデータを交換するために

も使用できます。Streams 適用エンジンは、Oracle Transparent Gateway for Sybase

を使用して、Oracle データベースに利用する同一のメカニズムによって変更を

Sybase データベースにも適用します。

報告と障害時リカバリのためのデータベースは、ニューヨーク・データベース・

サイトに収容されます。報告データベースは、関連アプリケーション表の読込み

専用コピーを持つ完全な機能を備えた Oracle データベースです。報告サイトは、

これらのアプリケーション表の変更を取得するように構成されません。この報告

データベースは、Streams によりその構成や利用について制限されることはありま

せん。

アプリケーション/プラットフォームの移行例

この例の 3 つのサイトは、N ウェイ・レプリケーション環境に参加しているため、

ダウンタイムを必要とせずにこれら 3 つのうちのいずれか、またはすべてのサイ

トでアプリケーションまたはプラットフォームの移行を実行できます。各サイト

がアップグレードされると、ユーザーは残りの 2 つのサイトに再ルーティングさ

れます。1 つのサイトの移行が完了すると、このサイトは再び更新できます。移

行が完了すると、他の場所で行われた変更は自動的にこのサイトに伝播されます。

この機能は、現在 Streams レプリケーション環境に参加していない場所でも役立

ちます。 初にサイトの一時レプリカを作成しておくと、ダウンタイムを発生さ

せることなく、アプリケーションまたはプラットフォームの更新をサイトで簡単

に実行できます。前述した Oracle Streams の 1 ステップ API は、このプロセスを

大幅に簡素化します。元のサイトを移行している間、ユーザーはレプリカ・サイ

トにルーティングされます。元の場所の移行が完了すると、レプリカ・サイトと

自動的に再同期化され、変更がレプリカからソースに伝播されます。ユーザーは、

ダウンタイムなしで、新しく移行が完了した場所にリルーティングされます。

結論

Oracle Streams は、メッセージ・キューイングおよびデータ・レプリケーション機

能を統一する革新的な概念により、データベース間およびデータベース・クラス

タ間でデータ共有を簡単に実現します。Oracle Streams では、取得、ステージング、

使用という基本要素をユーザー定義による変換および異種相互運用と組み合わせ

ることにより、今までにない も高度な構成が形成されます。この柔軟性に富む

テクノロジにより、今日のグローバル企業が遭遇する現実社会の状況に対応する

ための柔軟な構成が実現します。Oracle Streams レプリケーション・テクノロジは、

複雑な分散されたデータベース環境で、データを共有するための も優れた機能

です。

Oracle Database 10g: Oracle Streams レプリケーション

18

Oracle Corporation 発行「Oracle Database 10g: Oracle Streams Replication」の翻訳版です。

Page 19: Oracle Database 10g: Oracle Streams Replication

Oracle Database 10g: Oracle Streams Replication 2005 年 5 月 寄稿者: Patricia McElroy, Maria Pratt Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com Copyright © 2005, Oracle. 無断転載を禁ず。 この文書はあくまで参考資料であり、掲載されている情報は予告なしに変更されることがあります。 オラクル社は、本ドキュメントの無謬性を保証しません。また、本ドキュメントは、法律で明示的または暗黙的に記載

されているかどうかに関係なく、商品性または特定の目的に対する適合性に関する暗黙の保証や条件を含む一切の保証

または条件に制約されません。オラクル社は、本書の内容に関していかなる保証もいたしません。また、本書により、

契約上の直接的および間接的義務も発生しません。本書は、事前の書面による承諾を得ることなく、電子的または物理

的に、いかなる形式や方法によっても再生または伝送することはできません。 Oracle、JD Edwards、PeopleSoft は、Oracle Corporation および関連会社の登録商標です。他の製品名は、それぞれの

所有者の商標です。