サポートと今すぐチャット
サポートとのチャット

SharePlex 11.4 - 管理者ガイド

このガイドについて このガイドで使用される表記規則 SharePlexの概要 SharePlexの実行 SharePlexの複数のインスタンスの実行 sp_ctrlでのコマンドの実行 SharePlexパラメータの設定 データレプリケーションの設定 コンテナデータベースとの間のレプリケーションの設定 名前付きキューの設定 分割レプリケーションの設定 変更履歴ターゲットへのレプリケーションの設定 レプリケーション戦略の設定 DDLレプリケーションの設定 エラー処理の設定 データトランスフォーメーションの設定 セキュリティ機能の設定 SharePlexユーザのセキュリティグループへの割り当て 本番システムでのレプリケーションの開始 SharePlexの監視 レプリケーションの問題の防止と解決 非同期データのrepair Captureプロセスの調整 Postプロセスの調整 Oracleフェールオーバー後のレプリケーションのリカバリ アクティブなレプリケーション環境に対する変更 Oracleアプリケーションのパッチまたはアップグレードの適用 ソースまたはターゲットのOracleデータのバックアップ トラブルシューティングのヒント 付録A: ピアツーピア図 付録B: SharePlex環境変数

変更履歴ターゲットの概要

変更履歴ターゲットがレプリケーションターゲットと異なる点は、変更履歴ターゲットは単にソースデータの現在の状態のミラーを維持するのではなく、ソースオブジェクトに対して行われるすべての変更の記録を維持するということです。通常のレプリケーションでは、現在のターゲットデータに変更データがオーバーレイされますが、変更履歴では、変更データが新しいレコードとしてターゲットに挿入されます。古いデータは、変更の段階的な記録として保存されます。履歴データは、データマイニングや顧客との紛争解決などの目的で照会・分析することができます。

SharePlexを使用してセカンダリサーバ上で変更履歴を維持することで、本番データベースからオーバーヘッドをオフロードすることができます。このようなオーバーヘッドには、履歴行を追加するSQL作業、それらの行の追加ストレージ、履歴データに対するクエリアクティビティなどがあります。

注意: ファイル、JMS、およびKafkaターゲットは、デフォルトで変更履歴をサポートしています。これは、すべてのソース変更が個別のXMLレコードとして書き込まれるためです。古いデータに新しいデータがオーバーレイされることはありません。これらのターゲットでサポートされているメタデータは、PostがXMLを書き込む際に自動的に含められます。サポートされるメタデータのリストについては、『SharePlexリファレンスガイド』のtargetコマンドを参照してください。

機能

このレプリケーション戦略では以下をサポートします。

  • 同一または異なるソース名とターゲット名
  • 垂直分割レプリケーションの使用
  • 水平分割レプリケーションの使用
  • 名前付きexportキューおよびpostキューの使用
  • 同じソースオブジェクトの通常のレプリケーションと変更履歴レプリケーションの組み合わせ

サポート対象のソース

Oracle

サポート対象

Oracleターゲット

サポートされている操作

SharePlexは、以下の操作に対する変更履歴行の追加をサポートしています。

  • INSERT
  • UPDATE
  • DELETE
  • TRUNCATE
  • ALTER TABLEのDROP COLUMN

注意: Postはテーブルから列を削除しませんが、変更履歴行を作成します。

  • ALTER TABLEのADD COLUMN

注意: Postはテーブルに列を追加しますが、変更履歴行は作成しません。

  • ALTER TABLE のMODIFY列のデータ型

サポートされていない操作

  • UDT列またはVARRAY列に加えられた変更。

注意: SharePlexは、基本タイプにUDTフィールドを持つテーブルのみをレプリケートします。複数のサブタイプが含まれる列の場合、レプリケーションは基本タイプのフィールドにのみ適用されます。

  • LOB列の一部を変更するために使用されるDBMS_LOB操作ターゲットのその列に格納される値は、完全なLOB列ではなくなります

SharePlexによって変更履歴がどのように維持されるか

変更履歴設定では、各ターゲットテーブルは履歴テーブルとして機能し、ソースデータに加えられたすべての変更を連続した一連の行として記録します。

SharePlexによって挿入されるそれぞれの新しい変更行には以下が含まれます。

  • キー列の値
  • 変更された列の変更後イメージ。挿入と更新の場合、変更後イメージは変更された挿入の場合は追加された列の新しい値で構成されます。削除の場合、変更後イメージは、キーの値と、NULLに設定された他の列で構成されます。
  • オプション変更のコンテキストを提供するメタデータ値のセット。例えば、変更を行ったユーザのユーザIDや、変更が行われたソースシステムをキャプチャするメタデータなどがあります複数のデータベースから変更データを追跡する場合に便利です

SharePlexは、更新操作の変更前イメージを履歴に含めたり、履歴に含める操作タイプを制御したりするように構成できます。例えば、更新と削除だけを含めることができます。

変更履歴の設定

変更履歴を設定するには、SharePlex設定ファイルで特別な構文を使用します。また、オプションでフィルタルールやその他の属性を設定し、ニーズに合わせて履歴をカスタマイズします。

変更履歴設定ファイルの作成

以下の手順で変更履歴設定ファイルを作成します。

  1. SharePlexがインストールされ、『SharePlexインストールガイド』の指示に従ってシステムが準備されていることを確認してください。
  2. 履歴を追跡するソーステーブルと同じ名前と構造を持つOracleターゲット履歴テーブルを作成します。ただし、すべての列のすべての制約を省略します

    重要: Oracleターゲットテーブルに、PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL、CHECKの制約を含めてはならず、DEFAULT値を使用して列を定義することもできません。これは変更の履歴であるため、ある行に、同じキーを持つ別の行と同じイメージが含まれる場合があります。Postは変更履歴ターゲットに対して整合性チェックを行いません。

  3. ターゲットテーブルのトリガを無効にします。
  4. SharePlexを除き、ターゲットテーブルに対してDMLやDDLを実行できないようにします。
  5. ソースシステムで、以下の構文を使って設定ファイルを作成します。設定ファイルの作成方法の詳細については、「データをレプリケートするためのSharePlexの設定ページを参照し て く だ さ い。

    datasource_specification
    src_owner.table !cdc:tgt_owner.table host@c.SID

    ここで

    • Datasource:o.SIDは、ソースOracleインスタンスのORACLE_SIDです。
    • src_owner.tableは、ソースオブジェクトowner.objectの完全修飾名、またはワイルドカード指定です。
    • !cdc:は、ターゲットを変更履歴テーブルとして識別します。
    • tgt_owner.table は、ターゲット履歴テーブルの完全修飾名、またはワイルドカード指定です。
    • hostは、ターゲットシステムです。
    • c.SIDは、ターゲットOracleインスタンスを指定します。
  6. オプションターゲットテーブルで以下のスクリプトを実行し、デフォルトの名前を持つデフォルトのメタデータ列を追加します。追加の設定をしなくても、Postがデフォルトのメタデータ列に自動的に入力します。スクリプトは、要件に合わせてカスタマイズすることができます。

    product_dir/util/add_change_tracking_columns.sql

    注意:

    • スクリプトはデフォルトの列を追加するだけです。オプションの列を追加したり、列名を変更したりするには、targetコマンドを使用して、それらをPost設定に追加します。デフォルトおよびオプションのメタデータ列のリストについては、『SharePlexリファレンスガイド』のtargetコマンドを参照してください。
    • デフォルトの列は、SharePlex変更履歴設定に追加される新しいテーブルに自動的に追加されます。

その他の変更履歴設定オプション

このセクションでは、SharePlex変更履歴設定をカスタマイズする方法について説明します。

列名のカスタマイズ

targetコマンドをcolnameオプションと共に使用すると、ターゲットメタデータの列名をカスタマイズできます。手順については、『SharePlexリファレンスガイド』を参照してください。

各変更行への変更前イメージの追加

SP_OPO_TRACK_PREIMAGEパラメータをUに設定することで、ターゲットテーブルに変更前のイメージを含めることができます。このパラメータを指定すると、Postは追跡対象のソーステーブルに変更が加えられるごとに、ターゲットテーブルに2つの行を挿入します。1つは変更後のイメージ用、もう1つは変更前のイメージ用です。変更前イメージは、SP_OCT_USE_SUPP_KEYSパラメータが使用されていない限り、キー値と変更された列の変更前の値で構成されます。

変更前イメージが有効な場合、2つのレコードのSHAREPLEX_SOURCE_OPERATION列値は次のようになります。

UPDATE BEFORE

UPDATE AFTER

注意: RedoログにはLOBの変更前イメージが含まれていないため、変更前行にはLOB列の変更前イメージは含まれません。

targetコマンドのset cdc preimageオプションを使用すると、SP_OPO_TRACK_PREIMAGEのグローバル設定をテーブルレベルでオーバーライドできます。

SP_OPO_TRACK_PREIMAGEおよびtargetコマンドの詳細については、『SharePlexリファレンスガイド』を参照してください。

操作のすべての列の履歴への追加

このオプションはOracleデータに対してのみ有効です。各ターゲット履歴レコードに、変更された列だけでなく、すべてのテーブル列の値を含めるには、以下のように設定します。

  1. 追跡するソーステーブルのすべての列のサプリメンタルロギングをオンにします。次などを考慮します。

    Alter table emp ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

  2. SP_OCT_USE_SUPP_KEYSパラメータを1に設定します。
  3. SP_OCT_INCLUDE_UNCHANGED_COLを1に設定します。

注意: SP_OCT_USE_SUPP_KEYSとSP_OPO_TRACK_PREIMAGEの両方が有効な場合、変更前イメージには変更前のすべての列の値が含まれます。

操作タイプの変更履歴の無効化

DML操作タイプの変更履歴を無効にするには、SP_OPO_TRACK_OPERATIONSパラメータを適切な値に設定します。値はスラッシュ/で区切ります。例えば、挿入と更新のみの変更履歴を維持するには、パラメータをI/Uに変更します。デフォルトはI/U/Dで、すべてのDML操作タイプが履歴レコードに送信されます。

ルールとフィルタの設定

targetコマンドのset ruleオプションを使用すると、列に条件を適用して、変更をターゲット履歴テーブルに適用するかどうかを制御できます。例えば、列1と列3が変更された場合はその操作を適用し、他の列に適用されるその他の変更は破棄するというルールを指定できます。手順については、『SharePlexリファレンスガイド』を参照してください。

COMMITを含める

デフォルトでは、COMMITレコードは履歴テーブルに含まれません。COMMITごとに行を挿入するようにPostを設定するには、SP_OPO_TRACK_COMMITSパラメータを1に設定します。

レプリケーション戦略の設定

この章では、さまざまなレプリケーションの目的をサポートするためにSharePlexを設定する方法を説明します。本番環境での実装は、1つのソースとターゲットによる基本的な設定から、名前付きキュー、複数のターゲット、パーティション化されたデータなどを持つ複数のSharePlexインスタンスまで、多岐にわたります。

組織がSharePlexを展開する場合に考えられるあらゆる方法を予測し、文書化することは困難です。したがって、このドキュメントでは、基本的な展開タイプを設定するための手順をできるだけ明確に説明することで、ニーズに合わせて組み合わせたり拡張したりできるようすることを目指しています。また、プロフェッショナルサービス組織を通じてその他の展開サポートをご利用いただくこともできます。

内容

データを共有または配信するためのレプリケーションの設定

データを共有または配布するためのレプリケーションの設定

この説明では、1つのソースシステムから1つまたは複数のターゲットシステムにデータを共有または配布する目的でSharePlexをセットアップする方法を示します。

この戦略は、以下のようなビジネス要件をサポートします。

  • リアルタイムの意思決定をサポートするレポート作成
  • 調査と透明性の要件をサポートするためのデータ共有
  • 企業全体のデータ統合
  • カスタマーサービスへの問い合わせおよびその他のクエリ集中型アプリケーション
  • データの監査とアーカイブ

サポート対象のソース

OracleおよびPostgreSQL

サポート対象

すべて

機能

このレプリケーション戦略では以下をサポートします。

  • 1つまたは複数のターゲットシステムへのレプリケーション
  • 同一システム上のデータベース間のレプリケーション
  • 同一データベース内のスキーマ間のレプリケーションOracle
  • 同一または異なるソース名とターゲット名
  • 垂直分割レプリケーションの使用
  • 水平分割レプリケーションの使用
  • 名前付きexportキューおよびpostキューの使用
  • トランスフォーメーションの使用Oracle

要件

  • SharePlexインストールガイド』の説明に従ってシステムを準備し、SharePlexをインストールして、データベースアカウントを設定します。
  • SharePlexを除き、ターゲットテーブルに対してDMLやDDLを実行しないでください。レプリケーション設定の外にあるターゲットシステム上のテーブルでは、レプリケーションに影響を与えることなくDMLおよびDDL操作を行うことができます。
  • ターゲットシステムでシーケンスが不要な場合は、レプリケートしないでください。レプリケーションが遅くなる可能性があります。ソーステーブルのキー生成にシーケンスが使用されている場合でも、レプリケートされた行がターゲットシステムに挿入されると、シーケンス値がキー列の一部になります。シーケンス自体をレプリケートする必要はありません。

重要! これらの説明は、SharePlex設定ファイルを完全に理解していることを前提としています。重要な構文要素の省略表現が使用されています。

詳細については、データをレプリケートするためのSharePlexの設定を参照してください。

構文で使用される規則

このトピックの設定構文では、プレースホルダは以下を表しています。

  • source_specification[n]は、ソースオブジェクトの完全修飾名owner.object、またはワイルドカード指定です。
  • target_specification[n]は、ターゲットオブジェクトの完全修飾名、またはワイルドカード指定です。
  • hostは、SharePlexが実行されるシステムの名前です。異なるシステムは、hostBのように名前に文字を付加することで識別します。
  • dbはデータベース指定です。データベース指定は、o. 、またはr. が、接続タイプに応じて、Oracle SID、TNSエイリアス、またはデータベース名の前に付加されて構成されます。ターゲットがJMS、Kafka、またはファイルの場合は、データベース識別子は必要ありません。

重要! データをレプリケートするためのSharePlexの設定ページを参照してください。

ローカルシステム内のレプリケーション

同一システム上のレプリケーションでは以下の設定をサポートしています。

  • 1つのOracle/PostgreSQLインスタンス内で、同じスキーマ内の異なるテーブル、または異なるスキーマ内の同じテーブルにレプリケートします。
  • Oracle/PostgreSQLインスタンスから、同じシステム上のSharePlexがサポートするターゲットにレプリケートします。

設定オプション

datasource_specification

   
source_specification1 target_specification1 hostA[@db]
source_specification2 target_specification2 hostA[@db]
Oracleの例

この例では、同じローカルシステム上の同じOracleインスタンス、 異なるOracleインスタンスUnixとLinuxのみ、および異なるターゲットタイプにデータをレプリケートする方法を示します。

Datasource:o.oraA    
hr.emp hr.emp2 hostA@o.oraA
hr.sal hr.sal2 hostA@o.oraB
fin.* fin.* hostA@r.mss
act.* !file hostA

 

PostgreSQLの例

この例では、同じローカルシステム上の同じPostgreSQLインスタンス、異なるPostgreSQLインスタンスLinuxのみ、および異なるターゲットタイプにデータをレプリケートする方法を示します。

Datasource:r.pgA    
hr.emp hr.emp2 hostA@r.pgA
hr.sal hr.sal2 hostA@r.pgB
fin.* fin.* hostA@r.mss

SharePlex Managerを使用する場合の設定

同じマシン間のレプリケーションでは、Exportプロセスが省略されます。しかし、SharePlex Managerはexportキューが存在することを想定しています。SharePlex Managerでこの設定を使用する場合は、以下のように明示的にexportキューを設定する必要があります。ルーティングマップのhostA*コンポーネントは、exportキューとExportプロセスを作成し、ExportプロセスはデータをImportプロセスに送信し、次にpostキューに送信します。

datasource_specification

   
source_specification1 target_specification1 hostA*hostA[@db]
source_specification2 target_specification2 hostA*hostA[@db]

リモート・ターゲット・システムへのレプリケーション

設定オプション

datasource_specification

   
source_specification1 target_specification1 hostB[@db]
source_specification2 target_specification2 hostB[@db

この例の最後の行は、同じリモート・ターゲット・システム上の異なるターゲットタイプにデータをレプリケートする方法を示しています。

Datasource:o.oraA    
hr.emp hr.emp2 hostB@o.oraB
hr.sal hr.sal2 hostB@o.oraB
fin.* !file hostB

複数のターゲットシステムへのレプリケーション

このトポロジーはブロードキャストレプリケーションとして知られています。これにより、異なるデータを異なるターゲットシステムに配布したり、すべてのデータをすべてのターゲットシステムに配布したり、必要に応じて組み合わせたりする柔軟性が得られます。これは、ソースシステムがすべてのターゲットシステムに直接接続できることを前提としています。すべてのルーティングは1つの設定ファイルを通じて処理されます。詳細については、中間システムを介したレプリケーションの設定を参照してください。

設定オプション

ターゲット指定がすべてのターゲットで同一の場合: ソースオブジェクトのターゲット指定がすべてのターゲットシステムで同一である場合、ルートごとに個別のエントリを入力するのではなく、複合ルーティングマップを使用できます。詳細については、データをレプリケートするためのSharePlexの設定を参照してください。

datasource_specification

   
source_specification1 target_specification1 hostB[@db]+hostC[@db][+...]
source_specification2 target_specification2 hostC[@db]+hostD[@db][+...]
すべてのターゲットでターゲット指定が同一でない場合
  • ソースオブジェクトのターゲット指定が一部またはすべてのターゲットシステムで異なる場合、異なる各ターゲット指定を指定するために個別の設定エントリを使用する必要があります。
  • ターゲット指定が同一であるルートには複合ルーティングマップを使用できます。

datasource_specification

   
source_specification1 target_specification1 hostB[@db]
source_specification1 target_specification2 hostC[@db][+...]
ソースがOracleの場合

注意: この例には、考えられるすべてのソースとターゲットの組み合わせが含まれているわけではありません。この例の最後の項目は、水平分割レプリケーションを使用して、sales.accountsテーブルのさまざまなデータをさまざまな地域データベースに配布する方法を示しています。

Datasource:o.oraA    
hr.emp hr.emp2 hostB@o.oraB
hr.emp hr."Emp_3" hostC@r.mssB
cust.% cust.% hostD@o.oraD+hostE@o.oraE
sales.accounts sales.accounts !regions
ソースおよびターゲットがPostgreSQLの場合
Datasource:r.source_DB    
hr.emp hr.emp2 hostB@r.dbnameA
hr.emp hr."Emp_3" hostC@r.dbnameB
cust.% cust.% hostD@r.demoC+hostE@r.demoD

重要! すべてのシステム上のSharePlexに同じポート番号を使用してください。

関連ドキュメント

The document was helpful.

評価を選択

I easily found the information I needed.

評価を選択