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

SharePlex 11.4 - インストールおよびセットアップガイド

このガイドについて このガイドで使用される表記規則 OracleソースへのSharePlexのインストールと設定
Oracle向けSharePlexプレインストールチェックリスト SharePlexインストーラのダウンロード Install SharePlex on Linux and UNIX(LinuxとUNIXへのSharePlexのインストール レプリケーションのためのOracle環境のセットアップ Oracleから異なるターゲットタイプへのレプリケーションを設定する Oracle向けクラウドホスト型データベースのインストールとセットアップ リモートキャプチャ向けインストールとセットアップ HAクラスタ向けインストールとセットアップ Oracle向け一般SharePlexデモ Oracle向け高度なSharePlexデモ データベース・セットアップ・ユーティリティ Oracleのインストールに関する問題の解決
ソースおよびサービスとしてのPostgreSQLデータベースへのSharePlexのインストールとセットアップ
PostgreSQL向けSharePlexのインストール前のチェックリスト PostgreSQL向けSharePlexインストーラのダウンロード ソースとしてのPostgreSQL向けLinuxへのSharePlexのインストール PostgreSQLからサポートされているターゲットタイプへのレプリケーションの設定 PostgreSQL向けクラウドホスト型データベースのインストールとセットアップ PostgreSQL向けリモートキャプチャのインストールとセットアップ PostgreSQL高可用性クラスタへのSharePlexのインストール 論理レプリケーションを使用した高可用性のPostgreSQL Azure Flexible ServerでのSharePlexの設定 PostgreSQL向けの汎用SharePlexデモ PostgreSQL用の高度なSharePlexデモ PostgreSQLのデータベースセットアップ PGDB as a Service向けデータベースセットアップ pg_hint_plan拡張機能のインストール PostgreSQLのインストールに関する問題の解決
DockerコンテナへのSharePlexのインストール SharePlexユーザのセキュリティグループへの割り当て インストールの問題の解決 SharePlexのアンインストール 高度なインストーラオプション rootとしてのSharePlexのインストール SharePlexでインストーラされるアイテム

競合解消のデモ - PostgreSQLからPostgreSQLへ

前提条件:

  • 先に進む前に、SharePlexのデモオブジェクトがインストールされていることを確認してください。「デモのための事前の作業」を参照してください。

  • アクティベーションする前に、SP_OPX_CREATE_ORIGIN_PG を1に設定します。PostgreSQLからOracleへのレプリケーションではPostgreSQLピアに、PostgreSQLからPostgreSQLへのレプリケーションでは両方のピアに設定してください。

このデモでは、レプリケーションのコンフリクトを解決するために一般的なコンフリクト解決手順を使用するようSharePlexを設定します。汎用コンフリクト解決では、1つのPL/SQLプロシージャを使用して複数のテーブルのコンフリクトを解決できます。

次のような紛争解決戦略が示されています。

  • 信頼できるソースの優先順位 - 以下の手順では、競合が発生した場合に優先される「信頼できる」ソースとして、1つのシステムを定義します。このデモはINSERTに基づいています。信頼できる情報源で発生したすべてのINSERTは、他のシステムからのINSERTを上書きします。このデモでは、信頼できるソースをpeer1、もう一方のシステムをpeer2とします。
  • タイムスタンプの優先順位 - このデモはUPDATEに基づいています。競合がある場合、最後に更新された行が優先されます。

重要! ピアツーピアレプリケーションは、すべてのビジネスアプリケーションに対応しているわけではありません。環境に適している場合、カスタムのコンフリクト解決手順を作成するなど慎重な分析と実行が必要です。一般的に、それらはこのデモの手順よりも複雑です。このデモは、本番環境でのピアツーピア展開を行う根拠として使用しないでください。ピアツーピアレプリケーションの詳細については、『SharePlex管理ガイド』を参照してください。

デモのための事前の作業

デモを開始する前に、以下の説明に従ってデモ用オブジェクトをインストールします。

注意: スクリプトを実行するには、レプリケーションに含まれるテーブルのReplica IdentityをFullに設定します。

デモオブジェクトのインストール

pg_p2p.sqlスクリプトとpg_od.sqlスクリプトは、これらのデモで使用するデモオブジェクトをインストールします。これらのスクリプトは、SharePlex製品ディレクトリのutilサブディレクトリに保存されています。

以下の手順でスクリプトを実行します。

  • まずpg_od.sqlを実行し、次にpg_p2p.sqlを実行します。
  • デモに使用するソースシステムとターゲットシステム上でスクリプトを実行します。
  • DBAロールを持つ既存のユーザとしてこれらをPSQLで実行します。

注意: これらのスクリプトでは、デモオブジェクトをインストールするスキーマを入力するよう求められます。さらに、pg_p2p.sqlでは、正確なデータの信頼できるソースとなるシステムの名前を入力するよう求められます。

デモオブジェクトの説明

od_employee

Name

Null?

Type

emp_no not null int
emp_first_name   varchar(20)
emp_last_name   varchar(20)
emp_dob   date
emp_dept_no   int
emp_timestamp   date

exc_table

Name

Null?

Type

exc_no not null int
exc_type   varchar (6)
exc_target_table   varchar (66)
exc_fixed   varchar (3)
exc_info   varchar (500)
exc_timestamp   date

exc_source

Name

Type

pri_system varchar

注意: これらのテーブルとは別に他のデモオブジェクトも作成されますが、このデモでは扱いません。

オブジェクトの準備

注意: このデモでは、デモオブジェクトがdemoというスキーマにあることを前提としています。異なる場合は、実際のスキーマで置き換えてください。

両方のシステム両方のデータベースで以下の手順を実行します。

  1. sp_ctrlを実行します。
  2. SharePlexをシャットダウンします。

    sp_ctrl(peer1)>shutdown

  3. ora_cleanspユーティリティを実行します。これにより、前のデモからのキューを削除し、前の設定を非アクティブにします。
  4. od_employeeテーブルをTRUNCATEします。
  5. SharePlexデモオブジェクトを所有するユーザとしてPSQLにログインします。
  6. SharePlex製品ディレクトリのutilサブディレクトリからpg_p2p.sqlスクリプトを実行します。これにより、od_employee_genデモのコンフリクト解決ルーチンがインストールされます。以下のプロンプトが表示されます。

    • プロシージャのスキーマ
    • 正確なデータの信頼できるソースとなるシステムの名前pri_system。本番展開と同様に、コンフリクト解決では信頼できる情報源の操作が優先されます。このデモでは、このシステムをpeer1と呼び、もう1つのシステムをpeer2と呼びます。
  7. od_employeeテーブルのReplica IdentityFullに設定します。

SharePlexの設定

以下の手順でSharePlexを設定します。

  1. 各システムで、conflict_resolution.databaseファイルをテキストエディタで開きます。このファイルの保存場所は、SharePlex変数データディレクトリのdataサブディレクトリです。

    注意: Postは、レプリケーションの競合が発生したときにこのファイルをチェックし、呼び出すべき解決プロシージャがあるかどうかを判断します。

  2. 各システムで、conflict_resolution.databaseファイルに以下のエントリを作成します。各列を少なくとも数個のスペースかタブ文字で区切ります。

    demo.od_employee IUD demo.od_employee_gen

    注意: 最初のコンポーネントはテーブルで、2番目はそのテーブルで競合が発生した場合に解決ルーチンが呼び出される操作タイプを指定し、3番目は使用される解決ルーチンの名前です。

  3. 各システムで、sp_copを開始します。
  4. 各システムで、sp_ctrlを開始します。
  5. peer1信頼できるソースに、peer2上のod_employeeテーブルにod_employeeテーブルを複製するod_peer1という名前の設定ファイルを作成します。

    sp_ctrl(peer1)> create config od_peer1

    demo.od_employee demo.od_employee peer2@r.database
  6. peer22番目のソースに、peer1上のod_employeeテーブルにod_employeeテーブルを複製するod_peer2という名前の設定ファイルを作成します。

    sp_ctrl(peer2)> create config od_peer2

    demo.od_employee demo.od_employee peer1@r.database

レプリケーションのアクティベーションと開始

以下の手順でレプリケーションを有効化し、開始します。

  1. peer1od_peer1の設定をアクティベーションします。

    sp_ctrl(peer1)> activate od_peer1
  2. peer2od_peer2の設定をアクティベーションします。

    sp_ctrl(peer2)> activate od_peer2
  3. 各システムで、設定が正常にアクティベーションされたことを確認します。「File Nameファイル名」の下に「od_peer1」または「od_peer2システムにより異なるという名前が表示され、「State状態」の下に「Active」と表示されます。

    sp_ctrl(source)>list config

信頼できるソースの優先度のデモ

このデモでは、peer1で発生したINSERTで、peer2から複製された競合するINSERTが上書きされます。

  1. 両方のシステムで、Exportプロセスを停止します。
  2. 両方のシステムで、demoデモオブジェクトのオーナーとしてPSQLにログインします。
  3. peer2で、od_employeeに行を挿入します。

    insert into od_employee values(1, 'John', 'Doe', '1949-04-01', 1, '2022-01-01');

  4. peer1で同じ行同じ値を挿入します。

    insert into od_employee values(1, 'John', 'Doe', '1949-04-01', 1, '2022-01-01');

  5. 両方のシステムで、Exportプロセスを再開します。
  6. この操作によってコンフリクトが発生しますが、Postはconflict_resolution.databaseファイルの指示に基づいて自動的に解決します。
  7. 両方のシステムで、demo.exc_tableを表示し、競合が解決されたことを確認します。「コンフリクト解決の結果を見る」を参照してください。

タイムスタンプの優先度のデモ

このデモでは、UPDATEステートメントのコンフリクトが発生するたびに、emp timestamp列の値がより新しい行が優先されます。

注意: タイムスタンプの優先順位を機能させるためには、EMP_TIMESTAMPフィールドを他の列と共にNULLでない値に変更しなければなりません。UPDATE文のtimestamp列が更新されていないか、NULL値に変更されている場合、ストアドプロシージャは競合を解決できません。同期外れの問題が発生します。

  1. 両方のシステムで、Exportプロセスを停止します。
  2. 両方のシステムで、demoデモオブジェクトのオーナーとしてPSQLにログインします。
  3. peer1で、od_employeeテーブルのemp_first_nameEMP_TIMESTAMP列を以下のように更新します。
    updateod_employeesetemp_first_name='James',emp_timestamp='2022-07-01'whereemp_no=1;
  4. peer2で、更新値は異なるが同じキー値を使用して、同じ列を更新します。
    update od_employee set emp_first_name = 'Harry', emp_timestamp = '2022-08-02' where emp_no = 1;
  5. 両方のシステムで、Exportプロセスを再開します。
  6. 両方のシステムで、更新した行を選択し、より新しいemp_ timestamp値が含まれていることを確認します。
  7. 両方のシステムで、demo.exc_tableを表示し、競合が解決されたことを確認します。「コンフリクト解決の結果を見る」を参照してください。

コンフリクト未解決のデモ

このデモでは、DELETE文が競合を発生させても、それは無視されます。

  1. 両方のシステムで、Exportプロセスを停止します。
  2. 両方のシステムで、demoデモオブジェクトのオーナーとしてPSQLにログインします。
  3. peer1で、以下のように行を削除します。
    deletefromod_employeewhereemp_no=1;
  4. peer2で、同じ行を削除します。
    delete from od_employee where emp_no = 1;
  5. 両方のシステムで、Exportプロセスを再開します。
  6. 両方のシステムで、demo.exc_tableを表示し、競合が解決されたことを確認します。「コンフリクト解決の結果を見る」を参照してください。

コンフリクト解決の結果を見る

exc_tableという名前のテーブルが、デモオブジェクトのインストール時に指定したスキーマにインストールされました。PSQLを通じて、それぞれのコンフリクトに関する情報を見ることができます。以下はテーブルの説明です。

説明
EXC_NO コンフリクトの例外番号。
EXC_TYPE SQL 文の種類。INSERT、UPDATE、DELETE のいずれか。
EXC_TARGET_TABLE コンフリクトが発生したテーブル。
EXC_FIXED

コンフリクト解決ルーチンの結果。YESは、ルーチンが成功したことを意味します。NOは、ルーチンが失敗し、行を手動で正しい値に変更する必要があることを意味します。

EXC_INFO コンフリクトの原因。
EXC_TIMESTAMP このマシンでコンフリクトが発生した時間。

競合解消のデモ - PostgreSQLからOracleへ

前提条件: 先に進む前に、SharePlexのデモオブジェクトがインストールされていることを確認します。「デモのための事前の作業」を参照してください。

このデモでは、レプリケーションのコンフリクトを解決するために一般的なコンフリクト解決手順を使用するようSharePlexを設定します。汎用コンフリクト解決では、1つのPL/SQLプロシージャを使用して複数のテーブルのコンフリクトを解決できます。

次のような紛争解決戦略が示されています。

  • 信頼できるソースの優先順位 - 以下の手順では、競合が発生した場合に優先される「信頼できる」ソースとして、1つのシステムを定義します。このデモはINSERTに基づいています。信頼できる情報源で発生したすべてのINSERTは、他のシステムからのINSERTを上書きします。このデモでは、信頼できるソースをpeer1すなわちPostgreSQL、もう一方のシステムをpeer2すなわちOracleとします。
  • タイムスタンプの優先順位 - このデモはUPDATEに基づいています。競合がある場合、最後に更新された行が優先されます。

重要! ピアツーピアレプリケーションは、すべてのビジネスアプリケーションに対応しているわけではありません。環境に適している場合、カスタムのコンフリクト解決手順を作成するなど慎重な分析と実行が必要です。一般的に、それらはこのデモの手順よりも複雑です。このデモは、本番環境でのピアツーピア展開を行う根拠として使用しないでください。ピアツーピアレプリケーションの詳細については、『SharePlex管理ガイド』を参照してください。

デモのための事前の作業

デモを開始する前に、以下の説明に従ってデモ用オブジェクトをインストールします。

注意: 以下の事前作業はOracleピアのみに該当します。PostgreSQLピアの事前作業については、「デモの事前作業 - PostgreSQL」を参照してください。

デモオブジェクトのインストール

p2p.sqlod.sqlスクリプトは、これらのデモで使用するデモオブジェクトをインストールします。これらのスクリプトは、SharePlex製品ディレクトリのutilサブディレクトリに保存されています。

以下の手順でスクリプトを実行します。

  • まずod.sqlを実行し、次にp2p.sqlを実行します。
  • デモに使用するソースシステムとターゲットシステム上でスクリプトを実行します。
  • SQL*Plusで、DBAロールを持ち、SELECT ANY TABLE権限を持つ既存ユーザとして実行してください。

スクリプトは以下の項目を求めるプロンプトを表示します。

  • デモオブジェクトをインストールするスキーマ。
  • デモオブジェクトのテーブルスペース。
  • SharePlexの以前のバージョンからの古いデモオブジェクトを削除したいかどうか。古いオブジェクトを削除するには、そのスキーマ名を指定します。
デモオブジェクトの説明

od_employee

Name

Null?

Type

EMP_NO NOT NULL NUMBER
EMP_FIRST_NAME   VARCHAR2
EMP_LAST_NAME   VARCHAR2
EMP_DOB   DATE
EMP_DEPT_NO   NUMBER
EMP_TIMESTAMP   DATE

od_timesheet

Name

Null?

Type

TS_EMP_NO   NUMBER
TS_IN_TIME   DATE
TS_OUT_TIME   DATE
TS_MOD_TIME   DATE

od_department

Name

Null?

Type

DEPT_NO NOT NULL NUMBER
DEPT_NAME   VARCHAR2
DEPT_CODE   VARCHAR2

od_salary

Name

Null?

Type

SALE_EMP_NO   NUMBER
SAL_VALUE   NUMBER
SAL_CHANGED   DATE

od_sales_emp_data

Name

Null?

Type

EMP_NO_KEY NOT NULL NUMBER
EMPLOYEE_NAME   VARCHAR2 (70)
SALARY   NUMBER
DEPARTMENT   VARCHAR2 (50)

oxc_table

Name

Null?

Type

EXC_NO NOT NULL NUMBER
EXC_TYPE   VARCHAR2 (6)
EXC_TARGET_TABLE   VARCHAR2 (66)
EXC_FIXED   VARCHAR2 (3)
EXC_INFO   VARCHAR2 (500)
EXC_TIMESTAMP   DATE

オブジェクトの準備

注意: このデモでは、デモオブジェクトがdemoというスキーマにあることを前提としています。異なる場合は、実際のスキーマで置き換えてください。

以下の手順では、Oracleピア用のデモオブジェクトを準備する方法について説明します。PostgreSQLピアのデモオブジェクトを準備する方法については、「オブジェクトの準備」を参照してください。

Oracleピアで以下の手順を実行します。

  1. sp_ctrlを実行します。
  2. SharePlexをシャットダウンします。

    sp_ctrl(peer1)>shutdown

  3. ora_cleanspユーティリティを実行します。これにより、前のデモからのキューを削除し、前の設定を非アクティブにします。
  4. od_employeeテーブルをTRUNCATEします。
  5. デモオブジェクトを所有するユーザに、SharePlexの初回インストール時にSharePlexスキーマにインストールされたsp_crパッケージを実行するシステム特権を付与します。

    SQL>grant execute on sp_cr to user_name

  6. SharePlexデモオブジェクトを所有するユーザとしてSQL *Plusにログインします。
  7. SharePlex製品ディレクトリのutilサブディレクトリからp2p.sqlスクリプトを実行します。これにより、od_employee_genデモのコンフリクト解決ルーチンがインストールされます。以下のプロンプトが表示されます。

    • プロシージャのスキーマとテーブルスペース
    • SharePlexデータベースユーザの名前。

    • 正確なデータの信頼できるソースとなるシステムの名前。本番展開と同様に、コンフリクト解決では信頼できる情報源の操作が優先されます。このデモでは、このシステムをpeer1と呼び、もう1つのシステムをpeer2と呼びます。

SharePlexの設定

以下の手順でSharePlexを設定します。

注意: この設定では、Peer1がPostgresqlデータベースで、Peer2がOracleデータベースです。conflict_resolutionファイルの名前はOracleではconflict_resolution.sid、PostgreSQLではconflict_resolution.databaseです。

  1. 各システムで、conflict_resolutionファイルをテキストエディタで開きます。このファイルの保存場所は、SharePlex変数データディレクトリのdataサブディレクトリです。

    注意: Postは、レプリケーションの競合が発生したときにこのファイルをチェックし、呼び出すべき解決プロシージャがあるかどうかを判断します。

  2. 各システムで、conflict_resolutionファイルに以下のエントリを作成します。各列を少なくとも数個のスペースかタブ文字で区切ります。

    demo.od_employee IUD demo.od_employee_gen

    注意: 最初のコンポーネントはテーブルで、2番目はそのテーブルで競合が発生した場合に解決ルーチンが呼び出される操作タイプを指定し、3番目は使用される解決ルーチンの名前です。

  3. 各システムで、sp_copを開始します。
  4. 各システムで、sp_ctrlを開始します。
  5. peer1信頼できるソースに、peer2上のod_employeeテーブルにod_employeeテーブルを複製するod_peer1という名前の設定ファイルを作成します。

    sp_ctrl(peer1)> create config od_peer1

    datasource:r.dbname    
    "demo"."od_employee" ("emp_no", "emp_first_name", "emp_last_name", "emp_dob", "emp_dept_no", "emp_timestamp") "DEMO"."OD_EMPLOYEE" ("EMP_NO", "EMP_FIRST_NAME", "EMP_LAST_NAME", "EMP_DOB", "EMP_DEPT_NO", "EMP_TIMESTAMP") peer2@o.sid

     

  6. peer22番目のソースに、peer1上のod_employeeテーブルにod_employeeテーブルを複製するod_peer2という名前の設定ファイルを作成します。

    sp_ctrl(peer2)> create config od_peer2

    datasource:o.sid    
    "DEMO"."OD_EMPLOYEE" ("EMP_NO", "EMP_FIRST_NAME", "EMP_LAST_NAME", "EMP_DOB", "EMP_DEPT_NO", "EMP_TIMESTAMP") "demo"."od_employee" ("emp_no", "emp_first_name", "emp_last_name", "emp_dob", "emp_dept_no", "emp_timestamp") peer2@r.dbname

     

注意: 上記の例では、ソースとターゲット両方のテーブルで大文字と小文字の区別が異なるため、列マッピング機能が使用されています。

  1. peer2で、SP_OPO_SUPPRESSED_OOSパラメーターを0に設定します。

レプリケーションのアクティベーションと開始

以下の手順でレプリケーションを有効化し、開始します。

  1. peer1od_peer1の設定をアクティベーションします。

    sp_ctrl(peer1)> activate od_peer1
  2. peer2od_peer2の設定をアクティベーションします。

    sp_ctrl(peer2)> activate od_peer2
  3. 各システムで、設定が正常にアクティベーションされたことを確認します。「File Nameファイル名」の下に「od_peer1」または「od_peer2システムにより異なるという名前が表示され、「State状態」の下に「Active」と表示されます。

    sp_ctrl(source)>list config

信頼できるソースの優先度のデモ

このデモでは、peer1で発生したINSERTで、peer2から複製された競合するINSERTが上書きされます。

  1. 両方のシステムで、Exportプロセスを停止します。
  2. 両方のシステムで、demoデモオブジェクトのオーナーとしてデータベースにログインします。
  3. peer1で、od_employeeに行を挿入します。

    insert into od_employee values(1, 'John', 'Doe', '1949-04-01', 1, '2022-01-01');

  4. peer2で同じ行同じ値を挿入します。

    INSERT INTO OD_EMPLOYEE VALUES (1,'John','Doe',to_date ('04/01/1949','MM/DD/RRRR'),1,to_date('01/01/2022','MM/DD/RRRR'));

  5. 両方のシステムで、Exportプロセスを再開します。
  6. この操作によってコンフリクトが発生しますが、Postはconflict_resolutionファイルの指示に基づいて自動的に解決します。
  7. 両方のシステムで、demo.exc_tableを表示し、競合が解決されたことを確認します。「コンフリクト解決の結果を見る」を参照してください。

タイムスタンプの優先度のデモ

このデモでは、UPDATEステートメントのコンフリクトが発生するたびに、emp_timestamp列の値がより新しい行が優先されます。

注意: タイムスタンプの優先順位を機能させるためには、EMP_TIMESTAMPフィールドを他の列と共にNULLでない値に変更しなければなりません。UPDATE文のtimestamp列が更新されていないか、NULL値に変更されている場合、ストアドプロシージャは競合を解決できません。同期外れの問題が発生します。

  1. 両方のシステムで、Exportプロセスを停止します。
  2. 両方のシステムで、demoデモオブジェクトのオーナーとしてデータベースにログインします。
  3. peer1で、od_employeeテーブルのemp_first_nameemp_timestamp列を以下のように更新します。
    updateod_employeesetemp_first_name='James',emp_timestamp='2022-07-01'whereemp_no=1;
  4. peer2で、同じキー値で異なる更新値を使用して同じ列を更新します。
    UPDATE OD_EMPLOYEE SET EMP_FIRST_NAME = 'Harry', EMP_TIMESTAMP = to_date('02/02/2017','MM/DD/RRRR') WHERE EMP_NO = 1;
  5. 両方のシステムで、Exportプロセスを再開します。
  6. 両方のシステムで、更新した行を選択し、より新しいemp_ timestamp値が含まれていることを確認します。
  7. 両方のシステムで、demo.exc_tableを表示し、競合が解決されたことを確認します。「コンフリクト解決の結果を見る」を参照してください。

コンフリクト未解決のデモ

このデモでは、DELETE文が競合を発生させても、それは無視されます。

  1. 両方のシステムで、Exportプロセスを停止します。
  2. 両方のシステムで、demoデモオブジェクトのオーナーとしてdatabaseにログインします。
  3. peer1で、以下のように行を削除します。
    deletefromod_employeewhereemp_no=1;
  4. peer2で同じ行を削除します。
    DELETE FROM OD_EMPLOYEE WHERE EMP_NO = 1;
  5. 両方のシステムで、Exportプロセスを再開します。
  6. 両方のシステムで、demo.exc_tableを表示し、競合が解決されたことを確認します。「コンフリクト解決の結果を見る」を参照してください。

コンフリクト解決の結果を見る

exc_tableという名前のテーブルが、デモオブジェクトのインストール時に指定したスキーマにインストールされました。PSQL for PostgreSQLおよび SQLPLUS for Oracleを使用して、それぞれのコンフリクトに関する情報を表示することができます。以下はテーブルの説明です。

説明
EXC_NO コンフリクトの例外番号。
EXC_TYPE SQL 文の種類。INSERT、UPDATE、DELETE のいずれか。
EXC_TARGET_TABLE コンフリクトが発生したテーブル。
EXC_FIXED

コンフリクト解決ルーチンの結果。YESは、ルーチンが成功したことを意味します。NOは、ルーチンが失敗し、行を手動で正しい値に変更する必要があることを意味します。

EXC_INFO コンフリクトの原因。
EXC_TIMESTAMP このマシンでコンフリクトが発生した時間。

 

PostgreSQLからPostgreSQLへのレプリケーションの設定例

SharePlexは、レプリケーションの手順を「設定」から取得します。これは、何をすべきかをSharePlexにユーザが定義して指定するものです。レプリケートするオブジェクトのグループごとに設定ファイルを作成します。

設定はソースシステム上にあり、以下を定義します。

  • datasourceソースデータベース – ソースデータベースの識別子。
  • source objects – レプリケートするデータを含むソースデータベース内のオブジェクトの名前。データベース内の一部またはすべてのテーブルをレプリケートすることができます。
  • target objects – レプリケートされたデータを受け取るターゲットシステムのデータベース内のオブジェクト名。
  • routing map – ターゲットシステムの名前と、ターゲットがデータベースの場合はその識別子。

デモ用の設定を作成するには:

  1. ソースシステムのsp_ctrlcreate configコマンドを実行し、sample_configという名前のレプリケーション設定を作成します。これでデフォルトのテキストエディタが開きますLinuxシステムではvi

    sp_ctrl(sysA)>activate config sample_config

    以下のテンプレート1を参照しながら、設定を構築します。

    テンプレート1: 基本的なデモ設定のsample_config

    datasource:r.source_DB    
    "qarun"."basic_c127" "splex"."basic_c127" 10.250.14.105@r.sp_ad

     

  2. ファイルのコメント行でない最初の行に、空白を入れずに以下のように入力します。

    datasource:r.source_databasename

    source_databasenameにはソースインスタンスのPostgreSQLデータベース名を代入これは、データがレプリケートされるテーブルを見つける場所をSharePlexに伝えます。r.は、PostgreSQLのデータがレプリケートされていることをSharePlexに伝えます。

  3. 次の行に、ソーステーブルのオーナー名splexとテーブル名demo_srcを入力し、2つの項目の間をスペースではなくドット.で区切ります。オーナーの名前をテーブル名に使用することで、SharePlexは正しいテーブルに確実にレプリケートします。これは、データベース内の異なるスキーマの異なるテーブルの名前が同一の場合があるからです。

    splex.demo_src
  4. 少なくとも数個のスペースかタブを入力して2列目を作成します。Enterキーは押さないでください
  5. 2列目に、ターゲットテーブルのオーナー名splexとテーブル名demo_destを入力し、2つの項目の間をスペースではなくドット.で区切ります

    splex.demo_dest
  6. 数個のスペースかタブを入力して3列目を作成します。Enterキーは押さないでください

  7. 3列目に、以下の項目をスペースを空けずに入力します。これにより設定のルーティングマップが作成され、レプリケートされたデータを置く場所をSharePlexに伝えます。

    • ターゲットシステムの名前
    • @記号
    • 文字r
    • ドット.
    • ターゲットインスタンス

    例:

    sysB@r.databasename

  8. ファイルを保存し、エディタを終了します。これでsp_ctrlプロンプトに戻ります。
  9. オプション設定を表示するには、ソースシステムのsp_ctrlview configコマンドを実行します。

    sp_ctrl(sysA)>view config sample_config
  10. ソースシステムのsp_ctrlで設定をアクティベーションします。設定名では大文字と小文字が区別されます。

    sp_ctrl(sysA)>activate config sample_config
  11. 設定がアクティブであることを確認するには、ソースシステムで以下のsp_ctrlコマンドを入力し、すべての設定のリストを表示します。「File Nameファイル名」の下にsample_configの設定が表示され、「State状態」の下に「Active」と表示されます。

    sp_ctrl(sysA)>list config

ヒント: 設定のアクティベーションに失敗した場合は、sp_ctrlでview config sample_configコマンドを使用してファイルを表示します。テンプレート1と比較し、入力した情報がすべて正しいことを確認してください。例えば、あるはずのない余分なスペースがないか、データベース名の前のr.のような構成要素が欠けていないかをチェックします。

設定ファイルの間違いを修正するには:

  1. 設定ファイルをアクティベーションする前にまたはアクティベーションに失敗した場合はsp_ctrlbeedit config sample_configコマンドを実行します。
    このコマンドによってファイルがテキストエディタで開きます。
  2. ファイルを編集して変更を加えます。
  3. 変更を保存し、アクティベーションを再試行します。

注意: アクティブな設定を変更するには、まずcopyconfigコマンドを使用して設定を新しいファイルにコピーし、そのコピーを編集してアクティベーションする必要があります。

PostgreSQLソースでのレプリケーションの設定、アクティベーション、検証

注意: 先に進む前に、SharePlexのデモオブジェクトがインストールされていることを確認します。

このデモでは、レプリケーション設定を作成してアクティベーションし、ソーステーブルにデータを読み込んで、データがターゲットテーブルに正常にレプリケートされたことを確認します。また、同期がとれていないテーブルの修復も行います。

設定ファイルの作成

注意: このデモでは、デモオブジェクトがdemoというスキーマにあることを前提としています。異なる場合は、実際のスキーマで置き換えてください。

ソースシステムで以下の手順を実行します。

  1. sp_ctrlを実行します。

  2. 以下のコマンドを実行して、sample_departmentsample_salarysample_timesheetsample_employeeの各テーブルをターゲットシステム上の同名のテーブルに複製するsample_configという名前の設定ファイルを作成します。

    sp_ctrl(source)>create config sample_config

  3. テキストエディタで、以下のテンプレートに基づいて設定ファイルを作成します。コンポーネントソース指定、ターゲット指定、ルーティングマップの文字と文字の間にはスペースを入れず、各コンポーネントの間には少なくとも1つのスペースを入れます。

# sample_config configuration file

datasource:r.source_databasename

"demo"."sample_department"

"demo"."sample_department"

target_system@r.target_databasename

"demo"."sample_salary" "demo"."sample_salary"

target_system@r.target_databasename

"demo"."sample_timesheet" "demo"."sample_timesheet" target_system@r.target_databasename
"demo"."sample_employee" "demo"."sample_employee" target_system@r.target_databasename

ここで:

  • # はコメントを示します。
  • source_databasenameはソースデータベースのPostgreSQLデータベース名です。
  • target_systemはターゲットシステムの名前またはIPアドレスです。
  • target_databasenameはターゲットデータベースのPostgreSQLデータベース名です。
  1. ファイルを保存し、エディタを終了します。SharePlexは自動的にconfigサブディレクトリにファイルを保存します。
  2. sp_ctrlで、設定ファイルが正常にアクティベーションされることを確認します。

    sp_ctrl(source)>verify config sample_config

構文設定

PostgreSQLからPostgreSQLへのレプリケーションの設定ファイルの例:

# data2k configuration file

datasource:r.source_databasename

"demo"."data2k" "demo"."data2k" target_system@r.target_databasename

PostgreSQLからOracleへのレプリケーションの設定ファイルの例:

# data2k configuration file

datasource:r.source_databasename

"demo"."data2k" "demo"."data2k" target_system@o.target_databasename

設定のアクティベーション

ソースシステムで以下の手順を実行します。設定をアクティベーションすると、SharePlexは、指定されたソースデータに行われたトランザクションの変更をキャプチャする準備が整います。

  1. 設定をアクティベーションします。

    sp_ctrl(source)>activate config sample_config

    注意: 設定名では大文字と小文字が区別されます。

  2. 設定が正常にアクティベーションされたことを確認します。「File Nameファイル名」の下に「config sample_config」という名前が表示され、「State状態」の下に「Active」と表示されます。

    sp_ctrl(source)>list config

関連ドキュメント

The document was helpful.

評価を選択

I easily found the information I needed.

評価を選択