Chat now with support
Chat with Support

SharePlex 8.6.6 - 管理ガイド

このガイドについて このガイドで使用されている表記規則 SharePlex の概要 SharePlex の実行 複数の SharePlex インスタンスの実行 sp_ctrl でのコマンドの実行 SharePlex パラメータ 複製のための Oracle 環境の準備 設定ファイルの作成 オープンターゲットのターゲットへの複製の設定 複製方法の設定 分割レプリケーションの設定 名前付きキューの設定 変更履歴ターゲットを維持するための SharePlex の設定 Oracle DDL の複製 エラー処理のセットアップ データの変換 SharePlex セキュリティ機能の設定 実稼動環境での複製のアクティベート SharePlex の監視 複製上の問題の防止および解決方法 非同期データの修復 Oracle の高可用性を維持するための手順 アクティブな複製環境の変更 Oracle アプリケーションのパッチまたはアップグレードの適用 ソースまたはターゲット上の Oracle データのバックアップ Capture プロセスのチューニング Post プロセスのチューニング 付録 A:ピアトゥピアの説明図 付録 B:SharePlex 環境変数

高可用性を維持するための複製の設定

複製方法の設定 > 高可用性を維持するための複製の設定

ここでは、高可用性を実現するために SharePlex をセットアップする方法(ソースデータベースのミラーであるセカンダリ Oracle データベースへの複製)について説明します。この方法では、相反する 2 つの SharePlex 設定を持つ双方向レプリケーションを使用します。セカンダリ(スタンバイ)マシンの設定はアクティベートされた状態のままで、このシステムの Export プロセスはプライマリマシンに障害が発生した場合にフェイルオーバーする準備が整った状態で停止しています。

この方法では、以下のようなビジネス要件がサポートされます。

  • ディザスタリカバリ
  • メンテナンスサイクルまたは機械的障害発生時のビジネスアプリケーションの継続的な運用

この方法では、SharePlex は以下のように動作します。

  • 通常の状況では、SharePlex は、プライマリデータベースからセカンダリデータベースに変更を複製します。
  • プライマリシステムまたはデータベースがオフラインになり、ユーザーがセカンダリシステムに転送されると、SharePlex は、その変更をキャプチャし、プライマリシステムが回復するまでそのシステムのデータをキューに入れます。
  • プライマリシステムが回復すると、SharePlex はプライマリシステムをその変更内容で更新し、プライマリデータベースからのキャプチャと複製を再開します。

サポートされるターゲット

Oracle

機能

この複製方法では、名前付き export キューおよび post キューの使用がサポートされます。

注: 列マッピングおよび分割レプリケーションは、高可用性設定には適していません。ソースオブジェクトとターゲットオブジェクトを別の名前にすることはできますが、その場合、高可用性構造の管理がより複雑になります。

必要条件

  • SharePlex インストールガイド』の手順に従って、システムの準備、SharePlex のインストール、およびデータベースアカウントの設定を行います。
  • 複製先の環境を用意します。「複製のための Oracle 環境の準備」を参照してください。
  • すべてのオブジェクトが欠けることなく両方のシステムに存在している必要があります。
  • ターゲットオブジェクトとソースオブジェクトの構造と修飾名は同じである必要があります。
  • すべてのシステムでアーカイブログを有効にします。

  • SharePlex を除くすべてのユーザーに対して INSERT、 UPDATE および DELETE 操作を拒否するスクリプトを作成します。

フェイルオーバーのために、以下の操作を行う必要があります。

  • プライマリシステム上で使用するアプリケーションを、セカンダリシステム上で利用可能にします。
  • インスタンス外部の複製されていないデータベースおよび重要なファイルをセカンダリシステム上にコピーします。
  • フェイルオーバー手順の間に実行可能な、すべてのユーザーに対して INSERT、UPDATE および DELETE の権限を許可するスクリプトを作成します。
  • フェイルオーバー実行中、セカンダリシステム上で制約を有効にするスクリプトを作成します
  • ユーザーをセカンダリシステムに再配置するために、フェイルオーバーの手順を開発します。

注: Oracle ホットバックアップを使用してセカンダリインスタンスを作成する場合は、そのスクリプトを保持します。セカンダリインスタンスを修正し、プライマリインスタンスを再度作成できます。

構文で使用されている規則

このトピックの設定構文に使用されているプレースホルダは、以下の項目を表します。

  • hostA は、プライマリシステムです。

  • hostB は、セカンダリシステムです。
  • ownerA.object は、hostA 上のオブジェクトの完全修飾名またはワイルドカード指定です。
  • ownerB.object は、hostB 上のオブジェクトの完全修飾名またはワイルドカード指定です。
  • oraA は、hostA 上の Oracle インスタンスです。
  • oraB は、hostB 上の Oracle インスタンスです。

重要!

設定

高可用性設定では、相反する 2 つの設定を使用します。データベース内のすべてのオブジェクトを複製するには、config.sql スクリプトを使用して設定プロセスを簡略化できます。「スクリプトを使用した設定ファイルの作成」を参照してください。

ソースシステム(プライマリシステム)での設定

Datasource:o.oraA

   
ownerA.object ownerB.object hostB@o.oraB

ターゲットシステム(セカンダリシステム)での設定

Datasource:o.oraB

   
ownerB.object ownerA.object hostA@o.oraA

フェイルオーバー用のシステムの準備

  1. セカンダリシステム(最初はパッシブシステムになるシステム)で sp_ctrl を実行します。次に、以下のコマンドを実行してセカンダリシステム上の Export プロセスを停止して、セカンダリシステムでの偶発的な操作(スケジュールされたジョブによるデータの変更など)がプライマリシステムに複製されないようにします。システム間の役割の切り替えが必要になるまで、そのシステム上の SharePlex はこの状態である必要があります。
  2. 初期同期と起動を実行します。この手順の間にソース設定をアクティベートします。詳細については、「実稼動環境での複製のアクティベート」を参照してください。
  3. セカンダリシステムで Export プロセスが停止していることを確認した後、このシステムで設定をアクティベートします。セカンダリマシンの設定はアクティベートされた状態のままになりますが、Export プロセスが停止していて、ユーザーアクティビティもないため、システムはフェイルオーバーの準備が整った静的な状態のままとなります。
  4. セカンダリ Oracle インスタンスにリンクされている SharePlex インスタンスを監視して、SharePlex 以外の DDL または DML の変更が行われていないことを確認します。そのためには、以下の操作を実行します。sp_ctrlqstatus コマンドを使用して、セカンダリシステム上の export キューの status を表示します。システム上の Capture プロセスが同一システム上の Post プロセスを無視するため、キューは空である必要があります。export キューにメッセージがある場合は、セカンダリシステムでトランザクションが発生したか、または SP_OCT_REPLICATE_POSTER パラメータが誤って有効に設定されたことを表します。SharePlex のコマンドとパラメータの詳細については、SharePlex の『リファレンスガイド』を参照してください。
  5. 複製ファイルのバックアップを維持します。

復旧手順の実行

高可用性環境でシステムに障害が発生した場合は、「高可用性を維持するための手順」を参照してください。これらの手順は、複製をセカンダリシステムに移動し、プライマリシステムが回復したときに元に戻すのに役立ちます。

分割レプリケーションの設定

分割レプリケーションの設定

この章には、水平分割および垂直分割レプリケーションの高度な SharePlex 設定オプションを使用する手順が記載されています。一連のオプションによって、特定の要件を満たすためにデータを柔軟に分割、並列化、フィルタリングできます。次に進む前に、「設定ファイルの作成」の概念とプロセスについて理解していることを確認してください。

コンテンツ

水平分割レプリケーションの設定

分割レプリケーションの設定 > 水平分割レプリケーションの設定

水平分割レプリケーションを使用して、テーブルの行を個別の処理ストリームに分割します。水平分割レプリケーションを使用して、次の操作を実行できます。

  • ソース内の残りの行は保持したまま、行のサブセットをターゲットに複製します。
  • 行のサブセットをそれぞれ異なるターゲットに複製します。
  • ソーステーブルの複製を並列 Post プロセスに分割して、ターゲットテーブルへの post を高速化します。

水平分割レプリケーションを使用する場合のガイドライン

次に示すのは、水平分割レプリケーションを垂直分割レプリケーションまたはフルテーブルレプリケーションと組み合わせる設定を検討している場合に従うガイドラインです。

  • 水平分割レプリケーションと垂直分割レプリケーションを組み合わせると、配布される情報の種類と配布先の場所を最適に管理できます。

    例:

    本社と支社で構成される企業について考えてみます。本社は企業データベースを管理し、各支社は地域データベースを管理しています。本社は垂直分割レプリケーションを使用して、テーブルの列データの一部を支社と共有しながら、その他の機密データは本社で保持しています。共有列に対する行変更はさらに水平分割されて、適切な地域データベースに複製されます。
  • 水平分割レプリケーションはフルテーブルレプリケーションと併用することで、選択した行を異なるレポートシステムに、そしてすべての行をフェイルオーバーシステムにルートすることができます。ただし、SharePlex では、このような組み合わせは、垂直分割レプリケーションが同じテーブルでも使用されている場合は、サポートされません。

仕組み

水平分割レプリケーションを実装するには、次の手順を実行します。

  1. パーティションの定義
  2. パーティションスキームの定義
  3. 設定ファイル内のパーティションスキームの指定

パーティションの定義

パーティションは、複製するテーブル内の行のサブセットです。パーティションを作成するには、目的に応じて、カラムコンディションまたはハッシュ値を指定します。次に、これらの概念を説明します。

カラムコンディション: カラムコンディションは、標準の WHERE 句に基づいています。次の目的に応じて、単一または複数のカラムコンディションを使用します。

  • 複製する対象がテーブル内の行のサブセットに限定される場合は、単一のカラムコンディションを使用します。たとえば、YEAR 列の値が 2000 よりも大きいという条件に該当する行に限定して複製できます。
  • テーブル内の行をパーティションに分割して、行のセットをそれぞれ異なるターゲットに複製するには、複数のカラムコンディションを使用します。たとえば、変更を複製する際に、REGION 列の値が EAST である場合は特定の支社に複製し、REGION が WEST である行は別の支社に複製します。

  • ターゲットテーブルへの post を高速化するため、テーブル内の行を並列処理ストリーム(並列 Export-Import-Post ストリーム)に分割するには、複数のカラムコンディションを使用します。たとえば、更新頻度の高いターゲットテーブルに対する複製のフローを改善できます。このような用途でカラムコンディションの使用が適切であるのは、並列 Post プロセスに処理を均等に分割できる列がテーブルに含まれている場合に限定されます。

ハッシュ値: ハッシュパーティション(ハッシュ水平分割)は、ハッシュアルゴリズムを使用して行パーティションを作成するように、SharePlex に指示します。このような用途でカラムコンディションを使用することが実際的ではない場合は、ハッシュ値を使用してテーブル内の行を並列 Post 処理ストリームに分割できます。カラムコンディションではなくハッシュパーティションを使用する利点は、ユーザーが WHERE 句でテーブル列を参照する必要がなく、行が自動的に均等に分割されるという点にあります。

重要: 次の制限が適用されます。

  • ハッシュ分割の使用時には、テーブルを compare コマンドで比較することも、repair コマンドで修復することもできません。
  • ハッシュ水平分割は、インデックス編成されたテーブル(IOT)や、LOB または LONG を含むテーブルに対して有効にすることはできません。
  • ハッシュ水平分割を、カラムコンディションを使用する水平分割と組み合わせることはできません。
  • ハッシュ水平分割は、行の移行を引き起こす可能性がある操作を伴うテーブルではサポートされていません。行の移行を引き起こす操作の例は、次のとおりです。

    • テーブルの export または import
    • MOVE オプション付きの ALTER TABLE
    • SHRINK SPACE オプション付きの ALTER TABLE
    • FLASHBACK TABLE
    • パーティションの分割または 2 つのパーティションの結合
    • 新しいパーティションへの移動を伴う値の更新
    • オンラインテーブルの再編成
    • dbms_redefinition によるテーブルの再定義
    • 行シフトを引き起こす可能性がある通常の非分割テーブルに適用された DML:行サイズを変更する UPDATE によって、データが現在のブロックに収まらなくなり、行の DELETE 後に再挿入されます。

:Windows システムでは、大量のクエリを使用するためにセマフォ数を増やすことが必要な場合があります。Post がエラーメッセージ「shs_SEMERR: an error occurred with the semaphore」を返す場合は、「複製の問題の解決 」の「Post の停止」トピックを参照してください。

パーティションスキームの定義

パーティションスキームは関連する行パーティションの論理的なコンテナであるとともに、SharePlex に対して水平分割の使用を指示するため、設定ファイル内で使用される要素です。たとえば、CORPORATE.SALES という名前のシンプルなパーティションスキームに、CORPORATE.SALES テーブルの適切なデータサブセットをそれぞれ異なる地域営業所に複製する 4 つのカラムコンディションが設定されているとします。ハッシュ水平分割オプションを使用する場合(パーティションは SharePlex によって作成されますが)、パーティションスキームも指定する必要があります。

設定ファイル内のパーティションスキームの指定

ソーステーブル固有のパーティションスキームを使用するように SharePlex に指示するには、設定ファイル内でルーティングマップとしてパーティションスキームを指定します。SharePlex はパーティションスキームの指定に従って、行のサブセットを処理します。

パーティションおよびスキームの定義

一連の手順で、パーティションを定義して、パーティションスキームにリンクします。SHAREPLEX_PARTITION テーブルを使用して、パーティションを定義およびリンクします。

:このテーブルは、SharePlex のインストール時にソースシステム上の SharePlex スキーマにインストール済みです。

同じ Oracle インスタンスからデータを複製するすべての設定に対して、1 つの SHAREPLEX_PARTITION テーブルを使用します。大文字と小文字を区別した名前を "Scott"."emp" のように二重引用符で囲みます。

カラムコンディションに基づいてパーティションを定義するには

パーティションとして定義する行のサブセットのグループごとに、標準の INSERT 文を使用して、「SHAREPLEX_PARTITION 列と入力」で説明されている情報を SHAREPLEX_PARTITION テーブルに入力します。

ハッシュに基づいてパーティションを定義するには

標準の INSERT 文を使用して、「SHAREPLEX_PARTITION 列と入力」で説明されている情報を SHAREPLEX_PARTITION テーブルの 1 行に入力します。この 1 行は、ハッシュアルゴリズムで自動的にパーティションを構築するために SharePlex で必要とされる情報をキャプチャします。

パーティションを複数のターゲットにルーティングするには

行のパーティションを複数のターゲットテーブルに送信するときに、所有者またはテーブル名が一致しないものがある場合は、次の手順を実行します。

  • 他のターゲットテーブルと異なる所有者または名前を持つターゲットテーブルごとに、個別の INSERT 文を発行およびコミットします。
  • 各 INSERT は、ROUTE 列で指定したターゲットシステムに関して、TARGET_TABLE_OWNER および TARGET_TABLE_NAME 列で適切な名前の値を指定する以外は同じである必要があります。
  • このパーティションスキーム用のエントリを設定ファイル内で作成するときは、任意のターゲットテーブルを指定します。設定がアクティベートされると、SharePlex が他のターゲット名を検出します。
  • SP_ORD_FIRST_FIND パラメータを 0 に設定します。これで、SharePlex がパーティションスキーム内のカラムコンディションをすべてチェックします。デフォルトでは、特定の行変更で満たされるパーティションスキーム内のカラムコンディションは 1 つだけであると、SharePlex は想定しています。詳細については、『SharePlex リファレンスガイド』を参照してください。

表 13: SHAREPLEX_PARTITION 列と入力

データ型 入力
PARTITION_SCHEME VARCHAR2(30)

行のパーティションを作成するパーティションスキームの名前。

次のことを行えます。

  • 複製設定では、パーティションスキームをテーブルごとに 1 つだけ定義します。
  • 設定ファイル内のパーティションスキームのいずれかまたはすべてを使用します。アクティブ設定ファイルにリストされているもののみアクティブです。
DESCRIPTION VARCHAR2(61) パーティションの説明。NULL 値を入力できますが、多数のパーティションを作成している場合、それぞれのパーティションに名前を付けると、個別に特定または説明しやすくなります。
TARGET_TABLE_OWNER VARCHAR2(30)

ターゲットテーブルの所有者名。次のいずれかを指定できます。

  • NULL 値(post を並列化する目的でパーティション分割を使用している場合など、すべてのルートでターゲット所有者名が 1 つだけである場合)。
  • 異なる所有者名を持つ複数のターゲットテーブルにパーティションを送信する場合、いずれかの所有者名を指定します。大文字と小文字を区別する場合、名前はデータベースの要求に応じて指定する必要があります。「パーティションを複数のターゲットにルーティングするには」を参照してください。
TARGET_TABLE_NAME VARCHAR2(30)

ターゲットテーブルの名前。これには、次のいずれかを指定できます。

  • NULL 値(post を並列化する目的でパーティション分割を使用している場合など、すべてのルートでターゲットテーブル名が 1 つだけである場合)。
  • 異なる名前を持つ複数のターゲットテーブルにパーティションを送信する場合、いずれかのターゲット名を指定します。大文字と小文字を区別する場合、名前はデータベースの要求に応じて指定する必要があります。「パーティションを複数のターゲットにルーティングするには」を参照してください。
ROUTE VARCHAR2(1024)

このパーティション用のルーティングマップ。カラムコンディションとハッシュのどちらを使用してパーティションを作成しているかによって、次のいずれかに該当します。

カラムコンディションでパーティションを作成している場合:

ハッシュでパーティションを作成している場合:

次の形式を使用して、名前付き post キューを自動的に生成するように SharePlex に指示します。

host:name|#[o. | r.]database

ここで、

  • host はターゲットシステムの名前です。
  • name は、SharePlex が作成する post キューのベース名です。それぞれの名前には、0 から OPTIONS 列で指定したパーティション数までの整数が付加されます。
  • |# は、キューに連番を割り当てるように SharePlex に指示します。
  • database は、(該当する場合)ターゲットデータベースの SID です。
PRIORITY NUMBER NULL。この列は、SharePlex で使用するために予約されています。
ORDER NUMBER

NULL。この列は、SharePlex で使用するために予約されています。

OPTIONS VARCHAR2(32)

パーティションの定義方法に応じて、次のいずれかを指定します。

カラムコンディションに基づいてパーティションを定義している場合:

NULL

ハッシュに基づいてパーティションを定義している場合:

HASH#。ここで、# は SharePlex で使用する必要があるパーティション数(post キューと post プロセス)です。ナンバリングは、0 から始まります。たとえば、HASH4 の場合、post キュー hash00、hash01、hash02、および hash03 が作成されます。

COL_CONDITIONS VARCHAR2(1024)

パーティションの定義方法に応じて、次のいずれかを指定します。

カラムコンディションに基づいてパーティションを定義している場合:

((region_id = West) and region_id is not null) のような、標準の WHERE 条件構文を使用します。カラムコンディションは、必要な数だけ指定できます。手順の詳細については、「カラムコンディションを作成する方法」を参照してください。

ハッシュに基づいてパーティションを定義している場合:

ROWID の値を指定します。これで、行が存在しているブロックに基づいてハッシュを作成するように、SharePlex に指示します。

カラムコンディションを作成する方法

次に示すのは、カラムコンディションを作成する場合のガイドラインです。

適切な列の選択

プライマリキーまたは一意キーの列など、値が変化しない列を使用します。これは、パーティションの条件列に対する変更によって、異なる(または存在しない)パーティションの条件を基本データが満たす可能性があるような、パーティションシフトを避けるためです。

パーティションシフトのケース 1:列値が更新されて、新しい値がカラムコンディションをまったく満たさなくなった場合:
  • SharePlex は操作を実行しますが、その行に対する以降の操作は複製されません。理由:行がカラムコンディションを満たさなくなりました。
  • これで、元のパーティションのソーステーブルとターゲットテーブルは非同期になりますが、Post はエラーを返しません。
  • 例:

    カラムコンディションが「C1=A かつ C2=B」であるとします。

    1. 行をデータベースに INSERT します。C1 と C2 の値がカラムコンディションを満足させるので、行がターゲットシステムに複製されます。

      C1 C2 C3 C4
      A B 1 2
    2. UPDATE ...set C1=B WHERE C1=A and C2=B

    3. 変更が複製されます。これで、行はカラムコンディションを満足しなくなるので、その後の行の中のデータへの変更は複製されません。

      C1 C2 C3 C4
      B B 1 2
パーティションシフトのケース 2:あるカラムコンディションを満たしている行が更新されて、別の条件を満たした場合:
  • 一致するターゲット行を Post が検出できません。理由:元の変更がカラムコンディションを満たしていなかったので、複製されませんでした。
  • Post が非同期エラーを返します。
  • 例:

    カラムコンディションが「C1=A かつ C2=B」であるとします。

    1. 行をデータベースに INSERT します。C1 と C2 の値がカラムコンディションを満足させていないので、行がターゲットシステムに複製され「ません」。

      C1 C2 C3 C4
      B B 1 2
    2. UPDATE ...set C1=A WHERE C1=B and C2=B

    3. これで、行がカラムコンディションを満足させるようになるので、SharePlex がそれを複製しますが、Post がターゲットで対応する行を探し出すことができないので(一度もそこに存在していませんでした)、非同期エラーを戻します。

カラムコンディションの値への変更によって非同期状態になった行を修復する方法

非同期行を修復するには、次のいずれかの手順を実行します。

  • SP_ORD_HP_IN_SYNC パラメータの値に 1 を設定します。この設定は、非同期状態を検出して修正するように、SharePlex に指示します。このパラメータを有効にすると、水平分割レプリケーションに設定されたテーブルの数によってパフォーマンスが多少劣化します。このパラメータの詳細については、『SharePlex リファレンスガイド』を参照してください。
  • compare コマンドを使用して、非同期行を修復します。このコマンドの詳細については、『SharePlex リファレンスガイド』を参照してください。

注: カラムコンディションの基準となるキー以外の列を使用しているときに、水平分割レプリケーションが有効な状態でパフォーマンスの低下が確認された場合、その列のロググループを追加します。

サポートされているデータ型

SharePlex は、カラムコンディション内で次のデータ型をサポートしています。

CHAR

DATE

NUMBER

LONG VARCHAR

VARCHAR

VARCHAR2

注:

  • DATE データ型については、SharePlex は MMDDSYYYYHH24MISS のように指定される構文で nls_date_format を使用します。例:

    hiredate<‘1111 2011000000’

  • 水平分割レプリケーションでは、次の項目はサポートされません。

    • Oracle TO_DATE 関数。
    • VARRAY および抽象データ型。
    • 100k 以上の LONG 列に対する UPDATE または INSERT。
    • LOB 列。
    • シーケンス。
    • Oracle パーティションの TRUNCATE。

標準の条件構文の使用

次のリストに、SharePlex がカラムコンディション内でサポートしている条件構文を示します。ここで、

  • value に該当するのは、文字列または数字です。文字列と日付は一重引用符で囲みます('west')。数字(10)には引用符を使用しません。
  • column は、水平分割レプリケーションを使用するために設定しているテーブル内の列の名前です。
column = value
not (column = value)
column > value
value > column
column < value
column <= value
column >= value
column <> value
column != value
column like value
column between value1 and value2
not (column between value1 and value2)
column is null
column is not null

かっこと ANDOR、および NOT 論理連結語で複数の条件を組み合わせて、入れ子状の条件式(ネスト式)を作成できます。

カラムコンディションの例

not (col1 = 5)
(col2 = 5) and not (col3 = 6)
((col1 is not null) and (col2 = 5))

その他のガイドライン

  • NULL は 次のような場合に SharePlex で複製されます。not (department_id = 90)department_id が NULL の場合は、複製されます。NULL 値を持つレコードが複製されることを防ぐために、条件の一部として「column is not null」構文を含みます。not (department_id = 90) and department_id is not null.
  • かっこで演算子の優先順位が示されていない場合は、SharePlex は Oracle でサポートされているとおりに演算子の優先順位をサポートします。たとえば、NOT x AND y 条件は (NOT x) AND y と同様に処理されます。また、x AND y OR z 条件は (x AND y) OR z と同様に処理されます。条件にかっこが含まれる場合は、明示的な優先順位が使用されます。
  • 禁止事項

    • カラムコンディションに他のテーブルへの参照を含めないでください。
    • 既定の最大ストレージ容量(1024 バイト)を超えないようにしてください。
  • パーティションスキームを参照する設定のアクティベーション中に、SharePlex は当該スキームのカラムコンディション内の構文を検証します。構文が正しくない場合は、アクティベーションに失敗します。SharePlex はエラーをイベントログに出力し、エラーが発生した場所を示します。

設定ファイル内のパーティションスキームの指定

フルテーブルレプリケーションが設定されるテーブルや、分割レプリケーションを使用するテーブルなど、特定のデータソースから複製する必要がある全データに対して、単一の設定ファイルを使用します。設定ファイルを作成する一般的な手順については、「設定ファイルの作成」を参照してください。水平分割レプリケーション用のエントリを設定するには、次の構文を使用します。

datasource_specification    
src_owner.table tgt_owner.table

!partition_scheme

    !routing_map

ここで、

  • src_owner.table および tgt_owner.table は、それぞれソーステーブルおよびターゲットテーブルの指定です。

  • !partition_scheme は、指定されたソーステーブルおよびターゲットテーブルに使用するパーティションスキームの名前です。! は必須です。名前には大文字と小文字の区別があります。!schemeA+schemeB のような複数のパーティションスキームの複合ルーティングはサポートされていません。同じソーステーブルに対して使用するパーティションスキームごとに、個別のエントリを作成します。「」を参照してください。
  • !routing_map は、プレースホルダルーティングマップです。これが必要になるのは、パーティションスキーム内で使用したルートが設定ファイル内のいずれかの場所でリストされていない場合に限定されます。SharePlex では、(パーティションスキーム内にリストされている場合でも)各ルートを設定ファイル内に含める必要があります。

    注:

    • このコンポーネントが適用されるのは、カラムコンディションを使用しているパーティションに限定されます。
    • これは、異なる名前のキュールートにも、異なるターゲットホストへのルートにも適用されます。
    • 複合ルーティングマップを使用できるのは、すべてのターゲットテーブルの名前が同じである場合です。「」を参照してください。

パーティションスキームを指定する設定ファイルのエントリ

Datasource:o.myora    
scott.emp scott.emp_2 !partition_emp
scott.cust scott.cust_2 !partition_cust

同じソーステーブルに複数のパーティションスキームを正しく指定する方法

Datasource:o.myora    
scott.emp scott.emp_2 !partition_schemeA
scott.emp scott.emp_3 !partition_schemeB

プレースホルダルーティングマップを正しく指定する方法*

! targsys1
! targsys2@o.ora2+targsys3@o.ora3

*必要になるのは、カラムコンディションに基づくパーティションに限定されます。

ハッシュアルゴリズムの変更

ハッシュベースの水平分割レプリケーションの使用時には、ハッシュアルゴリズムをデフォルトの rowid ベースからブロックベースに変更できます。ブロックベースのハッシュオプションを有効にするには、SP_OCF_HASH_BY_BLOCK パラメータを 1 に設定します。

垂直分割レプリケーションの設定

分割レプリケーションの設定 > 垂直分割レプリケーションの設定

垂直分割レプリケーションを使用して、テーブル内の列のサブセットを複製します。たとえば、図に示すように、C1、C2、C3、および C4 に対するデータ変更は複製できますが、C5 および C6 に対するデータ変更は複製できません。

サポートされるターゲット

すべて

垂直分割レプリケーションを使用する場合のガイドライン

垂直分割レプリケーションを含む、設定ファイルを作成するときには、一連のガイドラインに従います。

  • 垂直分割レプリケーションはレポートおよびその他のデータ共有方法には適していますが、高可用性環境には適していません。いったんテーブルを垂直分割パーティションに設定すると、SharePlex は他の列を認識しなくなり、それらの列のデータは複製されません。

  • 水平分割レプリケーションと垂直分割レプリケーションを組み合わせると、配布される情報の種類と配布先の場所を最適に管理できます。

    例:

    本社と支社で構成される企業について考えてみます。本社は企業データベースを管理し、各支社は地域データベースを管理しています。本社は垂直分割レプリケーションを使用して、テーブルの列データの一部を支社と共有しながら、その他の機密データは本社で保持しています。共有列に対する行変更はさらに水平分割されて、適切な地域データベースに複製されます。
  • テーブルは、1 つのターゲットシステムに対して部分的に、そして別システムに対して全列を複製するように設定すること(すなわち、垂直分割レプリケーションとフルテーブルレプリケーションを併用すること)はできません。ただし、単一のターゲット上の同じテーブルに対するフルテーブルレプリケーションを設定して、そのターゲットから、パーティションの列だけを必要とするテーブルを含む、別のターゲットに対する垂直分割レプリケーションを設定することはできます。
  • ターゲットテーブルは、すべてソーステーブルと同じ列を含むことができますが、それは必須ではありません。ターゲットに含むことができるのは、ソーステーブルから複製された列だけです。対応するソースおよびターゲットの列の名前は、同じである必要はありません。対応する列は同じデータ型(同じ型、サイズ、精度)を含んでいる必要があります。
  • ALTER TABLE を使用して垂直分割レプリケーションに設定されたテーブルに列を追加することはサポートされていません。

垂直分割レプリケーションを設定するには、設定ファイルにカラムパーティションまたは除外カラムパーティションを指定します。

  • カラムパーティションは、指定された列に対するデータ変更を複製します。
  • 除外カラムパーティションは、指定された列に対するデータ変更以外のデータ変更をすべて複製します。

フルテーブルレプリケーションが設定されるテーブルや、分割レプリケーションを使用するテーブルなど、特定のデータソースから複製する必要がある全データに対して、単一の設定ファイルを使用します。設定ファイルを作成する一般的な手順については、「設定ファイルの作成」を参照してください。垂直分割レプリケーション用のエントリを設定するには、次の構文を使用します。

datasource_specification    
src_owner.table (src_col,src_col,...) tgt_owner.table [(tgt_col,tgt_col,...)] routing_map
src_owner.table !(src_col,src_col,...) tgt_owner.table routing_map
設定コンポーネント 説明
src_owner.table および tgt_owner.table それぞれ、ソーステーブルとターゲットテーブルの指定。

(src_col, src_col,...)

および

!(src_col,src_col,...)

複製されるソース列。次のいずれかを指定できます。

  • (src_col, src_col,...) は、複製する列をリストするカラムパーティションを指定します。
  • !(src_col,src_col,...) は、複製しない列をリストする除外カラムパーティションを指定します。残りの列は、実際のカラムパーティションを構成します。

注: 除外カラムパーティションの使用時に、対応するソースおよびターゲットの列の名前は同じである必要があり、除外された列をキー定義で使用することはできません。詳細については、次を参照: 一意のキーの定義

次の規則に従って、どちらかのタイプのカラムパーティションを指定します。

  • ソーステーブルごとに 1 つのパーティションを設定できます。
  • 列リストはかっこで囲む必要があります。
  • 列名はコンマで区切ります。コンマの後の空白文字は随意です。
  • パーティションの最大長は 174820 バイト(設定ファイルで許容される最大行長)です。このため、リストできる実際の列数は、各名前の長さに応じて異なります。
  • 列は、ソーステーブル内で連続している場合と連続していない場合があります。たとえば、テーブルの 1 列目、3 列目、そして 7 列目を複製することができます。
  • キー列をパーティション内に含める必要はありません
  • このテーブルで水平分割レプリケーションと垂直分割レプリケーションを併用している場合、パーティションスキーム内のすべての列がカラムコンディションの一部であることが必要です。
(tgt_col,tgt_col,...)

ターゲットの列。このオプションを使用して、所有者や名前が異なるターゲットの列にソースの列をマッピングします。ソースおよびターゲットの列の所有者や名前が同じである場合、ターゲットの列を省略できます。

ソースの列をターゲットの列にマッピングするには、次の規則に従います。

  • ソースのカラムパーティションの構文規則は、ターゲットのカラムリストにも適用されます。
  • ターゲットの列は、名前を除いて、ソースの列と同じ定義であることが必要です。

  • ターゲット列は、対応するソース列と同じ論理順でリストします。SharePlex がオブジェクトキャッシュ内で正しい相関関係を構築できるようにするため、テーブル内のターゲット列の実際の順序に関係なく、この操作が必要になります。たとえば、ソースリストの 2 列目への変更はターゲットリストの 2 列目に複製されます。
routing_map

カラムパーティション用のルーティングマップ。ルーティングマップに該当するのは、次のいずれかです。

  • ソーステーブルで水平分割レプリケーションを使用している場合は、パーティションスキームを !partition_scheme のように指定します。詳細については、「水平分割レプリケーションの設定を参照してください。
  • ソーステーブルで水平分割レプリケーションを使用していない場合は、次のようにルーティングマップを指定します。

    • カラムパーティションを単一のターゲットに複製する場合は、sysB@o.myora のようなシンプルなルーティングマップを使用します。名前付き export キューまたは名前付き post キューとのルートがサポートされています。名前付きキューの詳細については、「名前付き export キューの設定」および「名前付き post キューの設定」を参照してください。
    • カラムパーティションを複数のターゲットシステムに複製する場合は、sysB@o.myora+sysC@o.myora2 のような複合ルーティングマップを使用します。重要!設定ファイル内にリストできるのは、ソーステーブルごとに 1 つのカラムコンディションに限定されます。したがって、複数のターゲットを個別のエントリでリストするのではなく、複合ルーティングマップを使用する必要があります。複合ルーティングマップを使用するには、すべてのターゲットテーブルの所有者および名前が同じであることが必要です。複合ルーティングマップを使用する場合の詳細については、「設定ファイルでのルーティング指定」を参照してください。

設定の例

次に示すのは、複合ルーティングマップを使用して複数のターゲットに複製する垂直分割レプリケーションの設定です。このソーステーブルで複合ルーティングマップを使用するには、すべてのターゲットの名前が scott.sal であることが必要です。

Datasourceo.oraA    
scott.emp (c1,c2) scott.sal

sysB@o.oraB+sysC@o.oraC

次に示すのは、ターゲットとソースで列の名前が異なる、単一のターゲットに複製する垂直分割レプリケーションの設定です。

Datasourceo.oraA    
scott.emp (c1,c2) scott.sal (c5,c6)

sysB@o.oraB

次の設定ファイルは同じカラムパーティション scott.emp (c1, c2) を設定ファイル内で 2 回繰り返しているので、無効です。

Datasourceo.oraA    
scott.emp (c1,c2) scott.cust (c1,c2)

sysB@o.oraB

scott.emp (c1,c2) scott.sales (c1,c2) sysC@o.oraC
Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating