英語版マニュアル
1.1 新機能
2 概要
2.3.1.9 Master Node
2.3.2.4 Publication
2.3.2.7 Subscription
2.4.5.1 Single Host
4.1.1 Refresh
10 付録
10.3.2.6 Oracle Errors
EDB Postgres™レプリケーションサーバー
マルチマスターサポート付き

ユーザーガイド
このドキュメントでは、 EDB xDB Replication Server のインストール、構成、アーキテクチャ、および操作について説明し ます 。 EDB xDB(クロスデータベース)Replication Server(以降xDB Replication Serverと呼びます )は、PostgreSQL®およびEDB Postgres™Advanced Serverで使用可能な非同期レプリケーションシステムです。後者は、単にAdvanced Serverと呼ばれます 。
xDB Replication Serverは、 シングルマスター (マスターからスレーブ)レプリケーションまたはマルチマスターレプリケーションの2つの異なるレプリケーションモデルのいずれかに基づいたレプリケーションシステムの実装に使用できます 。
注: Oracle Real Application Clusters(RAC)およびOracle Exadataは、xDB Replication Serverではサポートされていません。これらのOracle製品は、xDB Replication Serverで評価および認定されていません。 xDB Replication Serverで使用できる認定およびサポートされているデータベースサーバー製品については、セクション10.1を参照してください。
注:サポートされているソースおよびターゲットデータベースサーバー構成の詳細については、セクション10.1.3を参照してください。
1.1 新機能
•
PostgreSQLおよびAdvanced Serverバージョン10以降の 宣言型パーティション機能を使用して作成されたパーティションテーブルは、ログベースのシングルマスターまたはマルチマスター複製システムで複製できるようになりました。詳細については、セクション7.10を参照してください。
以下の説明では、 用語は、言語キーワード、ユーザー指定の値、リテラルなどの単語または単語のグループを指します。用語の正確な意味は、使用されるコンテキストによって異なります。
•
斜体フォントは、通常、初めて定義する文に新しい用語を導入します。
•
Fixed-width (mono-spaced) fontは、SQLコマンド、例で使用される特定のテーブル名と列名、プログラミング言語のキーワードなど、文字通り指定する必要がある用語に使用されます。たとえば、 SELECT * FROM emp;
•
Italic fixed-width fontは、ユーザーが実際の使用で値を置き換える必要がある用語に使用されます。たとえば、 DELETE FROM table_name ;
•
角カッコ[]は、囲まれた用語の1つを置換できることを示します。たとえば、 [ a | b ]は、「 a 」または「 b 」のいずれか、またはどちらも選択しないことを意味します。
•
中括弧{}は、囲まれた選択肢の1つを指定する必要があることを示します。たとえば、 { a | b }は、「 a 」または「 b 」のいずれか1つを指定する必要があることを意味します。
•
省略記号...は、前の用語が繰り返される可能性があることを示します。たとえば、 [ a | b ] ...は、「 baaba 」というシーケンスがあることを意味します。
•
このドキュメントの情報の多くは、PostgreSQLとEDB Postgres Advanced Serverデータベースシステムに同じように適用されます。 Advanced Server という用語は、EDB Postgres Advanced Serverを指すために使用されます。 Postgresという用語は、PostgreSQLとAdvanced Serverの両方を総称するために使用されます。これら2つのデータベースシステムを区別する必要がある場合は、特定の名前、PostgreSQLまたはAdvanced Serverが使用されます。
•
PostgreSQLまたはAdvanced Server製品のインストールディレクトリパスは、 POSTGRES_INSTALL_HOME と呼ばれます。 PostgreSQL Linuxインストールの場合、デフォルトは/opt/PostgreSQL/ x .バージョン10以前のx 。それ以降のバージョンでは、PostgreSQLコミュニティパッケージを使用してください。 PostgreSQL Windowsインストールの場合、デフォルトはC:\Program Files\PostgreSQL\ x . x 。バージョン10以前の対話型インストーラーを使用して行われるAdvanced Server Linuxインストールの場合、これはデフォルトで/opt/PostgresPlus/ x . x ASまたは/opt/edb/as x . x 。 RPMパッケージを使用して行われるAdvanced Server Linuxインストールの場合、デフォルトは/usr/ppas- x . xまたは/usr/edb/as x . x 。 Advanced Server Windowsインストールの場合、デフォルトはC:\Program Files\PostgresPlus\ x . x ASまたはC:\Program Files\edb\as x . x 。製品のバージョン番号はxで表され. xまたはバージョン10以降の場合はxx 。
2 概要
xDB Replication Serverは、レプリケーションシステムの実装を可能にするソフトウェア製品です。 複写システムは、その目的は、ある場所から別の場所へのデータのコピーを作成し、コピーされたデータを確保することである時間をかけてオリジナルと同じであり、ソフトウェアとハードウェアです。
•
シングルマスターレプリケーション(SMR)。テーブル行の変更(挿入、更新、および削除)は、指定されたマスターデータベースで発生することが許可されています。これらの変更は、1つ以上のスレーブデータベースのテーブルに複製されます。スレーブデータベースのレプリケートされたテーブルは、指定されたマスターデータベースを除き、変更を受け入れることができません。 (これは、マスターからスレーブへのレプリケーションとも呼ばれます。)
•
マルチマスターレプリケーション(MMR)。同じテーブル定義と初期行セットを持つテーブルが作成される2つ以上のデータベースが指定されます。テーブル行の変更(挿入、更新、削除)は、どのデータベースでも発生することが許可されています。特定のデータベースのテーブル行に対する変更は、他のすべてのデータベースの対応するテーブルに複製されます。
•
レプリケーションオラクルからのPostgreSQL へ
•
OracleとAdvanced Serverの間のいずれかの方向の レプリケーション
•
SQL ServerとPostgreSQLの間のいずれかの方向の レプリケーション
•
SQL ServerとAdvanced Server間のいずれかの方向の レプリケーション
注:特定のデータベースは、シングルマスター複製システムとマルチマスター複製システムの両方に同時に参加できません。
xDB Replication Serverは、 publishおよびsubscribe と呼ばれるアーキテクチャを使用 します 。複製システムによるコピーに使用可能にするデータは、パブリケーションとして定義されます。そのデータのコピーを取得するには、そのパブリケーションを「サブスクライブ」する必要があります。サブスクライブの方法は、シングルマスター複製システムとマルチマスター複製システムではわずかに異なります。
xDB Replication Serverでは、 パブリケーションは、データベース内の名前付きのテーブルとビューのセットとして定義されます。パブリケーションを含むデータベースは、そのパブリケーションのパブリケーションデータベースと呼ばれます 。
シングルマスターレプリケーションシステムでは、xDB Replication Serverパブリケーションのコピーを取得するには、サブスクリプションを作成する必要があります。 xDB Replication Server サブスクリプションは、パブリケーションのコピー先であるデータベースへのパブリケーションの名前付き関連付けです。このデータベースは、 サブスクリプションデータベースと呼ばれます 。
シングルマスターレプリケーションシステムでは、xDB Replication Serverが次のプロセスのいずれかを開始および完了すると、 レプリケーションが発生すると言われます。1)最後のレプリケーションが発生してからパブリケーションの行に加えられた変更を、サブスクリプションデータベース(同期と呼ばれる)。または2)パブリケーションの行をサブスクリプションデータベースの空のテーブルにコピーします(スナップショットと呼ばれます)。スナップショットと同期の詳細については、セクション2.2.6を参照してください。
サブスクリプション・テーブルは、パブリケーション内のテーブルまたはビューに対応するから作成サブスクリプションデータベース内のテーブルです。
注:シングルマスターレプリケーションシステムでは、xDB Replication Serverはパブリケーションに含まれる各ビューのサブスクリプションデータベースにテーブルを作成します。
マルチマスタ複製システムでは、概念と定義データベースの任意の対の間に起こり得る1)同期(マスタノードとも呼ばれる)の複製に関与する: 複製は、以下の変更を加えたシングルマスタ複製システムとほぼ同じですシステム; 2)スナップショットは、マスター定義ノードとして指定されたパブリケーションデータベースから、他のマスターノードのいずれかに発生します。
pp_xdb_repsvr_ug_overview_1
pp_xdb_repsvr_ug_overview_2
pp_xdb_repsvr_ug_overview_3
pp_xdb_repsvr_ug_overview_4
pp_xdb_repsvr_ug_overview_4_mmr
xDB Replication Serverは 、シングルマスタレプリケーションシステムが実装されている場合に、 マスタからスレーブへのレプリケーションを実行します。パブリケーションがマスターであり、サブスクリプションがスレーブです。マスターとスレーブの関係では、変更はマスターからスレーブへの一方向にのみ伝播されます。
pp_xdb_repsvr_ug_overview_5
通常、パブリケーションテーブルまたはサブスクリプションテーブルの定義は変更しないでください。パブリケーションテーブルにそのような変更が行われた場合、DDL変更レプリケーション機能がセクション7.8で説明されているように使用されない限り、それらはサブスクリプションに反映されません。 DDL変更レプリケーション機能を使用せずにテーブル定義を変更すると、将来のレプリケーション試行が失敗する可能性があります。
サブスクリプションテーブルの行を変更しないでください。そのような変更が行われた場合、それらはパブリケーションに反映されません。サブスクリプションテーブルの行に変更が加えられた場合、行がパブリケーションの対応する行と一致しなくなる可能性がかなり高くなります。また、将来のレプリケーションの試行が失敗するリスクもあります。
マスターノードは 、マルチマスタ複製システムに参加しているデータベースです。
パブリケーションが最初に定義されるデータベース(マスターノード)は、 マスター定義ノード (MDN) として特別に指定され ます 。マスター定義ノードは常に1つしか存在できませんが、どのマスターノードがマスター定義ノードであるかを変更することは可能です。マスター定義ノードと、マスター定義ノードではない他のすべてのマスターノードを区別することが重要な場合、後者は非MDNノードと呼ばれます。
通常、マスター定義ノードを含むどのマスターノードのテーブル定義も変更しないでください。このような変更が行われた場合、セクション7.8で説明されているDDL変更複製機能を使用して行われない限り、それらはマルチマスター複製システム内の他のノードに伝搬されません。 DDL変更レプリケーション機能を使用せずにテーブルを変更すると、将来のレプリケーションの試行が失敗するリスクがあります。
pp_xdb_repsvr_ug_overview_5_mmr
xDB Replication Serverは、レプリケーションを 非同期的に 実行し ます 。レプリケーションを正常に実行するために、データベースをホストするシステムが常に継続的に実行されている必要はありません。 1つのシステムがオフラインになった場合、複製する保留中のデータがまだあると、オンラインに戻ったときに複製が再開されます。
いずれの方法でも、 ソーステーブルは、レプリケーションデータの 発信元のテーブル(シングルマスターレプリケーションシステムのパブリケーション、または変更がマルチマスターレプリケーションシステムの別のマスターノードにレプリケートされるマスターノード)を参照します。 。
ターゲット表は、ソース表から複製データを受信しているテーブル(シングルマスタ複製システム、またはマルチマスタ複製システム内の他のマスタノードから変更を受信したマスターノードでサブスクリプション・テーブル)です。
では スナップショットレプリケーション 、ターゲット表内のすべての既存の行は、データベース・システムの使用して削除されたTRUNCATEコマンドを。その後、テーブルはパブリケーションのソーステーブルから完全に再ロードされます。
同期複製 、最後の複製以降にソース・テーブル内の行にのみ変更(挿入、更新、および削除)は、ターゲット表に適用されます。
注: SQL TRUNCATEコマンドによって実行されたソーステーブルのすべての行を削除すると、同期レプリケーションのログベースの方法が使用されている場合にのみ、ターゲットテーブルへのレプリケーションが行われます。同期レプリケーションのトリガーベースの方法が使用されている場合、ソーステーブルでTRUNCATEコマンドを実行しても、ターゲットテーブルに効果が複製されません。トリガーベースの方法を使用する場合は、ソース表からターゲット表へのスナップショットを実行する必要があります。 (トリガーベースの方法とログベースの方法の違いは次のとおりです。)
で トリガーベースの方法ソーステーブル内の行への変更は、行ベースのトリガの発火につながります。これらのトリガーは、シャドウテーブルの変更を記録します。その後、シャドウテーブルに記録された変更は、シャドウテーブルから定期的に抽出され、メモリ内データ構造に変換され、JDBCを使用して実行されるSQLステートメントによってターゲットテーブルに適用されます。トリガーベースの方法については、セクション2.2.9を参照してください。
では 、ログベースの方法 、ソース表の行への変更は、Postgresデータベース・サーバで使用可能な論理デコード機能により実現した非同期ストリーミングレプリケーションを使用して、先行書き込みログ・セグメント(WALファイル)から抽出されています。抽出された変更はメモリ内のデータ構造に変換され、JDBCを使用して実行されるSQLステートメントによってターゲットテーブルに適用されます。ログベースの方法については、セクション2.2.10を参照してください。
パブリケーションがシングルマスターレプリケーションシステムで作成される場合、そのパブリケーションは スナップショットのみのパブリケーション として定義できます 。スナップショットのみのパブリケーションからのレプリケーションは、スナップショットレプリケーションメソッドを使用してのみ実行できます。スナップショットのみのパブリケーションでは、同期レプリケーションは許可されていません。
スナップショットのみのパブリケーションを使用する利点については、 セクション 2.4.4を参照してください 。
OracleおよびSQL Serverのみ: OracleおよびSQL Serverのターゲットテーブルは、 INSERTステートメントのJDBCバッチを使用してロードされます。
Postgresのみ:一般に、切り捨てとCOPYを使用すると、テーブル全体に対してSQL DELETEステートメントを実行してから、 INSERTステートメントのJDBCバッチを使用して行を追加する場合よりも一般に高速であるため、PostgresターゲットテーブルはJDBC COPYコマンドを使用してロードされます。 COPYコマンドが失敗すると、パブリケーションサーバーはINSERTステートメントのJDBCバッチを使用してスナップショットを再試行します。
(データベースの種類に関係なく)ターゲットテーブルに BYTEA 、 BLOB 、 CLOB などのラージオブジェクトデータ型が含まれている場合、 INSERTステートメントを使用してバッチごとに1行ずつロードされます。これは、潜在的に大きな行に起因するヒープスペースエラーを回避するためです。ロード時間は、バッチごとに複数の挿入を許可することで短縮できます。これは、セクション5.8.1で説明されている構成オプションlobBatchSize調整することで実行できます。
注: Advanced Serverは、データ型の多くのエイリアスをサポートしています。 BYTEA変換されるこのようなエイリアスは、ラージオブジェクトデータ型として扱われます。 Advanced Serverデータ型のリストについては、 『Oracle Developers Reference Databaseのデータベース互換性 』を参照してください。 (Advanced Serverバージョン9.5以前のバージョンのOracle開発者ガイドのデータベース互換性を参照してください。)
特定の状況では、特定のタイプのOracleパーティションテーブル用に作成された対応するPostgresターゲットテーブルは、継承されたテーブルのセットです。これらの場合、切り捨てられるのではなく、継承された子テーブルでSQL DELETEステートメントが使用されます。 Oracleパーティションテーブルの複製に関する追加情報については、セクション10.4.1.4を参照してください。
サーバー構成オプションを使用すると、スナップショットレプリケーションプロセスで、JDBC COPY 代わりにOracleデータベースリンクユーティリティを使用して 、OracleパブリケーションからPostgresターゲットテーブルにデータを取り込むことができます。 Oracleデータベースリンクにより、JDBC COPYよりもパフォーマンスが向上します。 Oracleデータベースリンクオプションの使用については、セクション5.8.1を参照してください。
スナップショットレプリケーションを最適化するためのさまざまな構成オプションについては、セクション 5.8.1を参照してください 。
パブリケーションサーバーは、トリガーが作成されたソーステーブルごとにシャドウテーブルも作成します。 シャドウ・テーブルは、所与のソース・テーブルに加えられた変更(挿入、更新、および削除)を記録するXDBのReplication Serverで使用されるテーブルです。シャドウテーブルは、3種類の記録画像を記録します。ソーステーブルに挿入された各行について、シャドウテーブルは挿入された行の画像を記録します。ソーステーブルで更新される既存の各行について、シャドウテーブルは更新された行の変更後イメージを記録します。ソース表から削除された各行について、シャドー表は削除された行の主キー値を記録します。
注:マルチマスターレプリケーションシステムでは、更新の競合検出を実行するために、更新された行の変更前イメージもシャドウテーブルに格納されます。マルチマスターレプリケーションシステムでの競合検出については、セクション6.6を参照してください。
最後のレプリケーションが発生してからソーステーブルに加えられた変更は、SQL INSERT 、 UPDATE 、およびDELETEステートメントを使用してターゲットテーブルに適用されますが、ターゲットテーブルに対して実行される実際のSQLステートメントは、ソーステーブルに対して実行されたSQLステートメントとは異なります。
同期レプリケーションが発生すると、パブリケーションサーバーは 、ターゲットテーブルに対してSQLステートメントのJDBCバッチ( トランザクションセット とも呼ばれます)を実行します 。バッチには、挿入操作を記録する各シャドウテーブル行のINSERTステートメント、更新操作を記録する各シャドウテーブル行のUPDATEステートメント、および削除操作を記録する各シャドウテーブル行のDELETEステートメントが含まれます。各バッチは1つのトランザクションで実行されます。
注:ソース表に対して実行された単一のSQLステートメントは、シャドウ表に多くの行を記録する可能性があり、したがって、ターゲット表に対して実行された多くのSQLステートメントになります。たとえば、単一のUPDATEステートメントがソーステーブルの10行に影響する場合、10行がシャドウテーブルに挿入されます(更新されたソーステーブルの各行に1行)。パブリケーションサーバーがターゲットテーブルに変更を適用すると、10個のUPDATEステートメントが実行されます。
注:効率を高めるために、ソーステーブルへの変更がそれぞれ多数の行に影響するSQLステートメントで構成されている場合、パブリケーションサーバーは準備されたSQLステートメントの使用を使用できます。準備されたSQL文の使用を制御する方法の指示、および同期レプリケーションを最適化するための他の様々な構成オプションの情報については、セクション5.8.2を参照してください。
PostgreSQL 9.4では、 論理デコード ( 論理複製または変更セット抽出とも呼ばれます)と呼ばれる機能が導入されました 。この機能は、先読みログセグメント(WALファイル)から読み取り可能な形式でデータ操作言語(DML)の変更を抽出する機能を提供します。
論理デコードの詳細については、次の場所にあるPostgreSQL Core Documentationを 参照してください 。
•
シングルマスターレプリケーションシステムでは、マスターデータベースがトリガーベースの方法を使用するか、ログベースの方法を使用するかは、セクション 10.1で 説明されているサブスクリプションデータベースの選択ルールに追加の影響を与えません 。たとえば、masterデータベースにログベースの方法が選択されている場合でも、サブスクリプションデータベースは、Postgresバージョン9.4、およびサポートされている以前のバージョンのPostgres、および10.1項で説明したOracleまたはSQL Serverで実行されている可能性があります。
•
wal_level。 logical設定しlogical 。
•
max_wal_senders。同時接続の最大数(つまり、同時に実行されているWAL送信プロセスの最大数)を指定します。ログベースの方法を使用するこのデータベースサーバー上のシングルマスターレプリケーションシステムのマスターデータベースとマルチマスターレプリケーションシステムのマスターノードの合計数に、少なくとも設定します。
•
max_replication_slots。複製スロットの最大数を指定します。データベースサーバーがシングルマスターレプリケーションシステムとマルチマスターレプリケーションシステムの両方をサポートする場合、 max_replication_slotsは両方のレプリケーションシステムの要件の合計に少なくとも設定する必要があります。 SMRシステムをサポートするための最小要件は、ログベースの方法を使用するシングルマスターレプリケーションシステムのマスターデータベースの総数です。 MMRシステムをサポートするための最小要件は、マルチマスターレプリケーションシステム内のマスターノードの総数に、このデータベースサーバーにあるマスターノードの数を掛けたものです。詳細については、セクション2.2.10.4を参照してください。
•
track_commit_timestamp。 on設定onます。この構成パラメーターは、バージョン9.5のPostgresデータベースサーバーにのみ適用されます。詳細については、セクション6.6.1を参照してください。
シングルマスター複製システムのこれらのパラメーターの設定については、セクション 5.1.2 も参照してください 。マルチマスター複製システムについては、セクション6.1.2を参照してください。
さらに 、Postgresデータベースサーバーの pg_hba.conf構成ファイルには、データベースサーバーで実行されているログベースの方法を使用して各データベースのREPLICATIONアクセスを許可するエントリが含まれている必要があります。 xDBレプリケーションコンソールを使用してパブリケーションデータベース定義を作成するときに指定したパブリケーションデータベースユーザー(シングルマスターレプリケーションシステムについてはセクション5.2.2 、マルチマスターレプリケーションシステムについてはセクション6.2.2を参照)にアクセスを許可する必要があります。 xDB Replication Serverコマンドラインインターフェイス(CLI)(セクション8.3.6を参照)。
シングルマスター複製システムのREPLICATIONアクセスの設定については、セクション 5.1.6.3を参照してください 。マルチマスター複製システムについては、セクション6.1.5を参照してください。
論理複製スロットチェンジストリームを表し、単一のデータベースに適用されます。 xDB Replication Serverは、 xdb_ dboid _ pubid形式で作成する各論理レプリケーションスロットにスロット名と呼ばれる一意の識別子を割り当てますdboidはパブリケーションデータベースオブジェクト識別子(OID)で、 pubidはxDB Replicationによって割り当てられたパブリケーションIDです。サーバ。すべてのスロット名は、Postgresデータベースクラスター内で一意です。
データベースサーバーに許可されるレプリケーションスロットの最大数は 、 postgresql.confファイルのmax_replication_slots構成パラメーターによって制御されます。したがって、この構成パラメーターは、データベースサーバー上で実行されるシングルマスターレプリケーションシステムのログベースの方法で定義されたすべてのパブリケーションデータベースと、定義されたマルチマスターレプリケーションシステムのすべてのマスターノードを説明するのに十分な値に設定する必要がありますデータベースサーバーで実行されているログベースの方法で。複製元の使用をサポートするには、追加の複製スロットが必要です(セクションを参照 2.2.10.4 )。シングルマスター複製システムの構成パラメーターに関する追加情報については、セクション5.1.2を参照してください。マルチマスター複製システムについては、セクション6.1.2を参照してください。
変更セットストリームは 、ストリーミングレプリケーションプロトコルを使用して、 WAL送信者プロセス ( walsender ) によってxDBパブリケーションサーバーにアクセスできます。
xDBパブリケーションサーバーは、変更が継続的にストリーミングされるwalsenderインターフェイスを使用して接続します。連続ストリーミングにより、変更を明示的にポーリングする必要がなくなります。
1。
4。
次のスケジュールされた間隔で 、トリガーベースのセクション2.2.9で説明したのと同じ方法で、 メモリ内のキャッシュされたデータの変更がSQLステートメントのJDBCバッチ( トランザクションセット と呼ばれ ます )の各ターゲットデータベースに適用されます方法。 1つ以上のターゲットデータベースサーバーにアクセスできない場合、データの変更は、パブリケーションサーバーを実行しているホスト上のローカルファイルに保存されます。インメモリキャッシュとデータ永続性については、セクション2.2.10.5を参照してください。
注:ソーステーブルに対して実行された単一のSQLステートメントは、変更セットストリームで多くの行が変更されて返される可能性があるため、ターゲットテーブルに対して実行された多くのSQLステートメントがあります。たとえば、単一のUPDATEステートメントがソーステーブルの10行に影響する場合、 UPDATEれたソーステーブルの行ごとに1行、変更セットストリームに10行が返されます。パブリケーションサーバーがターゲットテーブルに変更を適用すると、10個のUPDATEステートメントが実行されます。
Postgresバージョン9.5から、 複製オリジン と呼ばれる機能が論理デコードフレームワークに導入されました。複製元により、アプリケーションは論理デコードセッションの特定の側面を識別、ラベル付け、およびマークできます。
複製元については、次の場所にあるPostgreSQL Core Documentationを 参照してください 。
前述のように、ログベースの方法では、WALファイルを使用してパブリケーションテーブルに適用された変更を取得します。 walsenderインターフェースを介して変更を取得した後、パブリケーションサーバーは、SQLステートメントのJDBCバッチで構成されるトランザクションセットを使用して、他のマスターノードに変更セットを適用します。これらの変更が他のターゲットマスターノードのテーブルに適用されると、同じ変更がターゲットマスターノードをホストする各データベースサーバーのWALファイルにも記録されます。
•
max_replication_slots構成パラメータは、パブリケーションサーバは、複製起点のための追加のレプリケーション・スロットを作成できることを保証するために一定の最低レベルに設定しなければなりません。
以下の表に示すために必要な、最低限の設定 max_replication_slotsならびにmax_wal_senders 。
場合 max_replication_slotsパラメータが十分に高い値に設定されていない、同期レプリケーションはまだ成功しますが、複製起点のパフォーマンスの利点なし。
複製起点名形式で割り当てられ xdb_ srcdbname _ pubname _ remotedbid srcdbnameソースデータベースの名前であり、 pubnameパブリケーション名、 remotedbidリモート・データベースのパブリケーションデータベースのIDです。
xDB Replication Serverアーキテクチャは、Java オブジェクトのシリアル化を利用して 、データのメモリ内状態を保持します。オブジェクトのシリアル化とは、オブジェクトデータやその他の関連情報を一連のバイトに変換し、ファイルに保存できるようにすることです。
キャッシュサイズは、xDBスタートアップ構成ファイルのJAVA_HEAP_SIZEパラメーターの-Xmx nnn m設定によってパブリケーションサーバーに構成されたヒープサイズに対応します。 xDBスタートアップコンフィギュレーションファイルの詳細については、セクション2.3.1.4を参照してください。
待ち時間 全体と呼ばれる複製イベント全体を完了する時間は、基本的に各マスターノードがソースとして機能する複製時間の合計です(つまり、ステップ1、2、および3の時間の合計) 。
ログベースの方法では、ソースとして機能する特定のマスターノードからの各レプリケーションセットが、他のマスターノードが機能する他のすべてのレプリケーションセットと同時に実行および実行される 並列レプリケーション の実装により、この待ち時間が短縮されました。ソース。
並列レプリケーションは、ログベースの方法にのみ適用され、トリガーベースの方法には適用されないことに注意してください 。
注:並列レプリケーションに加えて、特定のマスターノードから他のすべてのマスターノードへの(つまり、単一のレプリケーションセットのコンテキスト内での)レプリケーションの最適化は、複数のスレッドを使用して実装されています。これは、 並列同期と呼ばれます。並列同期は、トリガーベースの方法とログベースの方法の両方に適用されます。パラレル同期の詳細は、 5.8.2.2項を参照してください。
テーブルフィルターは、シングルマスターレプリケーションシステムのパブリケーションデータベースからのサブスクリプションへのレプリケーション中、またはマルチマスターレプリケーションシステムのマスターノード間に含まれるパブリケーションテーブルまたはビューの行の選択基準を指定します。選択基準を満たさない行は、これらのテーブルフィルターが有効になっているサブスクリプションまたはマスターノードへのレプリケーションから除外されます。
注(MMRのみ):マルチマスター複製システムでテーブルフィルターを使用する場合、スナップショットのテーブルコンテンツのソースを提供するマスター定義ノードには、他のマスターノードに含まれるすべてのデータのスーパーセットが含まれている必要がありますマルチマスター複製システムの。これにより、スナップショットのターゲットは、他のマスターノードで有効になっているフィルタリング基準を満たすすべてのデータを確実に受信します。
注:以下の説明では、 結果セットは、そのテーブルで実行されたUPDATEまたはDELETEステートメントの選択基準を満たすテーブル内の行のセットを指します。
場合 INSERTステートメントは、同期複製に続いて、ソーステーブルに実行され、行は、行満たすフィルタリング基準場合、同期の対象テーブルに挿入されます。それ以外の場合、行はターゲット表への挿入から除外されます。
場合 UPDATEステートメントは、同期複製に続いて、ソーステーブルに実行され、 UPDATE次のようにソース表の結果セットは、同期の対象テーブル上のアクションを決定します。
場合 DELETEステートメントは、同期複製に続いて、ソーステーブルに実行され、 DELETE次のようにソース表の結果セットは、同期の対象テーブル上のアクションを決定します。
したがって、ソーステーブルのトランザクションが INSERT 、 UPDATE 、またはDELETEステートメントであるかどうかに関係なく 、テーブルフィルターの目的は、ターゲットテーブル内のすべての行がフィルタールールを満たすことです。
注意:このREPLICA IDENTITY FULL設定は、シングルマスターのスナップショットのみのパブリケーションの表には必要ありません。スナップショットのみのパブリケーションの詳細は、 2.2.7項を参照してください。
この設定は 、次のようにALTER TABLEコマンドを使用して行われます。
ALTER TABLE schema 。 table_name REPLICA IDENTITY FULL
詳細については、次の場所にあるPostgreSQL Core Documentation の ALTER TABLE SQLコマンドを参照してください 。
たとえば、 edb.dept という名前のパブリケーションテーブルの場合、次のALTER TABLEコマンドを使用します。
REPLICA IDENTITY設定は、使用してPSQLユーティリティで表示することができます\d+コマンドを:
REPLICA IDENTITY FULL設定は、ログ・ベースのレプリケーション・システムの以下のデータベース内のテーブルの上に必要です。
•
シングルマスターレプリケーションシステムでは、テーブルフィルターはmasterデータベースで定義されます。したがって、フィルター定義を必要とするmasterデータベースのパブリケーションテーブルは 、パブリケーションがスナップショットのみのパブリケーションでない場合にのみ、 REPLICA IDENTITY FULL設定に変更する必要があります 。スナップショットのみのパブリケーションについては、セクション2.2.7を参照してください。
•
マルチマスターレプリケーションシステムでは、トランザクションがそれらの非MDNノードを対象とすることが予想される場合を除き、非MDNノードのテーブルの REPLICA IDENTITYオプションをFULL設定しないでください。他のマスターノード。
ソーステーブルの REPLICA IDENTITY FULL設定により、ソーステーブルの特定のタイプのトランザクションが、フィルターが有効になっているターゲットテーブルに適切に更新されます。
注:テーブルのフィルタリング要件に加えて、xDB Replication Serverの他の理由により、パブリケーションテーブルでREPLICA IDENTITY FULL設定が必要になる場合があります。追加の要件については、セクション6.6.1を参照してください。
テーブルフィルターは、バイナリデータ型の列ではサポートされていません。バイナリデータ型は、Postgresデータ型 BYTEAです。さらに、テーブルフィルタは、データ型がBINARY 、 VARBINARY 、 BLOB 、 LONG RAW 、およびRAW Advanced Server列ではサポートされていません。これらはBYTEAデータ型のエイリアス名であるためです。
•
サブスクリプションの選択的な有効化に使用できるテーブルフィルターの初期セットの定義については、 セクション 5.2.3
•
新しく作成されたサブスクリプションで利用可能なテーブルフィルターを有効にする方法については、 セクション 5.3.3
•
利用可能なテーブルフィルターのセットを構成するルールの追加、削除、または変更については、 セクション 7.6.4
•
既存のサブスクリプションで有効になっているテーブルフィルターの変更については、 セクション 5.5.4
•
マスターノードでの選択的な有効化に使用できるテーブルフィルターの初期セットの定義については、 セクション 6.2.3
•
新しく作成されたマスターノードで使用可能なテーブルフィルターを有効にする方法については、 セクション 6.3
•
利用可能なテーブルフィルターのセットを構成するルールの追加、削除、または変更については、 セクション 7.6.4
•
既存のマスターノードで有効にしたテーブルフィルターの変更については、 セクション 6.9
このセクションでは、xDB Replication Serverのコンポーネントとアーキテクチャについて説明します。セクション 2.3.1では、xDB Replication Serverを構成する実行可能プログラム、ファイル、およびデータベースについて説明します。セクション2.3.2では、複製システムの論理コンポーネントと、それらがプログラムおよびデータベースにどのように対応するかを定義します。セクション2.3.3は、複製システムの例を示しています。
•
出版サーバー。パブリケーションデータベースとマスターノードをレプリケーション用に構成し、レプリケーションを実行するプログラム。
•
サブスクリプションサーバー。レプリケーション用にサブスクリプションデータベースを構成し、レプリケーションを開始するプログラム。サブスクリプションサーバーは、シングルマスターレプリケーションシステムでのみ使用されます。
•
xDBレプリケーション構成ファイル。コントローラーデータベースとして指定されたパブリケーションデータベースに接続するために、起動時にパブリケーションサーバーおよびサブスクリプションサーバーによって使用される接続および認証情報を含むテキストファイル。レプリケーションシステムを作成するときに、ユーザーインターフェイスからパブリケーションサーバーとサブスクリプションサーバーの登録を認証するためにも使用されます。
•
xDBスタートアップコンフィギュレーションファイル。パブリケーションサーバーおよびサブスクリプションサーバーの起動時にJavaランタイム環境に使用されるインストールおよび構成情報を含むテキストファイル。
注:制御スキーマについては、セクション2.3.1.11を参照してください。
注:サブスクリプションサーバーは、シングルマスターレプリケーションシステムにのみ必要です。サブスクリプションサーバーを実行する必要はありません。また、マルチマスターレプリケーションシステムのみが使用されている場合はインストールする必要もありません。
•
パラメータ admin_userおよびadmin_passwordは、xDB Replication Serverのインストールプロセス中に決定されます。これらのパラメーターの内容の決定方法については、第3章を参照してください。
•
パラメータ database 、 user 、 password 、 port 、 host 、およびtypeは、xDB Replication ConsoleまたはxDB Replication Server CLIで作成した最初のパブリケーションデータベース定義の接続および認証情報で設定されます。このデータベースは、コントローラーデータベースとして指定されています。コントローラデータベースの詳細については、セクション2.3.1.12を参照してください。シングルマスターレプリケーションシステムのパブリケーションデータベース定義の作成については、セクション5.2.2を参照してください。マルチマスターレプリケーションシステムのパブリケーションデータベース定義の作成については、セクション6.2.2を参照してください。
注:管理者ユーザー名とコントローラーデータベースユーザー名のパスワードは暗号化されています。これらのパスワードのいずれかを変更した場合、xDBレプリケーション構成ファイル内の対応するパスワードパラメーターを変更して、新しいパスワードの暗号化された形式を含める必要があります。パスワードの暗号化形式を生成する方法については、セクション10.4.2を参照してください。
xDBレプリケーション構成ファイルのファイルシステムの場所については、 セクション 3.5を参照してください 。
In -Xms NNN m nnn specifies the minimum Java heap size in megabytes. In -Xmx NNN m nnn specifies the maximum Java heap size in megabytes
JAVA_EXECUTABLE_PATHパラメータは、インストールプロセス中にXDB Replication Serverのインストーラによって識別されるJavaランタイムプログラムの場所を指定します。このパラメーターの設定は、必要に応じて別のJREインストールに後で変更できます。
JAVA_MINIMUM_VERSIONパラメータは、XDB Replication Serverのに使用することができますJavaランタイム環境の最も古いバージョンを指定します。この設定は変更しないでください。
JAVA_BITNESS_REQUIREDパラメータは変更しないでください。インストールされた値が変更された場合、またはJAVA_EXECUTABLE_PATHで識別されるJava仮想マシンのJAVA_EXECUTABLE_PATH数と一致しない場合、パブリケーションおよびサブスクリプションサーバーの起動の失敗やxDBレプリケーションの登録の失敗など、多くのエラーが発生する可能性がありますサーバー製品。
JAVA_HEAP_SIZEパラメータの設定については、 5.1.1 項を参照してください 。
節を参照してください 5.1.6.1については、 PUBPORTとSUBPORTパラメータ。
xDB起動構成ファイルのファイルシステムの場所については、 セクション 3.5を参照してください 。
xDB Replication Consoleのユーザーインターフェイスの詳細については、第 4 章を参照してください 。
第 8 章では、xDB Replication Server CLIの使用方法について説明します。
注:サブスクリプションデータベースは、シングルマスターレプリケーションシステムにのみ適用されます。
2.3.1.9 Master Node
制御スキーマは、論理的および物理的な構造を定義するメタデータ・データベース・オブジェクトのコレクションを指す概念的な用語であり、そしてXDB Replication Serverのシングルマスタおよびマルチマスタ複製システムの運用・保守を可能にします。
これらのメタデータデータベースオブジェクトは、 コントロールスキーマオブジェクト と呼ばれ、テーブル、シーケンス、関数、プロシージャ、トリガー、パッケージなどで構成されます。
注:ログベースのシングルマスターおよびマルチマスターレプリケーションシステムの場合、変更はコントロールスキーマオブジェクトに保存されるのではなく、データベースサーバーのWALファイルから抽出されます。ログベースの方法については、セクション2.2.10を参照してください。
•
シングルマスターレプリケーションシステムのスレーブ(サブスクリプション)データベースには、メタデータデータベースオブジェクトとして1つの単一のテーブルが含まれています。 サブスクリプションメタデータオブジェクト という用語は、 サブスクリプションデータベース内のこのデータベースオブジェクトを指すために特に使用されます。一般的な用語、コントロールスキーマ、およびコントロールスキーマオブジェクトは、パブリケーションデータベース内のデータベースオブジェクトを指します。
注:コントローラーデータベースがOracleまたはSQL Serverパブリケーションデータベースの場合、2番目のOracleまたはSQL Serverパブリケーションデータベースを追加して、2番目のシングルマスターレプリケーションシステムを作成することはできません。 xDB Replication ServerがOracleまたはSQL Serverパブリケーションデータベースで構成される複数のシングルマスタレプリケーションシステムを実行するには、Postgresパブリケーションデータベースをコントローラーデータベースとして指定する必要があります。
これらの各手順は、xDBレプリケーションコンソールのレプリケーションツリーのノードで表される論理コンポーネントを作成します。 xDB Replication Consoleの説明については、 第 4 章を参照してください 。これらのコンポーネントの簡単な説明は、次のセクションで説明します。
5.2.1 項では、シングルマスターレプリケーションシステム用のパブリケーションサーバーを登録する方法を説明しています。マルチマスター複製システムについては、セクション6.2.1を参照してください。
注:現在、パブリケーションサーバーごとに1つのマルチマスターレプリケーションシステムしか存在できません。
セクション 5.2.2では、シングルマスターレプリケーションシステムのパブリケーションデータベース定義の作成について説明します。マルチマスター複製システムについては、セクション6.2.2および6.3を参照してください。
2.3.2.4 Publication
5.2.3 項では、シングルマスターレプリケーションシステム用のパブリケーションの作成について説明します。マルチマスター複製システムについては、セクション6.2.3を参照してください。
注:サブスクリプションサーバーは、シングルマスターレプリケーションシステムにのみ適用されます。マルチマスターレプリケーションシステムを作成するとき、サブスクリプションサーバーを登録しません。
5.3.1 項では、サブスクリプションサーバーを登録する方法について説明します。
注:サブスクリプションデータベースの定義は、シングルマスターレプリケーションシステムにのみ適用されます。マルチマスターレプリケーションシステムを作成する場合、サブスクリプションデータベース定義は作成しません。
セクション 5.3.2では、サブスクリプションデータベース定義の作成について説明します。
2.3.2.7 Subscription
注:サブスクリプションは、シングルマスター複製システムにのみ適用されます。マルチマスター複製システムを作成するとき、サブスクリプションを作成しません。
セクション 5.3.3では、サブスクリプションの作成について説明します。
•
パブリケーションデータベース定義は、パブリケーションサーバーの下のSMRタイプノードに従属して作成されます。 Oracleデータベースのユーザー名 pubuserは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。あなたが名前のユーザーを作成するときpubuserオラクルでは、名前のスキーマpubuser同時に自動的に、Oracleによって作成されます。パブリケーションデータベースの定義を作成すると、パブリケーションサーバーは、レプリケーションシステムのメタデータのpubuserコントロールスキーマにコントロールスキーマオブジェクトを作成します。
•
pub という名前のパブリケーションは、パブリケーションデータベース定義に従属して作成されます。パブリケーションは、テーブルから成るAスキーマにS1とテーブルBとCスキーマ内S2 。
•
サブスクリプションデータベース定義は、サブスクリプションサーバーに従属して作成されます。 Postgresデータベースのユーザー名 subuser ユーザーは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。
•
sub という名前のサブスクリプションは、サブスクリプションデータベース定義に従属して作成されます。サブスクリプションが作成されると、サブスクリプションサーバーは、サブスクリプションデータベースにS1およびS2という名前のスキーマを作成します。この時点で、テーブルA 、 B 、およびCのテーブル定義も作成されます。レプリケーションが発生すると、パブリケーションサーバーはこれらのテーブルにパブリケーションの行を取り込みます。
xDBレプリケーションコンソールの概要については、 第 4 章を参照してください 。
•
パブリケーションデータベース定義は、パブリケーションサーバーの下のSMRタイプノードに従属して作成されます。 SQL Serverログイン pubuserは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。スキーマpubuserは、セクション5.1.4.2で説明されているパブリケーションデータベースの準備ステップで作成されました。 pubuser 3つの物理スキーマからなる制御スキーマと一緒にスキーマ_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerパブリケーションデータベースの定義を作成するときに、レプリケーションシステムのメタデータ用のコントロール・スキーマ・オブジェクトが移入されています。
•
pub という名前のパブリケーションは、パブリケーションデータベース定義に従属して作成されます。パブリケーションは、テーブルから成るAスキーマにS1とテーブルBとCスキーマ内S2 。
•
サブスクリプションデータベース定義は、サブスクリプションサーバーに従属して作成されます。 Postgresデータベースのユーザー名 subuser ユーザーは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。
•
sub という名前のサブスクリプションは、サブスクリプションデータベース定義に従属して作成されます。サブスクリプションが作成されると、サブスクリプションサーバーは、サブスクリプションデータベースにS1およびS2という名前のスキーマを作成します。この時点で、テーブルA 、 B 、およびCのテーブル定義も作成されます。レプリケーションが発生すると、パブリケーションサーバーはこれらのテーブルにパブリケーションの行を取り込みます。
xDBレプリケーションコンソールの概要については、 第 4 章を参照してください 。
•
パブリケーションデータベース定義は、パブリケーションサーバーの下のSMRタイプノードに従属して作成されます。 Postgresデータベースのユーザー名 pubuserは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。パブリケーションサーバーは、3つの物理スキーマ_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerコントロールスキーマを作成し、パブリケーションデータベース定義の作成時にレプリケーションシステムのメタデータのコントロールスキーマオブジェクトを設定します。
•
pub という名前のパブリケーションは、パブリケーションデータベース定義に従属して作成されます。パブリケーションは、テーブルから成るAスキーマにS1とテーブルBとCスキーマ内S2 。
•
サブスクリプションデータベース定義は、サブスクリプションサーバーに従属して作成されます。 Oracleデータベースのユーザー名 subuser ユーザーは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。
•
sub という名前のサブスクリプションは、サブスクリプションデータベース定義に従属して作成されます。あなたが名前のユーザーを作成するときsubuserオラクルでは、名前のスキーマsubuser同時に自動的に、Oracleによって作成されます。サブスクリプションsubを作成すると、テーブルA 、 B 、およびCのテーブル定義がスキーマsub subuserに作成されます。レプリケーションが発生すると、パブリケーションサーバーはこれらのテーブルにパブリケーションの行を取り込みます。
xDBレプリケーションコンソールの概要については、 第 4 章を参照してください 。
•
パブリケーションデータベース定義は、パブリケーションサーバーの下のSMRタイプノードに従属して作成されます。 Postgresデータベースのユーザー名 pubuserは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。パブリケーションサーバーは、3つの物理スキーマ_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerコントロールスキーマを作成し、パブリケーションデータベース定義の作成時にレプリケーションシステムのメタデータのコントロールスキーマオブジェクトを設定します。
•
pub という名前のパブリケーションは、パブリケーションデータベース定義に従属して作成されます。パブリケーションは、テーブルから成るAスキーマにS1とテーブルBとCスキーマ内S2 。
•
サブスクリプションデータベース定義は、サブスクリプションサーバーに従属して作成されます。 SQL Serverログイン subuserは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。
•
sub という名前のサブスクリプションは、サブスクリプションデータベース定義に従属して作成されます。サブスクリプションが作成されると、サブスクリプションサーバーは、サブスクリプションデータベースにS1およびS2という名前のスキーマを作成します。この時点で、テーブルA 、 B 、およびCのテーブル定義も作成されます。レプリケーションが発生すると、パブリケーションサーバーはこれらのテーブルにパブリケーションの行を取り込みます。
xDBレプリケーションコンソールの概要については、 第 4 章を参照してください 。
•
パブリケーションデータベース定義は、パブリケーションサーバーの下のMMRタイプノードに従属して作成されます。この最初のパブリケーションデータベース定義は、マスター定義ノードを識別します。 Postgresデータベースのユーザー名 mmruser_aは、データベースネットワークの場所とデータベース識別子とともに定義で指定されます。パブリケーションサーバーは、3つの物理スキーマ_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerコントロールスキーマを作成し、パブリケーションデータベース定義の作成時にレプリケーションシステムのメタデータのコントロールスキーマオブジェクトを設定します。
•
pub という名前のパブリケーションは、パブリケーションデータベース定義に従属して作成されます。パブリケーションは、テーブルから成るAスキーマにS1とテーブルBとCスキーマ内S2 。
•
2番目のマスターノードを追加するときに、パブリケーションサーバーにスキーマ S1およびS2とA 、 B 、およびCテーブル定義を作成させるか、事前にスキーマおよびテーブル定義を手動で作成するかを選択できます。パブリケーションサーバーは、マスターノードのメタデータを格納するコントロールスキーマオブジェクトを作成する3つの物理スキーマ_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerで_edb_schedulerコントロールスキーマを作成します。マスターノードを定義するときに、パブリケーションサーバーにこれらのテーブルにパブリケーションの行をこの時点で追加するか、テーブルのロードを後の時点に延期するかを選択できます。
xDBレプリケーションコンソールの概要については、 第 4 章を参照してください 。
手順1: xDB Replication Serverが要件に適したソリューションであり、特定のニーズに最適なソリューションを選択したかどうかを判断します。 xDB Replication Serverを使用して、シングルマスターまたはマルチマスターのレプリケーションシステムを実装できます。シングルマスターレプリケーションシステムの場合、xDB Replication Serverの際立った特徴は、OracleデータベースからPostgreSQLまたはAdvanced Serverデータベースへ、SQL ServerデータベースからPostgreSQLまたはAdvanced Serverデータベースへ、Advanced Serverデータベースからレプリケートする能力です。 Oracleデータベース、またはPostgreSQLまたはAdvanced ServerデータベースからSQL Serverデータベースへ。
ステップ2: xDB Replication Serverの使用方法に関する一般的な戦略を計画します。シングルマスターモデルまたはマルチマスターモデルは、ニーズに最適ですか? (シングルマスターおよびマルチマスター複製システムの使用例については、セクション2.1を参照してください。)OracleからPostgres、SQL ServerからPostgres、Advanced ServerからOracle、またはPostgresからSQL Serverに複製しますか? PostgreSQLデータベースまたはAdvanced Serverデータベース、あるいはその両方の間で複製しますか?どのくらいの頻度でデータを複製する必要がありますか?レプリケーションはアドホックベースで実行されますか、それともスケジュールに従って定期的に実行する必要がありますか?
ステップ3:複製システムのロジスティクスを計画します。レプリケートするテーブルの数と、合計バイト数と行数のサイズはどのくらいですか?各レプリケーションの間、各テーブルで行の何パーセントが変更されると予想されますか?データベースサーバーは専用マシンで実行する必要がありますか?
ステップ4:複製システムを設計します。レプリケーションシステムを分散するか、単一のホストで実行するかを決定します。必要なパブリケーションとサブスクリプション、およびそれらのテーブルとビューを決定します。パブリケーションテーブルがxDB Replication Serverパブリケーションの要件を満たしていることを確認してください。詳細については、セクション2.4.2および2.4.3を参照してください。
手順5:テスト環境でレプリケーションシステムを実装してテストします。パブリケーションデータのサブセットでレプリケーションシステムを試して、レプリケーションプロセスが期待どおりに機能することを確認します。結果の複製されたテーブルがアプリケーションで期待どおりに使用できることを確認してください。完全な実稼働環境でレプリケーションプロセスにかかると予想される時間に関する予備的なメトリックを確立します。
手順6:運用環境でレプリケーションシステムを実装およびテストします。
•
パブリケーションを作成する前に、テーブル定義が確立されていることを確認してください。セクション 7.8で説明されているようにDDL変更レプリケーション機能が使用されない限り、テーブル定義が変更された場合、関連するサブスクリプションとともにテーブルを含むパブリケーションを削除して再作成する必要があります。同じことが、マスター定義ノードとそれに関連するマスターノードのテーブル定義にも当てはまります。レプリケーションの失敗は、レプリケーション履歴で確認できます。
•
一般に、シングルマスターレプリケーションシステムの削除順序は次のとおりです。1)xDB Replication ConsoleまたはxDB Replication Server CLIを使用して、サブスクリプション(サブスクリプションノード)から始めて、その親コンポーネント(サブスクリプションデータベースノード)。 2)サブスクリプションサーバーが不要になった場合は、登録を解除します。 3)パブリケーションに対して同じプロセスを繰り返します。 4)すべてのレプリケーションシステムの論理コンポーネントを削除した後(パブリケーションサーバーとサブスクリプションサーバーを除く)、Oracle、SQL Server、またはPostgresの物理データベースオブジェクトを削除できます。 SQLコマンドラインユーティリティなどを使用して、コントロールスキーマオブジェクトを手動で削除しないでください。これを行うと、xDB Replication ConsoleおよびxDB Replication Server CLIが動作不能になる場合があります。 (この問題が発生した場合は、セクション10.3.4.3を参照してください。)xDB Replication ConsoleまたはxDB Replication Server CLIを使用してレプリケーションシステムの論理コンポーネントを削除すると、物理データベースからコントロールスキーマオブジェクトが自動的に削除されます。
•
注:外部キー制約は、シングルマスター複製システムのパブリケーションまたはサブスクリプションサーバーによって複製されません。ただし、マルチマスター複製システムでは、外部キー制約はマスター定義ノードから他のマスターノードに複製されます。
注:シーケンス( CREATE SEQUENCEステートメントによって作成されたデータベースオブジェクト)は、シングルマスターレプリケーションシステムのパブリケーションデータベースからサブスクリプションデータベースにレプリケートされません。また、シーケンスは、マルチマスター複製システム内のマスター定義ノードから他のマスターノードに複製されません。
•
•
•
•
•
•
•
•
•
•
•
注:特定の条件下でSQL_VARIANTデータ型を含むテーブルを複製する方法については、セクション10.4.6を参照してください。
•
•
•
•
•
•
Postgresパーティションテーブルの複製については、詳細についてセクション 7.10を参照してください。
•
•
•
POINT 、 POLYGONなどの幾何データ型を含むPostgresテーブルは 、Oracleサブスクリプションデータベースに複製できません。
•
•
•
•
•
•
•
•
•
任意の ARRAYデータ型(つまり、 data_type []として定義)
範囲 型と呼ばれるPostgresデータ型は、PostgreSQLバージョン9.2およびAdvanced Serverバージョン9.2で最初にサポートされました。 組み込み範囲タイプは、次の組み込みデータタイプを参照します: int4range 、 int8range 、 numrange 、 tsrange 、 tstzrange 、およびdaterange 。
CREATE TYPE AS RANGEコマンドで構築されたカスタム範囲タイプは、xDB Replication Serverではサポートされていません。
注:マルチマスター複製システムでは、オンデマンドのスナップショットは、マスター定義ノードから別のマスターノードにのみ作成できます。
シングルマスター複製システムのオンデマンド複製の実行方法については、セクション 5.4を参照してください 。マルチマスター複製システムについては、セクション6.5を参照してください。
2.4.5.1 Single Host
•
PostgreSQLの場合。 PostgreSQLをインストールした後、Stack Builderを使用してxDB Replication Serverをインストールします。
•
Advanced Serverの場合。 Advanced Serverをインストールした後、StackBuilder Plusを使用してxDB Replication Serverをインストールします。
セクション 3.1では 、Stack BuilderまたはStackBuilder Plusのグラフィカルユーザーインターフェイスを使用したxDB Replication Serverのインストールについて説明します。
注:古いバージョンのxDB Replication Serverと既存のレプリケーションシステムがある場合は、xDB Replication Serverをインストールする前にセクション10.2を確認してください。
後でシステムからxDB Replication Serverを削除する場合は、グラフィカルユーザーインターフェイスを使用して最初にインストールした場合、またはコマンドラインからインストーラープログラムを起動してxDB Replication Serverをアンインストールする方法についてセクション 3.6を参照してください 。 RPMパッケージからインストールされたxDB Replication Serverをアンインストールする方法については、セクション3.7を参照してください。
Stack BuilderとStackBuilder Plusは、アドオン製品とPostgreSQLおよびAdvanced Serverのアップデートのダウンロードとインストールに使用されるプログラムです。 Stack BuilderはPostgreSQLに使用されます。 StackBuilder PlusはAdvanced Serverに使用されます。
手順1: xDB Replication Serverコンポーネント(xDB Replication Console、パブリケーションサーバー、またはサブスクリプションサーバー)をインストールするホストにJava Runtime Environment(JRE)バージョン1.7以降をインストールする必要があります。 Oracle JavaやOpenJDKなどのJava製品を使用できます。
Windowsの場合のみ:システム環境変数JAVA_HOMEが、xDB Replication Serverで使用するJREバージョンとビット数(32ビットまたは64ビット)のJREインストールディレクトリに設定されていることを確認してください。 Windowsプラットフォーム用のxDB Replication Serverインストーラーには、32ビット版と64ビット版の両方が含まれています。 JAVA_HOME設定は、xDB Replication Serverの32ビットバージョンと64ビットバージョンのどちらをインストールするかを決定しJAVA_HOME 。 ( JAVA_HOMEが設定されていない場合、 Pathシステム環境変数で最初に検出されたJREバージョンによって、インストールするxDB Replication Serverのバージョンが決まります。)
注: 9.3より前のAdvanced Serverバージョンの場合、JavaランタイムがAdvanced Serverインストールプロセスの一部として提供およびインストールされますが、ホストに別個のJavaランタイムシステムを事前にインストールしておく必要があります。 xDB Replication Serverのインストールプロセスでは、Advanced Serverに付属のJavaランタイムは使用されません。
注: xDB Replication Serverのインストールが完了すると、Javaランタイムプログラムへのパスは、xDB Replication Serverが使用するxDBスタートアップコンフィギュレーションファイルに保存されます。 xDBスタートアップ構成ファイルに設定されているJavaランタイムプログラムへのパスが正しいことを確認します。このファイルの場所については、セクション3.5を参照してください。
ステップ2:ホストのアプリケーションメニューから、Postgresメニューを開き、Stack BuilderまたはStackBuilder Plusを選択します。
ステップ3(Linuxのみ): Linuxホストに応じて、 rootアカウントのパスワードを要求するダイアログボックスまたはプロンプトが表示されます。 rootパスワードを入力し、[OK]ボタンをクリックします。
ステップ4: StackBuilder Plusのようこそ画面が表示されます。ドロップダウンリストからPostgresインストールを選択し、[次へ]ボタンをクリックします。
ステップ5(Advanced Serverの場合): EnterpriseDB Toolsノードを展開し、Replication Serverのチェックボックスをオンにします。 [次へ]ボタンをクリックします。
注:次の図はReplication Server v6.0を示していますが、Replication Server v6.2でも同じプロセスを使用してください。
手順5(PostgreSQLの場合): [登録が必要な試用版]ノードを展開し、[EnterpriseDBツール]ノードを展開します。 EnterpriseDB Toolsリストの下にあるReplication Serverのボックスをチェックし、Nextボタンをクリックします。
ステップ6(Advanced Serverのみ):アカウント登録画面で、EnterpriseDBユーザーアカウントの電子メールアドレスとパスワードを入力するか、リンクをクリックします。この場合、EnterpriseDBの登録ページに移動します。アカウントを作成できるウェブサイト。 [次へ]ボタンをクリックします。
注(PostgreSQLのみ):手順7に進みます 。PostgreSQLを使用している場合、プロセスの後半でアカウント登録が行われます。
ステップ7:選択したパッケージのリストにReplication Serverが表示されることを確認します。 [次へ]ボタンをクリックします。
手順8: Replication Serverパッケージのダウンロードが完了すると、xDB Replication Serverのインストールを開始する次の画面が表示されます。 [次へ]ボタンをクリックします。
注: xDB Replication Serverをもう一度インストールする場合は、[インストールをスキップ]ボックスをチェックできます。
ステップ9:インストール言語を選択し、[OK]ボタンをクリックします。
ステップ10: [xDB Replication Serverのセットアップ]画面で、[次へ]ボタンをクリックします。
ステップ11:ライセンス契約を読みます。契約に同意する場合は、「同意する」ラジオボタンを選択し、「次へ」ボタンをクリックします。
手順12: xDB Replication Serverコンポーネントをインストールするディレクトリを参照するか、表示されているデフォルトの場所にコンポーネントをインストールできるようにします。 [次へ]ボタンをクリックします。
ステップ13:特定のxDB Replication Serverコンポーネントをこの特定のホストにインストールしたくない場合は、コンポーネント名の隣のボックスをオフにします。 [次へ]ボタンをクリックします。
ステップ14:アカウント登録画面で、該当するラジオボタンを選択します。 [次へ]ボタンをクリックします。
ステップ15: xDB管理者の情報を入力します。
•
管理者ユーザー。このホストで実行されているパブリケーションサーバーまたはサブスクリプションサーバーの登録など、xDB Replication Serverの特定の使用を認証するためのxDB管理者ユーザー名。管理ユーザー名には、任意の英数字文字列を入力できます。デフォルトの管理ユーザー名はadminです。
•
管理者のパスワード。 [管理者ユーザー]フィールドで指定されたxDB管理者用に選択したパスワード。
管理ユーザーと管理パスワード(暗号化された形式)は、 \etc\edb-repl.conf (WindowsホストのXDB_HOME \etc\edb-repl.conf ) という名前の /etc/edb-repl.conf レプリケーション構成ファイルに保存されます。 [次へ]ボタンをクリックします。
ステップ16(公開サーバーが選択されたコンポーネントである場合のみ):公開サーバーが実行される利用可能なポートを入力します。デフォルトのポート番号は9051です。 [次へ]ボタンをクリックします。
ステップ17(サブスクリプションサーバーが選択されたコンポーネントの場合のみ):サブスクリプションサーバーが実行される使用可能なポートを入力します。デフォルトのポート番号は9052です。 [次へ]ボタンをクリックします。
ステップ18:パブリケーションサーバーまたはサブスクリプションサーバーを実行するオペレーティングシステムアカウントの場合、 postgres (Oracle互換構成モードでインストールされたAdvanced Serverを使用している場合はenterprisedb )を入力します。
ステップ19: [インストールの準備完了]画面で、[次へ]ボタンをクリックします。
ステップ20:インストールが完了すると、次の画面が表示されます。 [完了]ボタンをクリックします。
ステップ21: StackBuilder Plus Installation Complete画面で、Finishボタンをクリックします。
•
テキスト。インストーラーを呼び出してコマンドラインからインストールを実行するときに--mode textパラメーターを含め、その間にユーザー入力のプロンプトが表示されます。
•
無人。インストーラーを呼び出してユーザー入力なしでインストールを実行する場合は、 --mode unattendedパラメーターを含めます。この場合、インストーラーを呼び出すときにコマンドラインで--optionfileパラメーターを指定するか、パラメーター設定を含むファイルを指定するために--optionfileパラメーターを使用する必要があります。
•
抽出のみ。 --extract-onlyパラメーターを指定してインストーラーを起動し、完全なインストールを実行するために必要なroot権限を持っていない場合にのみファイルを抽出します。
注:コマンドラインからEnterpriseDB製品をインストールする方法の詳細については、次の場所にある 『 EDB Postgres Advanced Serverインストールガイド』を参照してください。
注: xDB Replication Serverコンポーネント(xDB Replication Console、パブリケーションサーバー、またはサブスクリプションサーバー)をインストールするホストにJava Runtime Environment(JRE)バージョン1.7以降をインストールする必要があります。 Oracle JavaやOpenJDKなどのJava製品を使用できます。
注: 9.3より前のAdvanced Serverバージョンの場合、JavaランタイムがAdvanced Serverインストールプロセスの一部として提供およびインストールされますが、ホストに別個のJavaランタイムシステムを事前にインストールしておく必要があります。 xDB Replication Serverのインストールプロセスでは、Advanced Serverに付属のJavaランタイムは使用されません。
yesまたは1を指定して、インストールを実行せずにxDB Replication Serverコンポーネントとファイルを抽出します。 noまたは0を指定して、xDB Replication Serverのインストールも実行します。デフォルトはnoまたは0です。
無人インストール中にユーザーインターフェイスを表示する範囲を指定します。進行状況バーを表示しnone場合は、 none 指定します。プログレスバーを表示する場合はminimal指定します。エラーが発生した場合にダイアログボックスで進行状況バーを表示する場合は、 minimalWithDialogs指定します。デフォルトはminimalです。
--optionfile filename
インストールモードを指定します。 qtを指定して、Qtグラフィカルツールキットを使用します。 Gtkグラフィカルツールキットを使用するにはgtkを指定します(Linuxのみ)。指定xwindow (Linuxのみ)X Windowsのグラフィカルツールキットを使用します。コマンドラインコンソールでインストールするtextを指定しtext (Linuxのみ)。ユーザー入力を要求せずにインストールを実行するには、 unattendedを指定します。デフォルトはqtです。
--debugtrace debug_logfile
--existing-user edb_user_account
--existing-password edb_user_password
インストール言語を指定します。英語の場合はenを指定します。簡体字中国語にはzh_CNを指定します。繁体字中国語にはzh_TWを指定します。日本語にjaを指定します。韓国語にはkoを指定します。デフォルトはenです。
--prefix installation_directory
xDB Replication Serverコンポーネントがインストールされるディレクトリ。 Linuxシステムのデフォルトは /opt/PostgreSQL/EnterpriseDB-xDBReplicationServerです。 Windowsシステムの場合、デフォルトはC:\Program Files\PostgreSQL\EnterpriseDB-xDBReplicationServerです。
インストールするxDB Replication Serverコンポーネントを指定します。 xDB Replication ConsoleおよびxDB Replication Serverコマンドラインインターフェースにrepconsoleを指定します。 xDB出版サーバーのpubserverを指定します。指定subserver XDBのサブスクリプションサーバーのために。このコンマ区切りリストには、少なくとも1つのコンポーネントを含める必要があります。デフォルトはrepconsole,pubserver,subserverです。
--admin_user admin_user
--admin_password admin_password
--pubport port
--subport port
--serviceaccount account_name
--servicepassword account_password
EDB Yumリポジトリの使用については、次の場所にあるEnterpriseDB Webサイトから入手可能なEDB Postgres Advanced Serverインストールガイドの 第3章を参照してください 。
注:以下では主にxDB Replication Serverバージョン6.2のインストールについて説明しますが、これらの異なるバージョンのインストールを区別するために、以前のxDB Replication ServerバージョンのRPMパッケージへのアクセスについても説明します。
各xDB Replication Serverコンポーネントは、個別のRPMパッケージとして利用できます。したがって、1つの yum installコマンドですべてのxDB Replication Serverコンポーネントを yum installできます。または、特定のRPMパッケージのみをインストールすることにより、選択した個々のコンポーネントをインストールすることもできます。
Advanced Serverサーバーのlibsパッケージは、xDB RPMパッケージコンポーネントをインストールするときにYumからアクセスできる必要があります。 edb-as xx -server-libsパッケージには、バージョン9.6以降のための高度なサーバーのリポジトリのパッケージのコンポーネントです。 ppas xx -server-libsパッケージは、バージョン9.5以前のAdvanced Serverリポジトリパッケージのコンポーネントです。ステップ3は、YumがサーバーlibsパッケージにアクセスできるようにAdvanced Serverリポジトリへのアクセスを有効にする方法を示しています。
注: CentOS-Base.repo ファイル( /etc/yum.repos.dにあります )で [extras]リポジトリー定義を有効にする必要がある 場合があり ます 。
yum install package_name
package_nameは、前述の表の「パッケージ名」列にリストされているパッケージのいずれかです。
注:すべてのxDBコンポーネントは依存しているため、サーバーライブラリパッケージのインストールが必要ですが、Yumを使用すると、xDBコンポーネントのインストール時にサーバーライブラリへの依存関係が認識されます。 Yumは、選択したxDB RPMパッケージとともに、有効なAdvanced Serverリポジトリからサーバーlibsパッケージを自動的にインストールします。
手順1: xDB Replication Serverコンポーネント(xDB Replication Console、パブリケーションサーバー、またはサブスクリプションサーバー)をインストールするホストにJava Runtime Environment(JRE)バージョン1.7以降をインストールする必要があります。 Oracle JavaやOpenJDKなどのJava製品を使用できます。
注: 9.3より前のAdvanced Serverバージョンの場合、JavaランタイムがAdvanced Serverインストールプロセスの一部として提供およびインストールされますが、ホストに別個のJavaランタイムシステムを事前にインストールしておく必要があります。 xDB Replication Serverのインストールプロセスでは、Advanced Serverに付属のJavaランタイムは使用されません。
ステップ2: EDB Yumリポジトリから、 edb-repoリンクをクリックして、すべてのEnterpriseDB RPMのリポジトリRPMをダウンロードします。
rootアカウントとして、次のコマンドを実行して、このリポジトリ構成パッケージをインストールします。
ステップ3:ディレクトリ/etc/yum.repos.dに、リポジトリ構成ファイルedb.repoが作成されます。このファイルには、テキスト[ repository_name ]始まるエントリで示されるEnterpriseDBリポジトリのリストが含まれています。
•
EDB Yumリポジトリの要求された資格情報を使用して 、 baseurlパラメーターの <username>:<password>プレースホルダーをユーザー名とパスワードに baseurlます。
•
enabledパラメーターの設定をenabled=1 変更します 。
ステップ4: xDB Replication Server RPMパッケージをインストールします。
yum install ppas-xdb
xDB Replication Serverは、ディレクトリの場所 /usr/ppas-xdb- x インストールされます . xここでx . xは、以下に示すxDB Replication Serverのバージョン番号です。
注:パブリケーションサーバーもサブスクリプションサーバーも、インストール後すぐには実行されていません。残りの手順を確認した後、パブリケーションサーバーを起動する場合は、セクション5.2.1を参照してください。サブスクリプションサーバーの起動については、セクション5.3.1を参照してください。
ステップ5(xDB Replication Server 6.2または6.1の場合): xDBレプリケーション構成ファイル/etc/edb-repl.confでは、デフォルトのパスワード( edb )を管理ユーザーパスワードとして使用するか、または次のパスワードに置き換えることができます。あなたの選択。独自のパスワードを使用する場合は、パスワードの暗号化された形式を生成する方法についてセクション10.4.2を参照してください。 xDBレプリケーション構成ファイルのadmin_passwordパラメーターに暗号化されたパスワードを配置します。デフォルトの管理ユーザー名はadmin設定されており、同様に変更できます。 xDBレプリケーション構成ファイルの詳細は、 2.3.1.3項を参照してください。
ステップ5(xDB Replication Server 5.1の場合): xDBレプリケーション構成ファイル/etc/edb-repl.conf 、希望するPostgresデータベースへのアクセスを許可するようにパラメーターhost 、 port 、 database 、 user 、およびpasswordが設定されていることを確認しますxDB Controlデータベースとして使用します。現在のデフォルト設定で識別されるデータベース以外を使用する場合は、目的のデータベースを作成し、パラメータを変更して、このデータベースへの接続と認証をxDB制御データベースとして使用できるようにします。
手順6:パブリケーションサーバーとサブスクリプションサーバーの起動時にJavaランタイムプログラムにアクセスできるように、xDBスタートアップ構成ファイルのJAVA_EXECUTABLE_PATHパラメーターを設定する必要があります。 Javaプログラムにアクセスできないためにパブリケーションサーバーまたはサブスクリプションサーバーの起動に失敗した場合は、xDB起動構成ファイルでJavaランタイムプログラムへのパスを設定してください。 xDBスタートアップコンフィギュレーションファイルの詳細については、セクション2.3.1.4を参照してください。このファイルの場所については、セクション3.5を参照してください。
既存のxDB RPMインストールがある場合は、 yum を 使用 してリポジトリ構成ファイルをアップグレードし、より新しい製品バージョンに更新できます。 edb を更新するには 。 リポジトリ ファイル、スーパーユーザー権限を想定して入力します。
yum は edb を更新し ます 。 edbで 指定された資格情報で接続するように構成された現在のEDBリポジトリへのアクセスを可能にする レポ ファイル 。 リポジトリ ファイル。次に、yumを使用して、インストールされているパッケージをアップグレードできます。
yum upgrade ppas-xdb
各コマンドは、 /etc/zypp/repos.dディレクトリーにリポジトリー構成ファイルを作成します 。ファイルの名前は次のとおりです。
リポジトリ構成ファイルを作成した後、 zypper refreshコマンドを使用してSLESホストのメタデータを更新し、EnterpriseDBリポジトリを含めます。
入力を求められたら User NameとPassword 、EnterpriseDBのリポジトリ用の接続の資格情報を提供しています。資格情報が必要な場合は、次のWebサイトにアクセスしてください。
zypper addrepo " http://download.opensuse.org/repositories/Java:/Factory/SLE_12_SP2/Java:Factory.repo "
zypper addrepo "http://download.opensuse.org/repositories/server:/Kolab:/3.3/SLE_12/server:Kolab:3.3.repo"
注:パブリケーションサーバーとサブスクリプションサーバーを起動する前に、 /etc/hostsファイルには、次の例に示すように、ホスト名のエントリがホストIPアドレスに関連付けられている必要がありますlinux-dm8sはIPアドレスで、 linux-dm8sはホスト名です。
注:一部のLinuxシステムでは、アプリケーションメニューにxDB Replication Consoleの選択肢が表示される前にサーバーを再起動する必要がある場合があります。アプリケーションメニューでxDBレプリケーションコンソールの選択がまだ利用できない場合は、スクリプトXDB_HOME /bin/runRepConsole.shを呼び出して開始できます。
注: xDB RPMパッケージからインストールされたxDB Replication Serverの場合、xDB Replication Consoleは、スクリプトXDB_HOME /bin/runRepConsole.shを呼び出すことにより開始されます。
edb-repl.conf (Linux)
edb-repl.conf (Windows)
XDB_HOME \etc
XDB_HOME /etc
XDB_HOME /etc
XDB_HOME /etc/sysconfig
pubserver.log (Linux)
/var/log/xdb- x . バツ
pubserver.log (Windows)
POSTGRES_HOME \.enterprisedb\xdb\ x . バツ
subserver.log (Linux)
/var/log/xdb- x . バツ
subserver.log (Windows)
POSTGRES_HOME \.enterprisedb\xdb\ x . バツ
USER_HOME /.enterprisedb/xdb/ x . バツ
注: XDB_HOMEは、xDB Replication Serverがインストールされているディレクトリーです。
注: POSTGRES_HOMEは、 postgresオペレーティングシステムアカウント(Oracle互換構成モードでインストールされたAdvanced Serverのenterprisedb )のホームディレクトリです。
注:パブリケーションおよびサブスクリプションサービスのスタートアップログファイル( edb-xdbpubserver.logおよびedb-xdbsubserver.log )は、WindowsおよびMac OS Xオペレーティングシステムでは生成されません。
注: USER_HOMEは、使用中のオペレーティングシステムアカウントのホームディレクトリです。
注: xDB Replication Serverのバージョン番号はxで表され. xまたはxx ( 6.2または62 )。
セクション 3.1で 説明したようにStack BuilderまたはStackBuilder Plusから呼び出されたxDB Replication Serverインストーラープログラムを使用してxDB Replication Serverをインストールした場合、またはセクション3.2で説明したようにコマンドラインからxDB Replication Serverインストーラープログラムを呼び出した場合、xDB Replication Serverをアンインストールしてアンインストールしますこのセクションで説明されているuninstall-xdbreplicationserverスクリプト。
Linuxの場合のみ:以下の手順は、LinuxホストからxDB Replication Serverをアンインストールするためのものです。
手順1: rootアカウントとして、xDB Replication ServerをインストールしたディレクトリからXDB_HOME /uninstall-xdbreplicationserverスクリプトを実行します。
ステップ2: [はい]ボタンをクリックして、xDB Replication Serverのアンインストールを確認します。
手順3:プロセスが完了すると、[アンインストールの完了]ダイアログボックスが表示されます。 OKボタンをクリックします。
Windowsの場合のみ:次の手順は、WindowsホストからxDB Replication Serverをアンインストールするためのものです。
ステップ1: Windowsのコントロールパネルから、[プログラムのアンインストール]を選択します。
ステップ2:アンインストールまたは変更するプログラムのリストでxDB Replication Server製品を選択します。 [アンインストール/変更]ボタンをクリックします。
ステップ3: [はい]ボタンをクリックして、xDB Replication Serverのアンインストールを確認します。
手順4:プロセスが完了すると、[アンインストールの完了]ダイアログボックスが表示されます。 OKボタンをクリックします。
あなたはRPMパッケージからXDB Replication Serverのをインストールした場合は、起動することにより、任意のXDBコンポーネントをアンインストールすることができます yum remove package_nameようなコマンドをrootアカウントpackage_name 、セクションの表に記載されている任意のXDB Replication ServerのコンポーネントのRPMパッケージである3.3 。
•
メニューバー。複製システムコンポーネントのメニュー
•
ツールバー。ダイアログボックスにすばやくアクセスするためのアイコン
•
レプリケーションツリー。逆ツリーのノードとして表される複製システムコンポーネント
•
情報ウィンドウ。レプリケーションツリーで強調表示されたノードに関する情報を含むタブ付きウィンドウ
このセクションでは、さまざまなツールバーアイコンがアクティブになるタイミングについて説明します。ツールバーに関連する操作については 、シングルマスターレプリケーションのセクション 5.2および5.3で説明しています 。マルチマスターレプリケーションについては、セクション6.2を参照してください。
注:パブリケーションに関連するツールを使用するには、パブリケーションサーバーが実行されている必要があります。同様に、サブスクリプションに関連するツールを使用するには、サブスクリプションサーバーが実行されている必要があります。
4.1.1 Refresh
ログイン情報を保存することを選択した場合、サーバーのネットワークの場所(IPアドレスとポート番号)、管理者ユーザー名、およびパスワードは、ユーザーが使用するオペレーティングシステムアカウントのホームディレクトリの下にある隠し場所のサーバーログインファイルに保存されますxDBレプリケーションコンソールを開きました。このファイルの場所については、セクション3.5を参照してください。
ログイン情報を保存するオプションがチェックボックスとして表示される[パブリケーションサーバーの登録]ダイアログボックスを次に示します。この例では、ホストフィールドに入力された192.168.2.22 、ポートフィールドに入力された9051 、ユーザー名フィールドに入力されたadmin 、およびパスワードフィールドに入力されたパスワードの暗号化された形式は、このパブリケーションサーバーのサーバーログインファイルに保存されます管理ユーザー名とパスワードの検証が成功した場合。
入力したユーザー名とパスワードの値は 、この場合、 ホスト 192.168.2.22 にあるxDBレプリケーション構成ファイルの管理ユーザー名とパスワードに対して検証されます 。パブリケーションサーバーの登録およびサーバーログインファイルへのパブリケーションサーバーのログイン情報の保存が行われる前に、管理ユーザー名とパスワードが正常に認証される必要があります。 xDBレプリケーション構成ファイルの詳細は、 2.3.1.3項を参照してください。
これらのフィールドの目的とパブリケーションサーバーの登録プロセスの詳細については、セクション 5.2.1を参照してください 。
以下に、[サブスクリプションサーバーの登録]ダイアログボックスを示します。この例では、ホストフィールドに入力された192.168.2.22 、ポートフィールドに入力された9052 、ユーザー名フィールドに入力されたadmin 、およびパスワードフィールドに入力されたパスワードの暗号化された形式がこのサブスクリプションサーバーのサーバーログインファイルに保存されます管理ユーザー名とパスワードの検証が成功した場合。
これらのフィールドの目的とサブスクリプションサーバーの登録プロセスの詳細については、セクション 5.3.1を参照してください 。
注:特定のホスト上の各オペレーティングシステムアカウントには、独自のサーバーログインファイルがあります。したがって、保存され、開いたときにxDBレプリケーションコンソールに表示されるサーバーは、オペレーティングシステムアカウントごとに個別に決定されます。
注:パブリケーションデータベースとサブスクリプションデータベースを削除することはできませんが、不正な複製が発生する可能性があります。
32ビットシステムでは、初期ヒープサイズは128メガバイト( -Xms128m )に設定され、最大制限は512メガバイト( -Xmx512m )に設定されます。 64ビットシステムでは、初期ヒープサイズは256メガバイト( -Xms256m )で、最大制限は1536メガバイト( -Xmx1536m )です。
デフォルト値は 、xDBスタートアップ構成ファイルのJAVA_HEAP_SIZEパラメーター設定を変更することにより変更できます。このような変更を行った後は、必ずパブリケーションサーバーとサブスクリプションサーバーを再起動してください(セクション5.2.1および5.3.1を参照)。
•
最小RAMサイズ。 32ビットシステムの場合、4ギガバイトを使用します。 64ビットシステムでは8ギガバイトを使用します。
•
推奨RAMサイズ。 32ビットシステムの場合、8ギガバイトを使用します。 64ビットシステムの場合、16ギガバイトを使用します。
•
wal_level。 logical設定しlogical 。
•
max_wal_senders。同時接続の最大数(つまり、同時に実行されているWAL送信プロセスの最大数)を指定します。少なくとも、ログベースの方法を使用するこのデータベースサーバー上のSMRパブリケーションデータベースの数に設定します。さらに、このデータベースサーバーでMMRマスターノードを実行する場合は、ログベースの方法を使用するMMRマスターノードの数も追加します。
•
max_replication_slots。複製スロットの最大数を指定します。少なくとも、ログベースの方法を使用するこのデータベースサーバー上のSMRパブリケーションデータベースの数に設定します。さらに、MMRマスターノードがログベースの方法でこのデータベースサーバーで実行される場合、必要な追加のレプリケーションスロットの数については、セクション2.2.10.4を参照してください。
同期レプリケーションのログベースの方法については、 セクション 2.2.10を参照してください 。
さらに、 pg_hba.confファイルには、ログベースの方法を使用するパブリケーションデータベースの各パブリケーションデータベースユーザーのエントリが必要です。このようなデータベースユーザーは、 pg_hba.confファイルにレプリケーションデータベースユーザーとして含める必要があります。追加情報については、セクション5.1.6.3を参照してください。
注:このセクションの指示は、Oracleがパブリケーションデータベースまたはサブスクリプションデータベースとして使用される場合にのみ適用されます。
ojdbc5.jar などのOracle JDBCドライバーjarファイルは、パブリケーションサーバーとサブスクリプションサーバーを実行しているホスト上のJava仮想マシン(JVM)にアクセスできる必要があります。パブリケーションサーバーとサブスクリプションサーバーが別々のホストで実行されている場合、Oracle JDBCドライバーは各ホストのJVMにアクセスできる必要があります。 Oracle JDBCドライバーバージョンojdbc5以降を使用する必要があります。
ステップ1: Oracle JDBCドライバー( ojdbc5.jarなど)をOracleダウンロードサイトからパブリケーションサーバーを実行するホストにダウンロードします。
ステップ2:ファイルojdbc5.jarをディレクトリXDB_HOME /lib/jdbcコピーします。
注: ojdbc5.jarファイルを、Javaランタイム環境をインストールした場所のjre/lib/extサブディレクトリにコピーすることもできます。
手順3:サブスクリプションサーバーがパブリケーションサーバーとは異なるホストで実行されている場合は、サブスクリプションサーバーのホストに対して手順1と2を繰り返します。
注:このセクションの指示は、SQL Serverをパブリケーションデータベースまたはサブスクリプションデータベースとして使用する場合にのみ適用されます。
jTDS JDBCドライバーjarファイル jtds-1.3.1.jarは、パブリケーションサーバーとサブスクリプションサーバーを実行しているホスト上のJava仮想マシン(JVM)にアクセスできる必要があります。パブリケーションサーバーとサブスクリプションサーバーが別々のホストで実行されている場合、jTDS JDBCドライバーは各ホストのJVMにアクセスできる必要があります。
xDB Replication Serverをインストールすると、 jtds-1.3.1.jarファイルがディレクトリXDB_HOME /lib/jdbc配置されるため、この要件のために手動で構成する必要はありません。
手順1: SQL ServerデータベースエンジンでSQL Server認証モードが有効になっていることを確認します。 SQL Server認証モードでは、組み込みのシステム管理者ログインsaなどのSQL Serverログインを使用できます。
SQL Serverインストールのデフォルト設定を使用すると、 Windows認証モード のみが有効になり、Windowsオペレーティングシステムのアカウントを認証に利用します。
SQL Server認証モードを許可するには、認証モードを Mixed Mode Authenticationに変更する必要があります。これは、Windows認証とSQL Server認証の両方を許可します。
これは、 SQL Server Management Studio を使用して実行できます 。 SQL Server Management Studioの使用については、適切なSQL Serverのドキュメントを参照してください。
手順2: SQL ServerがTCP / IP接続を受け入れていることを確認します。 SQL Server構成マネージャーの[ SQL Serverネットワーク構成]で、SQL ServerインスタンスのTCP / IPプロトコルが[ Enabled設定されていることを確認します。一般的なデフォルトのSQL Serverインスタンス名はMSSQLSERVERまたはSQLEXPRESSです。
ステップ3(SQL Serverパブリケーションデータベースにのみ必要): SQL Serverエージェントが有効で実行されていることを確認します 。 SQL Serverエージェントは、SQL Serverでジョブのスケジューリングと実行を制御するWindowsサービスです。
SQL Server Configuration Manager を使用して、SQL Serverエージェントを起動できます 。 SQL Server Configuration Managerの使用については、適切なSQL Serverのドキュメントを参照してください。
•
dept 、 emp 、およびjobhist という名前の3つのテーブルは、スキーマedbメンバーです。
•
salesemp という名前の salesempは、スキーマedbメンバーです。このビューは、 empテーブルに対するSELECTステートメントです。
•
パブリケーションデータベースのOracleシステム識別子(SID)は xeです。 SQL Serverパブリケーションデータベース名はedbです。 Postgresパブリケーションデータベース名はedbです。 (パブリケーションデータベースとしてのOracle、パブリケーションデータベースとしてのSQL Server、およびパブリケーションデータベースとしてのPostgresの例については、このセクションの例を参照してください。)
注(Oracle 12cの場合): Oracle 12c マルチテナントアーキテクチャは、複数のプラガブルデータベース (PDB)を含むことができるコンテナーデータベース (CDB)の概念を導入します 。プラグ可能なデータベースは、シングルマスターレプリケーションシステムのパブリケーションデータベースまたはサブスクリプションデータベースとして使用できます。
手順1:パブリケーションデータベースユーザーのデータベースユーザー名を作成します。パブリケーションデータベースのユーザー名にはパスワードが必要であり、データベースセッションを作成できる必要があります。パブリケーションデータベースユーザーは、レプリケーションプロセスと履歴を追跡、制御、および記録するためにパブリケーションデータベースに作成されるコントロールスキーマオブジェクトの所有者になります。
注(Oracle 12c Pluggable Databaseの場合):パブリケーションデータベースユーザーは、Oracle ローカルユーザーまたは共通ユーザーにすることができます 。ローカルユーザーは、パブリケーションデータベースとして使用される単一のユーザー作成プラガブルデータベース (PDB)内にのみ存在し、アクセスできます。一般的なユーザー名は通常C##またはc##始まり、複数のプラグ可能なデータベースにアクセスできます。
注(Oracle 12cプラグ可能データベースの場合):パブリケーションデータベースとして使用するプラグ可能データベースに接続している間に、ローカルユーザーの特権の作成と付与を行う必要があります。共通ユーザーの作成は、Oracle 12cルートコンテナーCDB$ROOT内で行う必要があります。共通ユーザーへの特権の付与は、パブリケーションデータベースとして使用するプラガブルデータベースに接続している間に行う必要があります。
注(Oracle 12c Non-Container Databaseの場合):パブリケーションデータベースユーザーへの特権の作成と付与は、12cより前のOracleバージョンの場合と同じ方法で実行されます。
手順2:コントロールスキーマオブジェクトの作成に必要な特権を付与します。
ステップ3:パブリケーションテーブルでトリガーを作成するために必要な特権を付与します。パブリケーションデータベースユーザーにCREATE ANY TRIGGER特権を付与する必要があります。
ステップ4:トリガーの作成時にパブリケーションテーブルをロックするために必要な特権を付与します。パブリケーションデータベースユーザーにLOCK ANY TABLE権限を付与する必要があります。
ステップ5(Oracle 12cのみ):表領域にアクセスするために必要な特権を付与します。 GRANT UNLIMITED TABLESPACE特権は、パブリケーションデータベースユーザーに付与する必要があります。この要件は、プラガブルデータベースと非コンテナデータベースの両方に適用されます。
ステップ6:パブリケーションデータベースユーザーは、パブリケーションに含まれるテーブルとビューを読み取ることができる必要があります。
ステップ7(オプション):アプリケーションユーザーが必要とするパブリケーションのテーブルとビューにアクセスするために必要な特権を含む1つ以上の「グループ」ロールを作成します。
SQL Serverでは、アプリケーションは、 SQL Serverログインとそれに関連付けられたパスワードを提供することにより、データベースサーバーにアクセスします。
アプリケーションが特定のデータベースに接続すると、アプリケーションはそのデータベースで定義された データベースユーザーの IDと特権を引き継ぎます。任意のデータベースのデータベースユーザーは、ロールメンバシップや特権などのプロパティに関して、他のデータベースのデータベースユーザーとは無関係です。実際、同じデータベースユーザー名を複数のデータベースで定義でき、それぞれに独自のプロパティがあります。
各データベースでは、データベースユーザーを SQL Serverログインにマップ できます。データベースユーザーがマップされているSQL Serverログインを使用してアプリケーションがデータベースに接続すると、アプリケーションはそのデータベースユーザーのIDと特権を引き継ぎます。
•
データベースユーザーは 、パブリケーションサーバーが使用するSQL Serverログインにマップされるmsdbデータベースに存在する必要があります。このデータベースユーザーには、 msdbデータベースのdboスキーマでジョブを実行するための特定の特権が必要です。 ( msdbデータベースは、 SQL Serverエージェントがアラートとジョブをスケジュールするために使用されます msdbエージェントはWindowsサービスとして実行されます。)
•
コントロールスキーマオブジェクトを所有し、データベースedb SQL Serverログイン pubuserにマップされているデータベースedbはpubuserです。
•
パブリケーションサーバーによって作成された特定のコントロールスキーマオブジェクトを含めるために使用されるコントロールスキーマは pubuserです。他の制御スキーマオブジェクトは、常に_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_scheduler作成されます。
•
データベースmsdb SQL Serverログイン pubuserにマップされるデータベースユーザーはpubuser_msdbです。
注:これらの例のSQLステートメントを実行するには、 sqlcmdユーティリティプログラムを使用します。 USEコマンドは、後続のステートメントが適用されるデータベースを確立します。 GOコマンドは、前述のSQLステートメントをバッチとして実行します。 SQLステートメントのストリーム内でのGOコマンドの配置は、特定のSQLステートメントによっては重要な場合があります。
手順1: xDB Replication ServerパブリケーションデータベースユーザーのSQL Serverログインを作成します。ログインにはパスワードが必要です。
手順2:データベースmsdbデータベースユーザーとジョブスケジューリングに必要な権限を作成します。
手順3:コントロールスキーマオブジェクトの作成と所有権用のデータベースユーザーを作成します。レプリケーションプロセスと履歴を追跡、制御、および記録するために、コントロールスキーマオブジェクトがパブリケーションデータベースに作成されます。この例では、コントロールスキーマオブジェクトの一部がpubuserという名前のスキーマに作成されることを想定しています。
注: WITH DEFAULT_SCHEMA句で指定するスキーマ名は、ステップ5で選択したスキーマである必要があります。このスキーマは、 CREATE USER FOR LOGIN WITH DEFAULT_SCHEMAステートメントで使用する前に存在する必要はありません。
注:残りの手順は、コマンドがパブリケーションデータベースで指定されていることを前提としています(つまり、 USE edbデータベースは、パブリケーションデータベースedbを現在のデータベースとして確立するために以前に指定されています)。
手順4:パブリケーションデータベースユーザーがコントロールスキーマオブジェクトを作成するために必要なデータベースレベルの権限を付与します。
ステップ5:いくつかの制御スキーマオブジェクトが存在する制御スキーマを選択します。
ステップ6:パブリケーションテーブルでトリガーを作成するために必要な権限を付与します。パブリケーションデータベースユーザーには、パブリケーションテーブルに対するALTER権限が必要です。
ステップ7:パブリケーションデータベースユーザーは、パブリケーションに含まれるテーブルとビューを読み取ることができる必要があります。
ステップ8(オプション):アプリケーションユーザーが必要とするパブリケーションのテーブルとビューにアクセスするために必要な特権を含む1つ以上の「グループ」ロールを作成します。
注:これらのロールの作成は、xDB Replication ConsoleまたはxDB Replication Server CLIを使用してSQL Serverパブリケーションデータベース定義を作成した後にのみ実行できます。 (たとえば、xDB Replication Consoleの使用法については、セクション5.2.2を参照してください。)
次の例は、ロール appgroup 作成と、ロールへのパブリケーションテーブルに対する特権の付与を示しています。この例では、ステップ5で、スキーマpubuserがいくつかのコントロールスキーマオブジェクトを格納するコントロールスキーマとして選択されていることを前提としています。
注(個々のユーザーへの特権の付与):前述のように、パブリケーションテーブルのデータを変更する各アプリケーションデータベースユーザーには、パブリケーションテーブルおよびコントロールスキーマオブジェクトに対する特定の特権を付与する必要があります。このステップで前述したように、この目的でグループロールを使用すると、このプロセスを簡素化できます。
注:スキーマレベルで特権を付与する上記のステートメントを使用する代わりに、次のステートメントを使用して、データベースオブジェクトレベルでより詳細なレベルの特権を発行できます。
SQL Server 2008の場合:次の特権を付与します。
SQL Server 2012、2014の場合:次の権限を付与します。
•
データベースユーザーにはスーパーユーザー権限があります。データベース構成パラメーター session_replication_roleが、ある公開データベースから別の公開データベースへの制御スキーマの複製を伴うスナップショット操作のreplicaデータベースユーザーによって変更されるため、スーパーユーザー特権が必要です 。
手順1:パブリケーションデータベースユーザーのデータベーススーパーユーザーを作成します。パブリケーションデータベースのユーザー名にはパスワードが必要であり、データベースセッションを作成できる必要があります。パブリケーションデータベースユーザーは、レプリケーションプロセスと履歴を追跡、制御、および記録するためにパブリケーションデータベースに作成されるコントロールスキーマオブジェクトの所有者になります。
ステップ2(オプション):アプリケーションユーザーが必要とするパブリケーションのテーブルとビューにアクセスするために必要な特権を含む1つ以上の「グループ」ロールを作成します。
注:この手順で説明するプロセスは、シングルマスターとマルチマスターの両方のレプリケーションシステムのPostgresパブリケーションに適用できます。
次の例は、ロール appgroup 作成と、ロールへのパブリケーションテーブルに対する特権の付与を示しています。
また、同期レプリケーションのログベースの方法では、パブリケーションテーブルでTRUNCATEコマンドを許可する場合、次の追加の権限を付与します。
また、 TRUNCATEコマンドを使用するための同期レプリケーションのログベースの方法では、パブリケーションデータベース定義の作成後に次の特権を付与します。 (シングルマスターレプリケーションシステムのパブリケーションデータベース定義の作成については、セクション5.2.2を参照してください。マルチマスターレプリケーションシステムについては、セクション6.2.2を参照してください。)
注(パブリケーションの作成後にロールに特権を付与する):パブリケーションを作成する前に、パブリケーションテーブルの特権を含むロールを作成する必要があります。 (シングルマスター複製システム用のパブリケーションの作成については、セクション5.2.3を参照してください。マルチマスター複製システムについては、セクション6.2.3を参照してください。)
•
スキーマ_edb_replicator_pub USAGE特権。
•
シーケンスrrep_tx_seq USAGE特権。
•
ロールが行を挿入、更新、または削除するパブリケーションテーブルに対応するシャドウテーブルに対するINSERT特権。シャドウテーブルは、命名規則rrst_ schema _ table rrst_ schema 。シャドウテーブルは、トリガーベースの同期方法を使用する場合にのみ存在することに注意してください。
•
スキーマ_edb_replicator_pub USAGE特権。
•
テーブル_edb_replicator_pub.rrep_wal_events_queue INSERT特権。
さらに 、パブリケーションテーブルでTRUNCATEコマンドを許可する場合は 、次の追加の特権を付与します。
Postgresサブスクリプションデータベースの準備については、 セクション 5.1.5.1を参照してください 。 Oracleサブスクリプションデータベースの準備については、セクション5.1.5.2を参照してください。 SQL Serverサブスクリプションデータベースの準備については、セクション5.1.5.3を参照してください。
サブスクリプションデータベースユーザーは 、サブスクリプションテーブルでTRUNCATEコマンドを実行する機能も持っている必要があります 。これには以下が必要です。
•
サブスクリプションデータベースのユーザー名には、PostgreSQLのインストール時に作成されたPostgresユーザー名 postgres (Oracle互換構成モードでインストールされたAdvanced Serverのenterprisedb )を使用します。このオプションを選択した場合は、手順1をスキップして手順2に進みます。
手順1:サブスクリプションデータベースユーザーとしてスーパーユーザーを作成します。
ステップ2:サブスクリプションデータベースを作成または選択します。
SQL Serverパブリケーションデータベースの場合:SQL Serverのパブリケーションテーブルとビューを含むスキーマの名前がdbo場合、サブスクリプションサーバーは、サブスクリプションテーブルのPostgresサブスクリプションデータベースにdbo_sqlという名前のスキーマを作成します。 (スキーマdboは、Postgresで特別に予約されたスキーマです。)
ステップ1(オプション):サブスクリプションデータベースとして使用する既存のデータベースがない場合は、新しいデータベースを作成します。このステップはかなり複雑になる可能性があります。このタスクを実行するには、適切なOracleのドキュメントを参照してください。
手順2:サブスクリプションデータベースユーザーのデータベースユーザー名を作成します。サブスクリプションデータベースのユーザー名にはパスワードが必要であり、データベースセッションを作成できる必要があります。サブスクリプションデータベースユーザーは、レプリケートされたデータベースオブジェクトの所有者になります。
注(Oracle 12c Pluggable Databaseの場合):サブスクリプションデータベースユーザーは、Oracle ローカルユーザーまたは共通ユーザーにすることができます 。ローカルユーザーは、サブスクリプションデータベースとして使用される単一のユーザー作成のプラガブルデータベース (PDB)内にのみ存在し、アクセスできます。一般的なユーザー名は通常C##またはc##始まり、複数のプラグ可能なデータベースにアクセスできます。
注(Oracle 12cプラグ可能データベースの場合):サブスクリプションデータベースとして使用するプラグ可能データベースに接続している間に、ローカルユーザーの特権の作成と付与を行う必要があります。共通ユーザーの作成は、Oracle 12cルートコンテナーCDB$ROOT内で行う必要があります。共通ユーザーへの特権の付与は、サブスクリプションデータベースとして使用するプラガブルデータベースに接続している間に行う必要があります。
注(Oracle 12c非コンテナーデータベースの場合):サブスクリプションデータベースユーザーへの特権の作成と付与は、12cより前のOracleバージョンと同じ方法で実行されます。
手順3:複製されたデータベースオブジェクトの作成に必要な特権を付与します。
ステップ4(Oracle 12cのみ):テーブルスペースにアクセスするために必要な特権を付与します。 GRANT UNLIMITED TABLESPACE特権をサブスクリプションデータベースユーザーに付与する必要があります。この要件は、プラガブルデータベースと非コンテナデータベースの両方に適用されます。
ステップ1:サブスクリプションデータベースを作成または選択します。
注:パブリケーションテーブルとビューを含むスキーマの名前がpublic場合、サブスクリプションサーバーは、サブスクリプションテーブルのSQL Serverサブスクリプションデータベースにpublic_sqlという名前のスキーマを作成します。
手順2:サブスクリプションデータベースユーザーのSQL Serverログインを作成します。ログインにはパスワードが必要です。
ステップ3:サブスクリプションデータベースには、サブスクリプションテーブルの作成者および所有者となるデータベースユーザーが存在する必要があります。このデータベースユーザーは、手順2で作成したSQL Serverログインにマップする必要があります。
手順4:サブスクリプションのスキーマとテーブルを作成するために、サブスクリプションデータベースユーザーが必要とするデータベースレベルの権限を付与します。
パブリケーションサーバーは、セクション 3.1の 手順16の[パブリケーションサーバーの詳細]画面で指定したポート番号と、この指定したポート番号より2大きい値のポートオフセットを使用します。したがって、デフォルトのパブリケーションサーバーのインストールでは、ポート番号9051および9053にアクセスする必要があります。
サブスクリプションサーバーは、セクション 3.1の ステップ17の[サブスクリプションサーバーの詳細]画面で指定したポート番号と、この指定したポート番号より2大きい値のポートオフセットを使用します。そのため、デフォルトのサブスクリプションサーバーのインストールでは、ポート番号9052および9054にアクセスする必要があります。
別のポート番号を使用する場合は、xDBスタートアップ構成ファイルの PUBPORTおよびSUBPORTエントリを変更し 、パブリケーションサーバーとサブスクリプションサーバーを再起動します。
注:既存のレプリケーションシステムがあるパブリケーションサーバーまたはサブスクリプションサーバーのポート番号を変更する場合、これらの既存のレプリケーションシステムで実行する必要がある追加の更新があります。サブスクリプションサーバーで使用されるポート番号が変更された場合、コントロールスキーマ内のパブリケーションサーバーメタデータに対して行う必要がある変更については、セクション7.6.1.2を参照してください。パブリケーションサーバーが使用するポート番号が変更された場合に、コントロールスキーマ内のサブスクリプションメタデータに対して行う必要がある変更については、セクション5.5.3を参照してください。
Linuxのみ: /sbin/ifconfigコマンドを使用します。
Windowsのみ:コマンドプロンプトウィンドウを開き、 ipconfigコマンドを使用します。
Linuxのみ:ホストのネットワークIPアドレスがホスト名に関連付けられるように、 /etc/hostsファイルを変更する必要がある場合があります。
注: /etc/hostsファイルを変更する代替方法については、セクション10.4.1.7を参照してください。
これは 、ホスト名に関連付けられたIPアドレスを返すhostname -iコマンドを使用して確認することもできます。
ループバックアドレスが 127. x 場合 . x .上記の例のようにxが返されます。代わりにネットワークIPアドレスがホスト名に関連付けられるように/etc/hostsファイルを編集/etc/hostsます。
次の例は、ホスト名localhostがループバックアドレス127.0.0.1ではなくネットワークIPアドレス192.168.2.22に関連付けられるように変更された /etc/hostsファイルを示して /etc/hostsます。
一部のLinuxシステムでは、 /etc/hostsファイルを変更した後にネットワークサービスを再起動する必要がある場合があります。これは、次のバリエーションに示すように、使用しているLinuxシステムに応じてさまざまな方法で実行できます。
次の例は、 service networkコマンドを示して service network 。
hostname -iコマンドはホストのネットワークIPアドレスを返します。
Postgresデータベースサーバーは、ホストベースの認証ファイル pg_hba.conf使用して、データベースサーバー内のデータベースへのアクセスを制御します。
次の場所にある pg_hba.confファイルを変更する必要があります。
前述の各ケースでpg_hba.confファイルに必要な変更については、次のセクションで説明します。
ホスト pub_dbname pub_dbuser pub_ipaddr / 32 md5
ホスト pub_dbname pub_dbuser sub_ipaddr / 32 md5
pub_dbname 代わりに pub_dbname 値は、使用するPostgresパブリケーションデータベースの名前です。 pub_dbuser代わりにpub_dbuser値は、セクション5.1.4.3の手順1で作成したパブリケーションデータベースのユーザー名です。
edb という名前のPostgresパブリケーションデータベースの場合、結果のpg_hba.confファイルは次のように表示されます。
注:上記の例では、パブリケーションサーバーとサブスクリプションサーバーが同じホスト上で実行されているため、データベースedb単一エントリがedbれています。パブリケーションサーバーとサブスクリプションサーバーが別々のホストで実行されている場合、パブリケーションデータベースサーバー上のpg_hba.confファイルは次のようになります。
さらに、前述の例では、パブリケーションデータベース edbがトリガーベースの同期レプリケーションの方法を使用していることを前提としています 。ログベースの方法を使用する場合、 pg_hba.confファイルには、DATABASEフィールドがpub_dbname 、 pub_dbuser 、およびpub_ipaddr replicationに設定された追加のエントリが含まれている必要があります。
ログベースの方法を使用した同期レプリケーションの詳細については、セクション 2.2.10および5.1.2を参照してください 。
ホスト sub_dbname sub_dbuser pub_ipaddr / 32 md5
ホスト sub_dbname sub_dbuser sub_ipaddr / 32 md5
sub_dbuserおよびsub_dbname 代わりに sub_dbuser 値は、セクション5.1.5.1の手順1および2で作成したサブスクリプションデータベースユーザー名とサブスクリプションデータベース名です。
subdb という名前のPostgresサブスクリプションデータベースの場合、結果のpg_hba.confファイルは次のように表示されます。
注:前の例では、パブリケーションサーバーとサブスクリプションサーバーが同じホスト上で実行されているため、データベースsubdb必要なエントリは1つだけsubdb 。パブリケーションサーバーとサブスクリプションサーバーが別々のホストで実行されている場合、サブスクリプションデータベースサーバー上のpg_hba.confファイルは次のようになります。
手順1:公開サーバーがまだ実行されていない場合は起動します。
注: Oracleパブリケーションまたはサブスクリプションデータベースを使用していて、Oracle JDBCドライバーをxDB Replication Serverインストールのlib/jdbcサブディレクトリにコピーしてからパブリケーションサーバーを再起動していない場合、パブリケーションサーバーを再起動する必要があります。
Linuxのみ: CentOS 7またはRHEL 7のsystemctlコマンド、および以前のLinuxバージョンのserviceコマンドを使用して、パブリケーションサーバーが実行されていることを確認できます。
同様に、 stopオプションを使用して 、パブリケーションサーバーを停止します。
Windowsのみ:コントロールパネル、システムとセキュリティ、管理ツール、サービスの順に開きます。パブリケーションサーバーはPublication Service for xDB Replication Serverという名前のサービスとして実行されPublication Service for xDB Replication Server 。
ステップ2:パブリケーションサーバーを登録します。システムのアプリケーションメニューからxDBレプリケーションコンソールを開きます。 xDB RPMパッケージからインストールされたxDB Replication Serverの場合、xDB Replication Consoleは、スクリプトXDB_HOME /bin/runRepConsole.shを呼び出すことにより開始されます。
ステップ3:最上位のReplication Serverノードを選択します。 [ファイル]メニューの[パブリケーションサーバー]を選択し、[サーバーの登録]を選択します。または、Replication Serversノードで2番目のマウスボタンをクリックし、Register Publication Serverを選択します。 [パブリケーションサーバーの登録]ダイアログボックスが表示されます。
•
ホスト。パブリケーションサーバーを実行しているホストのネットワークIPアドレス。これは、セクション5.1.6.3の pg_hba.confファイルのpub_ipaddrに使用されるネットワークIPアドレスです 。 (このフィールドにはlocalhostを使用しないでください。)
•
港。パブリケーションサーバーが使用しているポート番号。これは、セクション3.1のステップ16の[パブリケーションサーバーの詳細]画面で指定したポート番号です。
•
ユーザー名。この公開サーバーの使用を認証するために使用される管理ユーザー名。これは、セクション3.1のステップ15でxDB Admin User Details画面で指定したユーザー名です。
•
パスワード。 [ユーザー名]フィールドで指定された管理ユーザーのパスワード。
•
ログイン情報を保存します。 xDBレプリケーションコンソールを開くたびにパブリケーションサーバーを再登録しない場合は、このボックスをオンにします。サーバーのログイン情報を保存する利点と欠点の詳細については、セクション4.2を参照してください。
注:入力したユーザー名とパスワードの組み合わせは、ホストフィールドに入力したIPアドレスを持つホストにあるxDBレプリケーション構成ファイルの管理ユーザー名とパスワードに対して認証されます。
手順1:パブリケーションデータベースが存在するデータベースサーバーが実行され、クライアント接続を受け入れていることを確認します。
ステップ2: Publication Serverノードの下のSMRタイプノードを選択します。 [出版物]メニューの[出版物データベース]を選択し、[データベースの追加]を選択します。または、SMRタイプノードで二次マウスボタンをクリックし、データベースの追加を選択します。パブリケーションサービス-データベースの追加ダイアログボックスが表示されます。
ステップ3:次のフィールドに入力します。
•
データベースの種類。パブリケーションデータベースのタイプとして、Oracle、SQL Server、PostgreSQL、またはPostgres Plus Advanced Serverを選択します。 Advanced Server Oracle互換インストールの場合、Postgres Plus Advanced Serverオプションを選択します。 PostgreSQLまたはAdvanced Server PostgreSQL互換インストールの場合、PostgreSQLオプションを選択します。
•
ホスト。パブリケーションデータベースサーバーが実行されているホストのIPアドレス。
•
港。パブリケーションデータベースサーバーが接続をリッスンするポート。
•
ユーザー。セクション5.1.4のステップ1で作成されたパブリケーションデータベースのユーザー名。
•
パスワード。データベースユーザーのパスワード。
•
サービスID(Oracleの場合)。 [SID]ラジオボタンが選択されている場合、パブリケーションデータベースを実行しているOracleインスタンスのOracleシステム識別子(SID)を入力します。 「サービス名」ラジオボタンが選択されている場合、 TNSNAMES.ORAファイルで定義されている接続記述子のネットサービス名を入力します。 注(Oracle 12cプラグ可能データベースの場合):サービス名を使用します。
•
データベース(PostgresまたはSQL Server用)。 PostgresまたはSQL Serverデータベース名を入力します。
•
URLオプション(SSL接続用)。 URLオプションを入力して、パブリケーションデータベースへのSSL接続を確立します。 SSL接続の使用については、セクション7.11を参照してください。
•
変更セットのロギング(Postgresの場合)。 [テーブルトリガー]を選択して、同期レプリケーションのトリガーベースの方法を使用します。同期レプリケーションのログベースの方法を使用するには、WAL Streamを選択します。トリガーベースの方法については、セクション2.2.9を参照してください。ログベースの方法については、セクション2.2.10を参照してください。
注:コントローラーデータベースがOracleまたはSQL Serverパブリケーションデータベースの場合、2番目のOracleまたはSQL Serverパブリケーションデータベースを追加して、2番目のシングルマスターレプリケーションシステムを作成することはできません。 xDB Replication ServerがOracleまたはSQL Serverパブリケーションデータベースで構成される複数のシングルマスタレプリケーションシステムを実行するには、Postgresパブリケーションデータベースをコントローラーデータベースとして指定する必要があります。コントローラデータベースの詳細については、セクション2.3.1.12を参照してください。
ステップ4: [テスト]ボタンをクリックします。テスト結果:成功が表示されたら、[OK]ボタンをクリックしてから、[保存]ボタンをクリックします。
Oracleのみ:各データベースの[データベースの追加]ダイアログボックスに入力することにより、複数のOracleデータベースをパブリケーションデータベースとして追加できます。パブリケーションデータベース定義ごとに異なるパブリケーションデータベースユーザー名を使用する場合、同じOracleデータベースを2つ以上の個別のパブリケーションデータベース定義として追加することもできます。
PostgresまたはSQL Serverの場合:各データベースの[データベースの追加]ダイアログボックスに入力することにより、複数のPostgresまたはSQL Serverデータベースをパブリケーションデータベースとして追加できます。ただし、Oracleとは異なり、特定のPostgresまたはSQL Serverデータベースは、パブリケーションデータベース定義として1回のみ追加できます。
ステップ1:パブリケーションデータベースノードを選択します。 [出版物]メニューから[出版物の作成]を選択します。または、[パブリケーションデータベース]ノードで2番目のマウスボタンをクリックし、[パブリケーションの作成]を選択します。 [パブリケーションの作成]ダイアログボックスが表示されます。
ステップ2: [パブリケーションの作成]タブの下の次のフィールドに入力します。
•
出版物名。すべての出版物の中で一意の名前を入力してください。
•
スナップショットのみのレプリケーション。スナップショットのみで複製を行う場合は、チェックボックスをオンにします。スナップショットのみのパブリケーションに含まれるテーブルには、主キーは必要ありません。同期レプリケーションを使用するパブリケーションに含まれるテーブルには、主キーが必要です。
•
パブリッシュ。パブリケーションに含めるテーブルの横にあるチェックボックスをオンにします。 [スナップショットのみのレプリケーション]ボックスがチェックされている場合、ビューは[公開]リストにも表示されます。または、さらに、[ワイルドカード選択の使用]ボタンをクリックして、パブリケーションテーブルの選択にワイルドカードパターンマッチングを使用します。
•
すべて選択。パブリケーションの[使用可能なテーブル]リストにすべてのテーブルとビューを含める場合は、このボックスをオンにします。
•
ワイルドカード選択を使用します。このボタンをクリックして、ワイルドカードセレクターを使用してパブリケーションのテーブルを選択します。ワイルドカードセレクタの詳細については、セクション7.1を参照してください。
ステップ3(オプション): テーブルフィルターは、スナップショットまたは同期レプリケーション中にサブスクリプションテーブルにレプリケートされる行の選択基準を制御するフィルタールールのセットで構成されます。
注:ログベースのレプリケーションシステムのテーブル設定要件、およびテーブルフィルターの使用に関する一般的な制限については、セクション2.2.12.3を参照してください。
フィルタルールは、 フィルタ名とSQLで構成されて句(省略さWHERE WHEREキーワード)を使用すると、レプリケーション中に含まれている行の選択基準を定義するテーブルまたはビューに指定するフィルタ句を 、と呼ばれます。
次の例では、フィルタルールは上に定義されている DEPT行のみに表deptno列が含まれている10 、 20 、または30の複製に含まれています。他のすべての行はレプリケーションから除外されます。
以下は、 [テーブル/ビュー]ドロップダウンリストから[ EDB.EMP ]を選択し、[フィルター]ダイアログボックスに10を含むdeptno行のみの選択基準を入力して、 EMPテーブルに追加されたルールを示しています。
このプロセスを繰り返して、 EMPテーブルに追加のフィルタールールを追加できます。以下に、 DEPTおよびEMPテーブルに定義された使用可能なフィルタールールの完全なセットを示します。
ステップ4: [作成]ボタンをクリックします。 Publication Created Successfullyが表示されたら、[OK]ボタンをクリックします。それ以外の場合は、エラーを調査し、必要な修正を行います。
•
コンベンションに従って命名テーブル RRST_ schema _ tableからSELECTの声明user_tables唯一の同期パブリケーションのために発見されました。この例では、これらのテーブルはRRST_EDB_DEPTおよびRRST_EDB_EMPです。
•
コンベンションに従って命名トリガ RRPD_ schema _ table 、 RRPI_ schema _ table 、およびRRPU_ schema _ tableからSELECTの声明user_triggers唯一の同期パブリケーションのために発見されました。この例では、これらのトリガーはRRPU_EDB_DEPT 、 RRPI_EDB_DEPT 、 RRPD_EDB_DEPT 、 RRPI_EDB_EMP 、 RRPU_EDB_EMP 、およびRRPD_EDB_EMPです。
注: RREP_SYNCID_ARRAYコレクションタイプは、Oracleパブリケーションデータベースでのみ見つかります。
ほとんどの制御スキーマオブジェクトは、スキーマ _edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerで作成されます 。セクション5.1.4.2の手順5で選択したスキーマに、追加の制御スキーマオブジェクトが作成されます。次の例では、選択したスキーマがpubuserであると想定しています。パブリケーションテーブルは、 edbスキーマにあるdeptおよびempです。
注(SQL Server 2012、2014の場合):パブリケーションデータベースがSQL Server 2012または2014の場合、前述のリストの次のデータベースオブジェクトは、コントロールスキーマの一部として作成されなくなりました。
最後に、サブスクリプションが作成された後、次のようにmsdbデータベースにいくつかのジョブが作成されます。
制御スキーマ・オブジェクトは、という3つのスキーマに作成され _edb_replicator_pub 、 _edb_replicator_sub 、および_edb_scheduler 。
_edb_replicator_pub 含まれるコントロールスキーマオブジェクトは、次のように表示されます。
_edb_replicator_sub 含まれる制御スキーマオブジェクトは、次のように表示されます。
_edb_scheduler 含まれる制御スキーマオブジェクトは、次のように表示されます。
これらのトリガーは 、ログベースの方法が使用される場合にTRUNCATEコマンドの同期複製をサポートするために使用されます。
手順1:サブスクリプションサーバーが起動していない場合は起動します。セクション5.2.1のステップ1と同じプロセスを繰り返します。
注: Oracleパブリケーションまたはサブスクリプションデータベースを使用していて、Oracle JDBCドライバーをxDB Replication Serverインストールのlib/jdbcサブディレクトリにコピーしてからサブスクリプションサーバーが再起動されていない場合、サブスクリプションサーバーを再起動する必要があります。
Linuxのみ: CentOS 7またはRHEL 7のsystemctlコマンド、および以前のLinuxバージョンのserviceコマンドをedb-xdbsubserverして、サブスクリプションサーバーのedb-xdbsubserverを起動、停止、または再起動します。これらのコマンドの使用方法については、セクション5.2.1を参照してください。
Windowsのみ:コントロールパネル、システムとセキュリティ、管理ツール、サービスの順に開きます。 Subscription Service for xDB Replication Serverという名前のサービスの[開始]または[再起動]リンクを使用しSubscription Service for xDB Replication Server 。
ステップ2:サブスクリプションサーバーを登録します。システムのアプリケーションメニューからxDBレプリケーションコンソールを開きます。 xDB RPMパッケージからインストールされたxDB Replication Serverの場合、xDB Replication Consoleは、スクリプトXDB_HOME /bin/runRepConsole.shを呼び出すことにより開始されます。
ステップ3:最上位のReplication Serverノードを選択します。 [ファイル]メニューの[サブスクリプションサーバー]を選択し、[サーバーの登録]を選択します。または、Replication Serversノードでセカンダリマウスボタンをクリックし、Register Subscription Serverを選択します。 [サブスクリプションサーバーの登録]ダイアログボックスが表示されます。
•
ホスト。サブスクリプションサーバーを実行しているホストのネットワークIPアドレス。これは、セクション5.1.6.3の pg_hba.confファイルのsub_ipaddrに使用されるネットワークIPアドレスです 。 (このフィールドにはlocalhostを使用しないでください。)
•
港。サブスクリプションサーバーが使用しているポート番号。これは、セクション3.1のステップ17の[サブスクリプションサーバーの詳細]画面で指定したポート番号です。
•
ユーザー名。このサブスクリプションサーバーの使用を認証するために使用される管理ユーザー名。これは、セクション3.1のステップ15でxDB Admin User Details画面で指定したユーザー名です。
•
パスワード。 [ユーザー名]フィールドで指定された管理ユーザーのパスワード。
•
ログイン情報を保存します。 xDB Replication Consoleを開くたびにサブスクリプションサーバーを再登録しない場合は、このボックスをオンにします。サーバーのログイン情報を保存する利点と欠点の詳細については、セクション4.2を参照してください。
注:入力したユーザー名とパスワードの組み合わせは、ホストフィールドに入力したIPアドレスを持つホストにあるxDBレプリケーション構成ファイルの管理ユーザー名とパスワードに対して認証されます。
•
Oracleのみ。このデータベースにレプリケートされるパブリケーションのテーブルまたはビューと同じ名前を持つ、Oracleサブスクリプションデータベースユーザーが所有する既存のテーブルまたはビューが存在していてはなりません。たとえば、Oracleサブスクリプションデータベースのユーザー名がsubuserで、Postgresパブリケーションに名前deptテーブルが含まれている場合、Oracleサブスクリプションデータベースには、スキーマ修飾名subuser.dept既存のテーブルまたはビューがあってはなりません。サブスクリプションを作成するとき。
•
Postgresのみ。このデータベースにレプリケートされるパブリケーション内のテーブルまたはビューと同じスキーマ修飾名を持つ既存のテーブルまたはビューが存在してはなりません。たとえば、パブリケーションにスキーマ修飾名edb.deptテーブルが含まれている場合、Postgresサブスクリプションデータベースには、サブスクリプションの作成時にスキーマ修飾名edb.dept既存のテーブルまたはビューがあってはなりません。 注: SQL Serverパブリケーションのスキーマ名がdbo場合、サブスクリプションテーブルはPostgresのdbo_sqlというスキーマの下に作成されます。
•
SQL Serverのみ。このデータベースにレプリケートされるパブリケーション内のテーブルまたはビューと同じスキーマ修飾名を持つ既存のテーブルまたはビューが存在してはなりません。たとえば、パブリケーションにスキーマ修飾名edb.deptテーブルが含まれている場合、SQL Serverサブスクリプションデータベースには、サブスクリプションの作成時にスキーマ修飾名edb.dept既存のテーブルまたはビューがあってはなりません。 注: Postgresの公開スキーマ名がpublic場合、サブスクリプションテーブルはSQL Serverのpublic_sqlという名前のスキーマの下に作成されます。
注:パブリケーションデータベースとして追加されたデータベースは、サブスクリプションデータベースとしても使用できます。
手順1:サブスクリプションデータベースが存在するデータベースサーバーが実行され、クライアント接続を受け入れていることを確認します。
ステップ2: Subscription Serverノードを選択します。 [サブスクリプション]メニューから[サブスクリプションデータベース]を選択し、[データベースの追加]を選択します。または、Subscription Serverノードで二次マウスボタンをクリックし、データベースの追加を選択します。 [サブスクリプションサービス-データベースの追加]ダイアログボックスが表示されます。
ステップ3:次のフィールドに入力します。
•
データベースの種類。サブスクリプションデータベースのタイプとして、Oracle、SQL Server、PostgreSQL、またはPostgres Plus Advanced Serverを選択します。 Advanced Server Oracle互換インストールの場合、Postgres Plus Advanced Serverオプションを選択します。 PostgreSQLまたはAdvanced Server PostgreSQL互換インストールの場合、PostgreSQLオプションを選択します。
•
ホスト。サブスクリプションデータベースサーバーが実行されているホストのIPアドレス。
•
港。サブスクリプションデータベースサーバーが接続をリッスンするポート。
•
ユーザー。セクションで選択されたサブスクリプションデータベースのユーザー名5.1.5.1 Postgresのサブスクリプションデータベースまたはセクションのステップ2で作成したデータベース・ユーザー名の5.1.5.2セクションの手順2で作成したOracleのサブスクリプションデータベースまたはデータベース・ユーザー名のための5.1.5.3のためにSQL Serverサブスクリプションデータベース。
•
パスワード。データベースユーザーのパスワード。
•
サービスID(Oracleの場合)。 [SID]ラジオボタンが選択されている場合、サブスクリプションデータベースを実行しているOracleインスタンスのOracleシステム識別子(SID)を入力します。 「サービス名」ラジオボタンが選択されている場合、 TNSNAMES.ORAファイルで定義されている接続記述子のネットサービス名を入力します。 注(Oracle 12cプラグ可能データベースの場合):サービス名を使用します。
•
データベース(PostgresまたはSQL Server用)。 PostgresまたはSQL Serverデータベース名を入力します。
•
URLオプション(SSL接続用)。 URLオプションを入力して、サブスクリプションデータベースへのSSL接続を確立します。 SSL接続の使用については、セクション7.11を参照してください。
ステップ4: [テスト]ボタンをクリックします。テスト結果:成功が表示されたら、[OK]ボタンをクリックしてから、[保存]ボタンをクリックします。
ステップ1:サブスクリプションデータベースノードを選択します。 [サブスクリプション]メニューから、[サブスクリプションの作成]を選択します。または、サブスクリプションデータベースノードで二次マウスボタンをクリックし、サブスクリプションの作成を選択します。 [サブスクリプションの作成]ダイアログボックスが表示されます。
ステップ2:次のフィールドに入力します。
•
サブスクリプション名。すべてのサブスクリプション名の中で一意のサブスクリプションの名前を入力します。
•
ホスト。サブスクライブするパブリケーションの親ノードであるパブリケーションサーバーのネットワークIPアドレス。これは、セクション5.2.1のステップ3のホストフィールドに入力された値と同じです。
•
港。パブリケーションサーバーが使用するポート。これは、セクション5.2.1のステップ3でポートフィールドに入力した値と同じです。
•
ユーザー名。パブリケーションサーバーの管理ユーザー名。これは、セクション5.2.1のステップ3の[ユーザー名]フィールドに入力した値と同じです。
•
パスワード。管理ユーザーのパスワード。これは、セクション5.2.1のステップ3の[パスワード]フィールドに入力した値と同じです。
•
出版物名。 [ロード]ボタンをクリックして、利用可能なパブリケーションのリストを取得します。サブスクライブするパブリケーションを選択します。
ステップ3(オプション):パブリケーションで使用可能なテーブルフィルターのセットを定義した場合、このサブスクリプションでこれらのフィルターを有効にするオプションがあります。テーブルフィルターの定義手順については、セクション5.2.3を参照してください。このサブスクリプションに複製される行をフィルタリングしたくない場合は、ステップ4に進みます。
次の例では、 dept_10_20_30 という名前のフィルターがdeptテーブルで有効になり、 dept_30という名前のフィルターがこのサブスクリプションのempテーブルで有効になります。
ステップ4: [作成]ボタンをクリックします。 [サブスクリプションが正常に作成されました]と表示されたら、[OK]ボタンをクリックします。それ以外の場合は、エラーを調査して必要な修正を行います。
サブスクリプションデータベース定義を追加すると、 rrep_txset_health という名前の単一のテーブルがサブスクリプションメタデータオブジェクトとして作成されます。
Oracleのみ: RREP_TXSET_HEALTHテーブルは、次の出力に示すように、サブスクリプションデータベースユーザーのスキーマに作成されます。
SQL Serverの場合のみ: rrep_txset_healthテーブルは、 _edb_replicator_subという名前のスキーマに作成されます。
Postgresの場合のみ: rrep_txset_healthテーブルは、名前のスキーマに作成され_edb_replicator_sub 。
手順1:スナップショットレプリケーションを実行するサブスクリプションのサブスクリプションノードを選択します。
手順2:次のいずれかの方法で[スナップショット]ダイアログボックスを開きます。
ステップ3:スナップショットの出力をダイアログボックスに表示する場合にのみ、[詳細出力]チェックボックスをオンにします。スナップショットからの大量の出力が[スナップショット]ダイアログボックスからの応答を遅延させる可能性があるため、ネットワークアドレス変換(NAT)環境ではこのオプションをオフのままにしておく必要があります。 [スナップショット]ボタンをクリックして、スナップショットの複製を開始します。
ステップ4:スナップショットが成功した場合、「スナップショットの取得に成功しました」と表示されます。 OKボタンをクリックします。スナップショットが成功しなかった場合、[詳細出力]が選択されている場合は[スナップショット]ダイアログボックスウィンドウのメッセージをスクロールするか、ログファイルを確認します。
各スナップショットのステータスメッセージは、 mtk.log[.という名前のMigration Toolkitログファイルに保存されますmtk.log[.次のディレクトリのn ] (ログファイルのローテーションが有効な場合、 [. n ]はオプションの履歴ファイル数です):
POSTGRES_HOME \ .enterprisedb \ xdb \ x 。 x
POSTGRES_HOMEは、Windows postgresアカウント(Oracle互換構成モードでインストールされたAdvanced Serverのenterprisedbアカウント)のホームディレクトリです。 POSTGRES_HOMEの特定の場所は、Windowsのバージョンによって異なります。 xDB Replication Serverのバージョン番号はxで表され. x 。
ステップ1:同期レプリケーションのトリガーベースの方法が使用されている場合、同期レプリケーションを実行するサブスクリプションのサブスクリプションノードを選択します。
手順2:次のいずれかの方法で[同期]ダイアログボックスを開きます。
手順3: [同期]ボタンをクリックして、同期レプリケーションを開始します。
ステップ4:同期が成功した場合、Subscription Synchronized Successfullyが表示されます。 OKボタンをクリックします。同期が成功しなかった場合、[同期]ダイアログボックスウィンドウでメッセージをスクロールします。
注:このセクションでは、レプリケーションシステムのサブスクリプションを管理するさまざまな側面について説明します。レプリケーションシステムのパブリケーションの管理に関する同様の説明については、セクション7.6を参照してください。
手順1:ファイルに変更を加える前に、サーバーログインファイルでログイン情報を保存、変更、または削除するサブスクリプションサーバーが実行されている必要があります。サブスクリプションサーバーの起動方法については、セクション5.3.1のステップ1を参照してください。
ステップ2: Subscription Serverノードで2番目のマウスボタンをクリックし、Updateを選択します。 [サブスクリプションサーバーの更新]ダイアログボックスが表示されます。
ステップ3:サーバーログインファイルを更新する目的に応じて、ダイアログボックスのフィールドに入力します。
ステップ4: [更新]ボタンをクリックします。ダイアログボックスが閉じた場合、サーバーログインファイルの更新は成功しています。 xDB Replication Consoleツールバーの[更新]アイコンをクリックして、更新されたサブスクリプションサーバーノードを表示します。
注:データベースのタイプ(Oracle、SQL Server、またはPostgres)に応じて、特定の属性を変更しないでください。すでにサブスクリプションを追加している場合、サブスクリプションテーブルが作成されたスキーマへのアクセスを変更する属性を変更しないでください。
手順1:サブスクリプションデータベース定義として最終的に保存するデータベースサーバーが実行中であり、クライアント接続を受け入れていることを確認します。
ステップ2:変更するサブスクリプションデータベース定義の親であるノードを持つサブスクリプションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。サブスクリプションサーバーの起動と登録の手順については、セクション5.3.1を参照してください。
手順3:更新するサブスクリプションデータベース定義に対応するサブスクリプションデータベースノードを選択します。
ステップ4: [サブスクリプション]メニューから[サブスクリプションデータベース]を選択し、[データベースの更新]を選択します。または、サブスクリプションデータベースノードで二次マウスボタンをクリックし、データベースの更新を選択します。 [データベースソースの更新]ダイアログボックスが表示されます。
ステップ5:目的の変更を入力します。フィールドの正確な意味については、セクション5.3.2のステップ3を参照してください。
ステップ6: [テスト]ボタンをクリックします。テスト結果:成功が表示されたら、[OK]ボタンをクリックしてから、[保存]ボタンをクリックします。
手順7: xDB Replication Consoleツールバーの[更新]アイコンをクリックして、更新されたサブスクリプションデータベースノードとそのサブスクリプションを表示します。
手順1:変更するサブスクリプションの親であるノードを持つサブスクリプションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。サブスクリプションサーバーの起動と登録の手順については、セクション5.3.1を参照してください。
手順2:属性を更新するサブスクリプションノードを選択します。
ステップ3: [サブスクリプション]メニューから、[サブスクリプションの更新]を選択します。または、サブスクリプションノードでセカンダリマウスボタンをクリックし、サブスクリプションの更新を選択します。 [サブスクリプションの更新]ダイアログボックスが表示されます。
ステップ4:現在、パブリケーションサーバーが、ダイアログボックスに表示されているものとは異なるIPアドレスまたはポート番号を持つホストで実行されている場合は、正しい情報を入力します。また、パブリケーションサーバーが実行されているホストにあるxDBレプリケーション構成ファイルに保存されている管理ユーザー名とパスワードを入力する必要があります。 [更新]ボタンをクリックします。
手順5: [サブスクリプションが正常に更新されました]が表示されたら、[OK]ボタンをクリックします。それ以外の場合は、エラーを調査して必要な修正を行います。
ステップ6:新しいネットワークロケーションを備えたパブリケーションサーバーが他のサブスクリプションによってサブスクライブされたパブリケーションを管理する場合、これらの他のサブスクリプションに対してステップ1〜5を繰り返します。
手順1:変更するサブスクリプションに関連付けられたパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。変更するサブスクリプションの親であるノードを持つサブスクリプションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認してください。サブスクリプションサーバーの起動と登録の手順については、セクション5.3.1を参照してください。
ステップ2:個々のフィルタールールを有効または無効にするサブスクリプションのサブスクリプションノードを選択します。
手順3:次のいずれかの方法で[フィルタールール]タブを開きます。
ステップ4: [フィルタールール]タブで、チェックボックスをオンまたはオフにして、サブスクリプションで有効または無効にするフィルタールールを指定します。任意のサブスクリプションテーブルで、最大1つのフィルタールールを有効にできます。 [更新]ボタンをクリックします。
ステップ5:確認ボックスが表示され、フィルタリング基準を変更したサブスクリプションに対してスナップショットレプリケーションを実行するための警告メッセージと推奨事項が表示されます。
手順6:前の手順で[OK]ボタンをクリックした場合、更新が成功した場合、フィルタールールが正常に更新されたことを示す確認メッセージが表示されます。
手順7:フィルター条件が変更されたテーブルを含むサブスクリプションに対してスナップショットレプリケーションを実行することを強くお勧めします。
手順1:削除するサブスクリプションの親ノードをノードとするサブスクリプションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。サブスクリプションサーバーの起動と登録の手順については、セクション5.3.1を参照してください。
ステップ2:削除するサブスクリプションのサブスクリプションノードを選択します。
ステップ3:次のいずれかの方法でサブスクリプションを削除します。
ステップ4: [サブスクリプションの削除]確認ボックスで、[はい]ボタンをクリックします。
手順1:削除するサブスクリプションデータベース定義の親であるノードを持つサブスクリプションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。サブスクリプションサーバーの起動と登録の手順については、セクション5.3.1を参照してください。
手順2:削除するサブスクリプションデータベースノードを選択します。
ステップ3: [サブスクリプション]メニューから、[サブスクリプションデータベース]、[データベースの削除]の順に選択します。または、[サブスクリプションデータベース]ノードでセカンダリマウスボタンをクリックし、[サブスクリプションの削除]を選択します。 [サブスクリプションデータベースの削除]確認ボックスが表示されます。
ステップ4: [サブスクリプションデータベースの削除]確認ボックスで、[はい]ボタンをクリックします。
制御されたスイッチオーバーとは、パブリケーションデータベースとサブスクリプションデータベースの間でロールを交換することです。つまり、以前はパブリケーションであったテーブルがサブスクリプションテーブルになります。以前のサブスクリプションテーブルがパブリケーションになりました。
注:この説明では、同期レプリケーションのトリガーベースの方法がパブリケーションデータベースで使用されることを前提としています。パブリケーションデータベースがログベースの方法を採用している場合、パブリケーションデータベースの役割に切り替えたときに必要な場合、現在のサブスクリプションデータベースがログベースの方法を使用する基準を満たしているかどうかを判断する必要があります。サブスクリプションデータベースが基準を満たしていない場合は、トリガーベースの方法を実装して使用する必要があります。ログベースの方法と、ログベースの方法を使用する場合に実行する必要がある必要な構成手順については、セクション2.2.10を参照してください。
•
特定のコントロールスキーマテーブルを更新して、パブリケーションデータベースとサブスクリプションデータベースの接続情報を交換します。 これらの更新は、すべてのパブリケーションデータベース間で制御スキーマの一貫性を確保するために、すべてのパブリケーションデータベースの制御スキーマで行う必要があります。
ステップ1:パブリケーションデータベースに対するすべてのトランザクション処理を停止します。
手順2:オンデマンド同期レプリケーションまたはスナップショットレプリケーション(スナップショットのみのパブリケーションの場合)を実行して、パブリケーションデータベースシャドウテーブルの保留中の更新をサブスクリプションデータベースにレプリケートします。
ステップ3:パブリケーションサーバーとサブスクリプションサーバーを停止します。
ステップ4:セクション5.1の前提条件を確認して、サブスクリプションデータベースとそのホストがパブリケーションデータベースの役割で使用でき、パブリケーションデータベースとそのホストがサブスクリプションデータベースの役割で使用できることを確認します。
•
pg_hba.confファイルに追加のエントリが必要になる場合があります。
手順5:ノード1のパブリケーションデータベースからスキーマ_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerバックアップを作成します。
手順6:ノード1のパブリケーションテーブルにレプリケーショントリガーとそれに対応するトリガー関数のバックアップを作成します。トリガーベースの方法では、これらのトリガーにはrrpd_ 、 rrpi_ 、およびrrpu_プレフィックスが付けられます。トリガー関数には同じプレフィックスが付けられます。ログベースの方法の場合、各テーブルのトリガーにはrrpt_プレフィックスが付きrrpt_ 。この関数の名前はcapturetruncateeventです。
手順7:ノード2のサブスクリプションデータベースからスキーマ_edb_replicator_subバックアップを作成します。
手順8:手順5で作成したスキーマ_edb_replicator_pub 、 _edb_replicator_sub 、および_edb_schedulerのバックアップをノード2のサブスクリプションデータベースに復元します。また、手順6で作成したレプリケーショントリガーとトリガー関数のバックアップをノード2のサブスクリプションデータベースに復元します。
手順9:手順7で作成したスキーマ_edb_replicator_subのバックアップをノード1のパブリケーションデータベースに復元します。
ステップ10:コントロールスキーマオブジェクトを更新して、パブリケーションデータベース定義がノード2の新しいパブリケーションデータベース(つまり、以前のサブスクリプションデータベース)を参照し、サブスクリプションデータベース定義が新しいサブスクリプションデータベース(つまり、以前のパブリケーションデータベース)を参照するようにしますノード1。
ステップ11:新しいホストでパブリケーションサーバーまたはサブスクリプションサーバーを使用する場合は、次の手順を実行します。それ以外の場合は、手順12に進みます。
手順12:ノード2で現在実行されている新しいパブリケーションデータベースのコントローラーデータベース接続と認証情報が含まれるように、パブリケーションサーバーとサブスクリプションサーバーホストのxDBレプリケーション構成ファイルを編集します。
ステップ13:データベースサーバーのpg_hba.confファイルを更新して、セクション5.1.6.3に従ってノード1のサブスクリプションデータベースとノード2のパブリケーションデータベースにアクセスできるようにします。
手順14:ログベースの方法を使用する場合、パブリケーションデータベースが含まれているデータベースサーバーにレプリケーションスロットを作成します。
pg_drop_replication_slot関数が成功しない場合のレプリケーションスロットの削除に関する追加情報については、 10.3.4.4 項を参照してください 。データベースを元の役割に戻す場合、この手順で前述したように、パブリケーションデータベースサーバーにレプリケーションスロットを再作成するだけです。
ステップ15:制御されたスイッチオーバーが完了しました。パブリケーションサーバーとサブスクリプションサーバーを起動します。
ステップ16:パブリケーションテーブルがサブスクリプションテーブルと一致していることを確認した後、最初のレプリケーション操作はスナップショットである必要があります。スナップショットの実行後、同期レプリケーションが実行される場合があります。
フェールオーバーとは、パブリケーションデータベースまたはそのホストで障害が発生した場合に、サブスクリプションデータベースによってパブリケーションデータベースを置き換えることです。フェールオーバーは元に戻せないアクションと見なされるため、サブスクリプションデータベースはパブリケーションデータベースの役割を永続的に引き継ぎます。
•
パブリケーションデータベース上のコントロールスキーマオブジェクト(つまり、スキーマ _edb_replicator_pub 、 _edb_replicator_sub 、 _edb_scheduler 、およびそれらのオブジェクト)をバックアップから復旧または復元できない場合、フェイルオーバーの実行はEnterpriseDBテクニカルサポートサービスの支援が必要な場合にのみ可能です。
注:これらの構成オプションのほとんどは、マルチマスター複製システムにも適用できます。マルチマスターレプリケーションシステムに適用可能なオプションは、パブリケーションサーバーに適用されるオプションであり、Postgres以外のデータベース製品(Oracle機能など)に固有のものではありません。
注:このセクションで説明するオプションは、パブリケーションサーバーにのみ適用され、特に指定がない限り、パブリケーションサーバーの構成ファイルで設定されます。
copyViaDBLinkOraオプションがに設定されているtrue 、OracleデータベースのリンクAPI、 dblink_ora 、代わりにJDBCを使用したCOPYスナップショットレプリケーション中のOracleパブリケーションからAdvanced Serverのサブスクリプションテーブルを移入します。
注: OracleデータベースリンクAPI機能はPostgreSQLでは使用できないため、 copyViaDBLinkOraオプションはPostgreSQLサブスクリプションテーブルには適用されません。
注: dblink_oraをxDB Replication Serverで使用する前に、Advanced Serverで実行する必要のあるいくつかの構成手順があります。 Advanced Serverバージョン9.3以前の場合、 README-dblink_ora_setup.txtについてはPOSTGRES_INSTALL_HOME /doc/contribディレクトリにあるREADME-dblink_ora_setup.txt readmeテキストファイルを参照してください。 Advanced Serverバージョン9.4以降の場合、指示については、 『 Oracle開発者用データベース互換性ガイド』の dblink_oraの章を参照してください。
デフォルト値は falseです。
useFastCopyオプションをtrueに設定して、データ転送速度を最適化するために、 COPY操作中に先行書き込みログ(WAL)ロギングをスキップしtrue 。
useFastCopyオプションを使用するには、ターゲットPostgresデータベースサーバーのpostgresql.confファイルの archive_mode構成パラメーターをオフにする必要があります(したがって、WALデータのアーカイブを無効にします)。
デフォルト値は falseです。
使用 cpBatchSize JDBCで使用されている(メガバイト)バッチサイズを設定するオプションCOPYスナップショット時の動作を。大きなパブリケーションテーブルの場合、このオプションの値を増やします。
JDBC COPY操作を使用してPostgresサブスクリプションテーブルをロードするため、Postgresがサブスクリプションデータベースである場合、このオプションは影響を及ぼします 。
n のデフォルト値は8です。
batchSizeオプションコントロールの数INSERT JDBCバッチ内の文。
Postgresサブスクリプションデータベースの場合、テーブルはJDBC COPY を使用してロードされますが、何らかの理由でCOPY操作が失敗した場合、OracleおよびSQL Serverの場合のようにINSERTステートメントのJDBCバッチを使用してテーブルロードが再試行されます。
n のデフォルト値は100です。
Postgresサブスクリプションテーブルのロード後にANALYZEコマンドの実行をスキップする場合は、 skipAnalyzeオプションをtrue 設定します。 ANALYZEコマンドは、テーブルの内容に関する統計情報を収集します。これらの統計は、クエリプランナーによって使用されます。
デフォルト値は falseです。
注:このオプションをシングルマスターレプリケーションシステムに適用するには、サブスクリプションサーバー設定ファイル内でサブスクリプションサーバーに設定する必要があります。このオプションをマルチマスターレプリケーションシステムに適用するには、パブリケーションサーバー設定ファイル内でパブリケーションサーバーに設定する必要があります。
snapshotParallelLoadCountオプションコントロールは、スレッドの数は、並列モードでスナップショットデータの複製を実行するために使用されます。デフォルトの動作では、単一のスレッドを使用します。ただし、ターゲットシステムアーキテクチャにマルチCPU /コアが含まれる場合、通常はCPU /コアカウントに等しい1より大きい値を指定して、システムリソースを完全に利用できます。
BYTEA 、 BLOB 、 CLOB などの大きなオブジェクトに通常使用されるデータ型の列がテーブルに含まれている場合、大量のデータ(数百メガバイト)が持ち込まれるためにヒープスペースエラーが発生する可能性が高くなります。メモリに。このエラーの可能性を最小限に抑えるために、スナップショットレプリケーションは、バッチごとに1つのINSERTステートメントを使用して、一度に1行ずつ、ラージオブジェクトデータ型を含むテーブルをロードします。
注:このセクションで説明するオプションは、パブリケーションサーバーにのみ適用され、パブリケーションサーバーの構成ファイルで設定されます。
同期レプリケーションが発生すると、シャドウテーブルに記録された変更がJDBCバッチ更新のサブスクリプションテーブルに適用されます。各バッチ内では、変更ごとに個別のSQLステートメントを使用して変更を適用できます。または、単一の準備されたSQLステートメントを使用して一連の変更を適用できます。 準備されたSQL文は解析され、一度だけコンパイルされ、それは各実行におけるSQL文の特定の構成要素に対して異なる値を使用して複数回実行することができるされています。準備されていないSQLステートメントは、一度だけ解析、コンパイル、および実行されます。
準備されたステートメントは、同じタイプのSQLステートメント( INSERT 、 UPDATEまたはDELETE )が同じターゲットテーブルで異なる値で繰り返し連続して実行される場合にのみ役立ちます。同じテーブルに行のセットを挿入して同じ列にデータを挿入するなど、同じ操作を使用して同じテーブルに一連の連続した変更がある場合、パブリケーションサーバーは準備済みステートメントを使用してこれらの変更を適用できます。それ以外の場合、各変更は独自の個別のSQLステートメントで適用されます。
defaultBatchUpdateModeデフォルトモードは、JDBCのバッチ更新(この動作モードは、BUSと呼ばれている)で、個々のSQL文を使用するか、JDBCのバッチ更新(この動作モードは以下のように呼ばれている中で準備されたSQLステートメントを使用するかどうかのオプションを制御しBUP )。
デフォルト値は BUSです。
switchBatchUpdateMode出版サーバは動的にトリガベースの方法または対数用チェンジストリームのシャドウテーブルに遭遇した更新の種類及び配列に応じ複製プロセス中にバスモードとBUPモードを切り替えるか否かのオプションコントロールベースの方法。
デフォルト値は trueです。
これは、 defaultBatchUpdateMode=BUSおよびswitchBatchUpdateMode=true のデフォルト設定を使用することを意味します。パブリケーションサーバーは、個々のSQLステートメントで更新を適用することから開始します。単一の準備済みステートメントですべて処理できる連続した変更のストリームに遭遇すると、準備済みSQLステートメントの使用に切り替わります。
注:更新モードを切り替えずに、特定のパブリケーションサーバーによって適用されるすべての同期レプリケーション全体で特定のバッチ更新モードを使用する場合は、 switchBatchUpdateMode=falseと組み合わせてdefaultBatchUpdateModeオプションを目的のモードに設定しdefaultBatchUpdateMode 。たとえば、準備済みステートメントのみを使用する場合は、次のオプションを設定します。
注: Oracleがサブスクリプションデータベースの場合、上記の2つのオプションが常に設定されているかのように、同期レプリケーションは常にBUPモードで発生します。これは、PostgresパブリケーションのTEXTデータ型の大きな列がOracle CLOB列に正常に複製できるためです。 BUSモードでは、個々のOracle SQLステートメントの文字列リテラルの最大長は4000文字です。この制限は、BUPモードで使用される準備済みSQLステートメントには発生しません。
busBatchThresholdCountオプションは、パブリケーションサーバは、動的場合BUPモードへのバス・モードから切り替える前に、トリガーベースの方法またはログベースの方法のためのチェンジストリームのためのシャドーテーブルに遭遇しなければならない同じタイプの連続更新数を設定します切り替えが許可されます(つまりswitchBatchUpdateMode=true )。
n のデフォルト値は5です。
各ステートメントが複数の行に影響する多くのSQLステートメントを使用してパブリケーションへの変更が行われた場合、 busBatchThresholdCountを低くすると、パブリケーションの個々の変更の結果として生じる複数のシャドウテーブル行で準備されたステートメントの使用を促進することが有益な場合があります 。
bupBatchThresholdCoun tオプションは、と組み合わせて使用されるbupBatchThresholdRepeatLimitモードの周波数を制御するためのオプションは、パブリケーションに予想される更新タイプの揮発性に基づいて切り替えます。
m のデフォルト値は5です。
n のデフォルト値は10です。
同じ準備済みSQLステートメントが連続して実行されるたびに、内部「バッチ」カウンターが増分されます。このバッチカウントが 、指定された準備済みステートメントの実行回数に対してbupBatchThresholdCountを下回ると 、2番目の内部「繰り返し」カウンターが1つ増加します。繰り返しカウンターが最終的にbupBatchThresholdRepeatLimitに達すると、更新モードはBUPからBUSに切り替えられます。
したがって、準備されたSQLステートメント( bupBatchThresholdRepeatLimit に対して測定される ) が頻繁に連続して変更され 、それぞれが少数回( bupBatchThresholdCountに対して測定される)実行される場合、実行モードは変更されずに個々のSQLステートメントに戻ります準備されたステートメント。
注: busBatchThresholdCountで設定されたしきい値にbusBatchThresholdCountと、パブリケーションサーバーは準備済みステートメントに戻ります。
次の例は、 bupBatchThresholdCountが3に設定され、 bupBatchThresholdRepeatLimitが4に設定されている場合の更新の処理を示しています 。この例で参照される「クエリドメイン」の変更は、異なるステートメントタイプ( INSERT 、 UPDATE 、またはDELETE )または異なるターゲットテーブルは次の更新で検出されるため、別の準備されたSQLステートメントを使用する必要があります。
この時点で、最初の2つの更新(テーブル empからdeptへの変更)後にクエリドメインが変更され、前の準備済みステートメント(2)の実行回数がbupBatchThresholdCount未満なので、繰り返しカウンターは1に設定されます。
クエリドメインは再び変更されます(テーブル deptからemp 変更されます )が、今回は同じクエリドメイン(更新3から6)の実行回数(4)がbupBatchThresholdCountを超えるため、繰り返しカウンターが0にリセットされます。
クエリドメインが再び変更され( INSERTステートメントからUPDATEステートメント)、実行回数(2)がbupBatchThresholdCountよりbupBatchThresholdCountため、繰り返しカウンターが1にインクリメントされます。
10。
13。
並列同期では、複数のスレッドを使用してトランザクションセットを並列に適用することにより、システムアーキテクチャのマルチCPUまたはコアを利用します。
syncLoadThreadLimitオプションコントロールパラレル同期中にソース公開テーブルからの荷重データに使用されるスレッドの最大数。デフォルトのカウントは4です。ただし、ターゲットシステムアーキテクチャ(具体的には、マルチCPU /コア)に応じて、通常CPU /コアカウントに等しいカスタムカウントを指定して、システムリソースを最大限に活用することができます。
dataSyncThreadCountオプションコントロールは、スレッドの最大数は、パラレルモード(マルチマスタ複製システム用)(シングルマスタ複製システムのための)標的スレーブデータベースまたはターゲットマスターノードに同期複製中に増分変更を適用するために使用されます。デフォルトの動作( dataSyncThreadCountが0に設定されている場合)は、ターゲットノードと同じ数のスレッドを使用します。
targetDBQueryTimeoutターゲット・データベースのトランザクションのセットを適用するには、公開サーバによる試みは、ターゲットの一つ以上に別のアプリケーションによって取得したロックのために、データベースサーバ(通常によって中止される前に、オプションは、タイムアウト(ミリ秒)間隔を制御しますテーブル)。
targetDBQueryTimeoutオプションは、10分にデフォルトのロック・タイムアウト値を設定します。トランザクションが中止されるまでの待ち時間を長くしたい場合は、10分のデフォルト値をより高い値に変更します。 targetDBQueryTimeoutオプションの使用をオフにする場合は、値を0に変更します。この場合、タイムアウト間隔はPostgresデータベースサーバーのstatement_timeout構成パラメーターの設定によって制御されます。
targetDBQueryTimeout 値が targetDBQueryTimeout 、他のターゲットデータベース上の後続のトランザクションセットの処理が遅れます。トランザクションセットがブロックされると、次のトランザクションセットをロードできないためです。1)ロックが解除され、ブロックされたトランザクションセットを完了に適用できるまたは2) targetDBQueryTimeout間隔を超えています。
したがって、たとえば、保留中のトランザクションセットが10個ある3ノードクラスターで、トランザクションセット1がロードされ、ノード2およびノード3への複製を開始すると仮定します。待機状態のこれらのテーブルの更新。トランザクションセット1のレプリケーションはノード3で完了するまで実行できますが、待機時間が targetDBQueryTimeout間隔を超えると、データベースサーバーはノード2のトランザクションセット1をキャンセルします。このトランザクションセットのノード2へのレプリケーションは、xDBレプリケーションで中止としてマークされますサーバーのメタデータ。
デフォルト値は 600000です。
syncBatchSizeオプションは、同期レプリケーションJDBCバッチ内のステートメントの数を制御します。
n のデフォルト値は100です。
syncFetchSizeオプションコントロールがどのように多くの行1つのネットワーク往復で、パブリケーションデータベースからフェッチされます。たとえば、保留中の行の変更が1000件ある場合、デフォルトのフェッチサイズには5回のデータベースラウンドトリップが必要です。 500のフェッチサイズを使用すると、2回の往復ですべての変更が取得されます。
n のデフォルト値は200です。
txSetMaxSizeオプションでは、単一のトランザクションのセットにグループ化することができるトランザクションの行の最大数を定義します。パブリケーションサーバーは、単一のトランザクションセットにグループ化された数のメモリ内の行をフェッチすることにより、変更をロードして処理します。
n のデフォルト値は10000です。
パフォーマンステストを実行し、レプリケーション統計を分析する必要がある場合にのみ、 enablePerformanceStatsオプションをtrue 設定します。有効にすると、パブリケーションサーバーは、各マスターノードのパブリケーションテーブルに追加のトリガーを作成します。トリガーは、制御スキーマのmmr_transaction_historyテーブルに記録されるトランザクション統計を生成します。 パフォーマンスのオーバーヘッドを回避するために、本番環境ではこのオプションを無効にする必要があります。
デフォルト値は falseです。
•
wal_level。 logical設定しlogical 。
•
max_wal_senders。同時接続の最大数(つまり、同時に実行されているWAL送信プロセスの最大数)を指定します。少なくとも、ログベースの方法を使用するこのデータベースサーバー上のMMRマスターノードの数に設定します。さらに、SMRパブリケーションデータベースをこのデータベースサーバーで実行する場合は、ログベースの方法を使用するSMRパブリケーションデータベースの数も追加します。
•
max_replication_slots。複製スロットの最大数を指定します。 MMRシステムをサポートするための最小値は、マルチマスターレプリケーションシステムのマスターノードの合計数に、このデータベースサーバーにあるマスターノードの数を掛けた値です。詳細については、セクション2.2.10.4を参照してください。さらに、SMRパブリケーションデータベースをこのデータベースサーバーで実行する場合は、ログベースの方法を使用するSMRパブリケーションデータベースの数も追加します。
•
track_commit_timestamp。 on設定onます。この構成パラメーターは、バージョン9.5のPostgresデータベースサーバーにのみ適用されます。詳細については、セクション6.6.1を参照してください。
同期レプリケーションのログベースの方法については、 セクション 2.2.10を参照してください 。
さらに、 pg_hba.confファイルには、ログベースの方法を使用するマスターノードの各パブリケーションデータベースユーザーのエントリが必要です。このようなデータベースユーザーは、 pg_hba.confファイルにレプリケーションデータベースユーザーとして含める必要があります。追加情報については、セクション6.1.5を参照してください。
•
データベースユーザーにはスーパーユーザー権限があります。マスター定義ノードが同期レプリケーション中に他のマスターノードから更新を受信すると、データベース構成パラメーター session_replication_roleがデータベースユーザーによって変更されるため、スーパーユーザー権限が必要です 。データベースユーザーは、 session_replication_roleを一時的にreplicaに変更して、パブリケーションテーブルのトリガーが起動しないようにします。このセッションの変更は、あるパブリケーションデータベースから別のパブリケーションデータベースへの制御スキーマの複製を伴うスナップショット操作でも発生します。
•
dept 、 emp 、およびjobhist という名前の3つのテーブルは、スキーマedbメンバーです。
ステップ1:マスター定義ノードのログインおよびスーパーユーザー特権を持つユーザー名を作成します。このユーザーは、レプリケーションプロセスと履歴を追跡、制御、および記録するためにマスター定義ノードで作成されるxDB Replication Serverメタデータデータベースオブジェクトの所有者になります。 xDB Replication Serverメタデータデータベースオブジェクトは、 _edb_replicator_pubというスキーマに作成されます。
ステップ2(オプション):ユーザーがこのマスターノードにあるパブリケーションテーブルのデータにアクセスする場合、これらのテーブルにアクセスするために必要な特権を含む1つ以上の「グループ」ロールがあると便利です。パブリケーションテーブルに対して挿入、更新、または削除を実行するユーザーには、コントロールスキーマオブジェクトに対する特権も付与する必要があります。
そのような役割の作成については、セクション 5.1.4.3の ステップ2を参照してください 。
•
データベースユーザーにはスーパーユーザー権限があります。マスターノードが同期レプリケーション中に他のマスターノードから更新を受信すると、データベース構成パラメーター session_replication_roleがデータベースユーザーによって変更されるため、スーパーユーザー特権が必要です 。データベースユーザーは、 session_replication_roleを一時的にreplicaに変更して、パブリケーションテーブルのトリガーが起動しないようにします。このセッションの変更は、あるパブリケーションデータベースから別のパブリケーションデータベースへの制御スキーマの複製を伴うスナップショット操作でも発生します。
手順1:マスターノードのデータベースユーザー名を作成します。このユーザーは、レプリケーションプロセスと履歴を追跡、制御、記録するためにマスターノードで作成されるxDB Replication Serverメタデータデータベースオブジェクトの所有者になります。 xDB Replication Serverメタデータデータベースオブジェクトは、 _edb_replicator_pubというスキーマに作成されます。
ステップ2:そのようなデータベースがまだ存在しない場合、マスターノードとして使用されるデータベースを作成します。
Postgresデータベースサーバーは、ホストベースの認証ファイル pg_hba.conf使用して、データベースサーバー内のデータベースへのアクセスを制御します。
マスターノードを含む各Postgresデータベースサーバーでpg_hba.confファイルを変更する必要があります。
pg_hba.confファイルに必要な変更については、次のセクションで説明します。
ホスト masternode_db masternode_user pub_ipaddr / 32 md5
masternode_db 代わりに使用する値は、マスターノードとして使用するデータベースの名前です。 masternode_user代わりにmasternode_user値は、セクション6.1.3のステップ1またはセクション6.1.4のステップ1で作成したデータベースユーザー名です。
同じデータベースサーバーで実行されているedbおよびmmrnode というデータベースを使用する2つのマスターノードの場合 、結果のpg_hba.confファイルは次のように表示されます。
データベースの使用して、マスターノードた場合 mmrnodeデータベースのユーザー名とmmruser 、データベースの場所とは別のホスト上で実行されているedb実行されている、 pg_hba.confデータベースとデータベース・サーバ上のファイルmmrnode次のようになります。
前述の例では、データベース edbおよびmmrnodeがトリガーベースの同期レプリケーションの方法を使用していることを前提としています 。ログベースの方法を使用する場合、 pg_hba.confファイルには、 masternode_userおよびpub_ipaddr replicationに設定されたDATABASEフィールドを持つ追加エントリが含まれており、実行中のホスト上のパブリケーションサーバーからのレプリケーション接続が許可されます。
ログベースの方法を使用した同期レプリケーションの詳細については、セクション 2.2.10および6.1.2を参照してください 。
手順1:マスター定義ノードのデータベースサーバーが実行され、クライアント接続を受け入れていることを確認します。
ステップ2: Publication Serverノードの下のMMRタイプノードを選択します。 [出版物]メニューの[出版物データベース]を選択し、[データベースの追加]を選択します。または、MMRタイプノードで2番目のマウスボタンをクリックし、データベースの追加を選択します。パブリケーションサービス-データベースの追加ダイアログボックスが表示されます。
ステップ3:次のフィールドに入力します。
•
データベースの種類。マスター定義ノードにPostgreSQLまたはPostgres Plus Advanced Serverを選択します。 Advanced Server Oracle互換インストールの場合、Postgres Plus Advanced Serverオプションを選択します。 PostgreSQLまたはAdvanced Server PostgreSQL互換インストールの場合、PostgreSQLオプションを選択します。
•
ホスト。マスター定義ノードが実行されているホストのIPアドレス。
•
港。マスター定義ノードが接続を待機しているポート。
•
ユーザー。セクション6.1.3のステップ1で作成されたマスター定義ノードのデータベースユーザー名。
•
パスワード。データベースユーザーのパスワード。
•
データベース。マスター定義ノードのデータベース名を入力します。
•
URLオプション(SSL接続用)。 URLオプションを入力して、マスター定義ノードへのSSL接続を確立します。 SSL接続の使用については、セクション7.11を参照してください。
•
変更セットのロギング(Postgresの場合)。 [テーブルトリガー]を選択して、同期レプリケーションのトリガーベースの方法を使用します。同期レプリケーションのログベースの方法を使用するには、WAL Streamを選択します。トリガーベースの方法については、セクション2.2.9を参照してください。ログベースの方法については、セクション2.2.10を参照してください。
•
ノードの優先度。 1〜10の整数。ノードの優先度に基づいて競合を解決するためにこのマスターノードに割り当てられる優先度レベルです。最高の優先度は1で、最低の優先度は10です。競合解決戦略については、セクション6.6.4を参照してください。マスター定義ノードのデフォルトは1です。
ステップ4: [テスト]ボタンをクリックします。テスト結果:成功が表示されたら、[OK]ボタンをクリックしてから、[保存]ボタンをクリックします。
ラベル MDNは、レプリケーションツリーのノードの最後に表示され、さらに、プロパティウィンドウでMDNフィールドがYesに設定されて、これがマスター定義ノードであることを示します。
ステップ1:パブリケーションデータベースノードを選択します。 [出版物]メニューから[出版物の作成]を選択します。または、[パブリケーションデータベース]ノードで2番目のマウスボタンをクリックし、[パブリケーションの作成]を選択します。 [パブリケーションの作成]ダイアログボックスが表示されます。
ステップ2: [パブリケーションの作成]タブの下の次のフィールドに入力します。
•
出版物名。すべての出版物の中で一意の名前を入力してください。
•
パブリッシュ。パブリケーションに含めるテーブルの横にあるチェックボックスをオンにします。または、さらに、[ワイルドカード選択の使用]ボタンをクリックして、パブリケーションテーブルの選択にワイルドカードパターンマッチングを使用します。
•
すべて選択。パブリケーションの[使用可能なテーブル]リストにすべてのテーブルを含める場合は、このボックスをオンにします。
•
ワイルドカード選択を使用します。このボタンをクリックして、ワイルドカードセレクターを使用してパブリケーションのテーブルを選択します。ワイルドカードセレクタの詳細については、セクション7.1を参照してください。
ステップ3(オプション): テーブルフィルターは、スナップショットまたは同期レプリケーション中にマスターノード間でレプリケートされる行の選択基準を制御するフィルタールールのセットで構成されます。
注:ログベースのレプリケーションシステムのテーブル設定要件、およびテーブルフィルターの使用に関する一般的な制限については、セクション2.2.12.3を参照してください。
フィルタルールは、 フィルタ名とSQLで構成されて句(省略さWHERE WHEREキーワード)を使用すると、レプリケーション中に含まれている行の選択基準を定義するテーブルに指定のフィルタ句を 、と呼ばれます。
次の例では、フィルタルールは上で定義されている dept表これだけ行deptnoカラムが含まれている10 、 20 、または30の複製に含まれています。他のすべての行はレプリケーションから除外されます。
以下は、 [テーブル/ビュー]ドロップダウンリストからedb.empを選択し、[フィルター]ダイアログボックスに10を含むdeptno行のみの選択基準を入力することにより、 empテーブルに追加されたルールを示しています。
このプロセスを繰り返して、 empテーブルに追加のフィルタールールを追加できます。以下に、 deptテーブルとempテーブルに定義されている使用可能なフィルタールールの完全なセットを示します。
注:現在パブリケーションを作成しているマスター定義ノードでテーブルフィルターを有効にするには、まずマスター定義ノードの役割を別のマスターノードに切り替え(セクション6.10を参照)、次にセクション6.9の指示に従う必要があります。テーブルフィルターを有効にします。
ステップ4(オプション):現在の競合解決オプションを変更または表示する場合は、[競合解決オプション]タブをクリックします。各テーブルについて、適切なボックスの上でマウスの主ボタンをクリックして、選択肢のドロップダウンリストを表示することにより、主な競合解決戦略とスタンバイ戦略を選択できます。
•
最も早いタイムスタンプ。最も早いタイムスタンプと競合する変更は受け入れられ、他のすべてのマスターノードに複製されます。その他の競合する変更はすべて破棄されます。
•
最新のタイムスタンプ。最新のタイムスタンプとの競合する変更は受け入れられ、他のすべてのマスターノードに複製されます。その他の競合する変更はすべて破棄されます。
•
ノードの優先順位。最も優先度の高いマスターノードで発生する競合する変更は受け入れられ、他のすべてのマスターノードに複製されます。その他の競合する変更はすべて破棄されます。
•
カスタム。更新/更新の競合は、PL / pgSQLカスタム競合処理プログラムで解決されます。
•
マニュアル。競合は未解決のままです。競合する変更は、元の各マスターノードに適用されたままですが、他のマスターノードには複製されません。適切な調整は、各マスターノードに手動で適用する必要があります。
手順5:更新/更新の競合が予想される場合は、競合が発生すると予想されるテーブルでREPLICA IDENTITYオプションをFULLに設定します。詳細については、セクション6.6.1を参照してください。
ステップ6: [作成]ボタンをクリックします。 Publication Created Successfullyが表示されたら、[OK]ボタンをクリックします。それ以外の場合は、エラーを調査し、必要な修正を行います。
手順1:マスター定義ノードのデータベースサーバーが実行され、クライアント接続を受け入れていることを確認します。
ステップ2:マスター定義ノードを含む同じPublication Serverノードの下でMMRタイプのノードを選択します。 [出版物]メニューの[出版物データベース]を選択し、[データベースの追加]を選択します。または、MMRタイプノードで2番目のマウスボタンをクリックし、データベースの追加を選択します。パブリケーションサービス-データベースの追加ダイアログボックスが表示されます。
ステップ3:次のフィールドに入力します。
•
データベースの種類。マスターノードにPostgreSQLまたはPostgres Plus Advanced Serverを選択します。 Advanced Server Oracle互換インストールの場合、Postgres Plus Advanced Serverオプションを選択します。 PostgreSQLまたはAdvanced Server PostgreSQL互換インストールの場合、PostgreSQLオプションを選択します。
•
ホスト。マスターノードが実行されているホストのIPアドレス。
•
港。マスターノードが接続を待機しているポート。
•
ユーザー。セクション6.1.4のステップ1で作成されたマスターノードのデータベースユーザー名。
•
パスワード。データベースユーザーのパスワード。
•
データベース。マスターノードのデータベース名を入力します。
•
URLオプション(SSL接続用)。 URLオプションを入力して、マスターノードへのSSL接続を確立します。 SSL接続の使用については、セクション7.11を参照してください。
•
変更セットのロギング(Postgresの場合)。この設定は、マスター定義ノードでの選択によって事前に決定されます(セクション6.2.2を参照)。テーブルトリガーは、同期レプリケーションのトリガーベースの方法用です。 WAL Streamは、同期レプリケーションのログベースの方法用です。トリガーベースの方法については、セクション2.2.9を参照してください。ログベースの方法については、セクション2.2.10を参照してください。
•
ノードの優先度。 1〜10の整数。ノードの優先度に基づいて競合を解決するためにこのマスターノードに割り当てられる優先度レベルです。最高の優先度は1で、最低の優先度は10です。競合解決戦略については、セクション6.6.4を参照してください。マスターノードが追加されるたびに、デフォルトの優先レベル番号が大きくなり、追加ノードごとに低い優先レベルが割り当てられます。
•
パブリケーションスキーマを複製します。マスター定義ノードから定義をコピーして、パブリケーションサーバーで新しいマスターノードにパブリケーションテーブル定義を作成する場合は、このボックスをオンにします。このチェックボックスをオンにしない場合、マスターノードにテーブル定義がすでに作成されていると想定されます。オフラインスナップショット手法を使用してこのマスターノードを作成している場合は、このボックスをオンにしないでください。オフラインスナップショットの使用については、セクション7.9を参照してください。
•
初期スナップショットを実行します。 [保存]ボタンをクリックしたときに、パブリケーションサーバーでマスター定義ノードからこのマスターノードへのスナップショットを実行する場合は、このボックスをオンにします。このボックスをチェックしない場合、マスターノード上のテーブルは、後でレプリケーションを実行するまでロードされません。オフラインスナップショット手法を使用してこのマスターノードを作成している場合は、テーブル行を既にロードしている必要があります。したがって、データをリロードする場合を除き、このボックスをオンにしないでください。オフラインスナップショットの使用については、セクション7.9を参照してください。
注:オフラインスナップショット手法(セクション7.9を参照)を使用する場合を除き、[初期スナップショットの実行]ボックスをオンにすることをお勧めします。最初のスナップショットレプリケーションは、オンデマンド(セクション6.5.2を参照)またはスケジュール(セクション7.2を参照)で同期レプリケーションを実行する前に、マスター定義ノードから他のすべてのマスターノードに実行する必要があります。新しく追加されたマスターノードで初期スナップショットが行われなかった場合、その後の同期レプリケーションでは、そのマスターノードへのトランザクションの適用に失敗する可能性があります。初期スナップショットは、オンデマンドスナップショットを実行して取得することもできます(セクション6.5.1を参照)。
ステップ4: [テスト]ボタンをクリックします。テスト結果:成功が表示されたら、[OK]ボタンをクリックします。
ステップ5(オプション):パブリケーションで使用可能なテーブルフィルターのセットを定義した場合、このマスターノードでこれらのフィルターを有効にするオプションがあります。テーブルフィルターの定義手順については、セクション6.2.3をご覧ください。このマスターノードに複製される行をフィルタリングしたくない場合は、手順6に進みます。
注:ログベースのレプリケーションシステムのテーブル設定要件、およびテーブルフィルターの使用に関する一般的な制限については、セクション2.2.12.3を参照してください。
次の例では、 dept_10_20_30 という名前のフィルターがdeptテーブルで有効になり、 dept_30という名前のフィルターがこのマスターノードのempテーブルで有効になります。
ステップ6: [保存]ボタンをクリックしたときに、パブリケーションサーバーでマスター定義ノードからこのマスターノードへのスナップショットを実行する場合は、[初期スナップショットの実行]ボックスをオンにします。このボックスをチェックしない場合、マスターノード上のテーブルは、後でレプリケーションを実行するまでロードされません。
マスター定義ノードとは異なり、ラベル MDNはレプリケーションツリーのノードの最後に表示されません。 [プロパティ]ウィンドウで[MDN]フィールドが[ Noに設定され、これがマスター定義ノードではないことを示します。
手順7:更新/更新の競合が予想される場合、競合が発生すると予想されるテーブルでREPLICA IDENTITYオプションをFULLに設定します。詳細については、セクション6.6.1を参照してください。
ステップ8(オプション):ユーザーがこのマスターノードにあるパブリケーションテーブルのデータにアクセスする場合、これらのテーブルにアクセスするために必要な特権を含む1つ以上の「グループ」ロールがあると便利です。トリガーベースの方法の場合、パブリケーションテーブルで挿入、更新、または削除を実行するユーザーに、コントロールスキーマオブジェクトに対する特権も付与する必要があります。ログベースの方法を使用する場合、ユーザーは特定の状況下でパブリケーションテーブルと特定のコントロールスキーマオブジェクトにアクセスする必要があります。
各マスターノードで作成された制御スキーマオブジェクトについては、 セクション 5.2.4を参照してください 。
手順1:スナップショットレプリケーションを実行するマスターノードの下のパブリケーションノードを選択します。
手順2:次のいずれかの方法で[スナップショット]ダイアログボックスを開きます。
ステップ3:スナップショットの出力をダイアログボックスに表示する場合にのみ、[詳細出力]チェックボックスをオンにします。スナップショットからの大量の出力が[スナップショット]ダイアログボックスからの応答を遅延させる可能性があるため、ネットワークアドレス変換(NAT)環境ではこのオプションをオフのままにしておく必要があります。 [スナップショット]ボタンをクリックして、スナップショットの複製を開始します。
ステップ4:スナップショットが成功した場合、「スナップショットの取得に成功しました」と表示されます。 OKボタンをクリックします。スナップショットが成功しなかった場合、[詳細出力]が選択されている場合は[スナップショット]ダイアログボックスウィンドウのメッセージをスクロールするか、ログファイルを確認します。
各スナップショットのステータスメッセージは、 mtk.log[.という名前のMigration Toolkitログファイルに保存されますmtk.log[.次のディレクトリのn ] (ログファイルのローテーションが有効な場合、 [. n ]はオプションの履歴ファイル数です):
POSTGRES_HOME \ .enterprisedb \ xdb \ x 。 x
POSTGRES_HOMEは、Windows postgresアカウント(Oracle互換構成モードでインストールされたAdvanced Serverのenterprisedbアカウント)のホームディレクトリです。 POSTGRES_HOMEの特定の場所は、Windowsのバージョンによって異なります。 xDB Replication Serverのバージョン番号はxで表され. x 。
注:マスター定義ノードからマルチマスター複製システム内の他のすべてのマスターノードへの初期スナップショット複製が実行されていることを確認してください。新しく追加されたマスターノードで初期スナップショットが行われなかった場合、その後の同期レプリケーションでは、そのマスターノードへのトランザクションの適用に失敗する可能性があります。最初のスナップショットは、マスターノードが最初に追加されたときに(セクション6.3を参照)、またはオンデマンドスナップショットを実行して(セクション6.5.1を参照)取得できます。
異なるノードでの変更により競合が発生する場合があります。セクション 6.6では、発生する可能性のある競合の種類と、その解決方法について説明します。
ステップ1:マスターノードの下のパブリケーションノードを選択します。選択されたマスターノードに関係なく、同期は複製システム内のすべてのマスターノードペアに適用されます。
手順2:次のいずれかの方法で[同期]ダイアログボックスを開きます。
手順3: [同期]ボタンをクリックして、同期レプリケーションを開始します。
ステップ4:同期が成功した場合、パブリケーションが正常に同期されたことが表示されます。 OKボタンをクリックします。同期が成功しなかった場合は、エラーメッセージが表示されます。
競合の解決では、発生する可能性のある競合の種類、競合に対処するための戦略、およびそのような競合を自動的に解決するために利用可能なオプションを扱います。
•
track_commit_timestamp。マスターノードを含むPostgres 9.5データベースサーバーでは、 track_commit_timestamp構成パラメーターを有効にする必要があります。 track_commit_timestampパラメーターはpostgresql.confファイルにあります。 track_commit_timestampが有効になっていない場合、競合するトランザクションの最も早いタイムスタンプを使用するなどして、更新/更新の競合は自動的に解決されません。その結果、これらの競合するトランザクションは保留状態のままになります。更新/更新の競合が自動的に解決される方法の例については、セクション6.6.7を参照してください。
•
REPLICA IDENTITY FULL。特定のパブリケーションテーブルで更新/更新の競合が発生することが予想される場合、すべてのマスターノードでテーブルのREPLICA IDENTITY設定をFULLに設定する必要があります。更新トランザクションが別々のマスターノードで発生するが、同じ行の異なる列を更新する場合は、更新/更新の競合とは見なされません。ただし、 REPLICA IDENTITYがFULLに設定されていない場合、このケースは更新/更新の競合として記録されます。
REPLICA IDENTITYオプションがに設定されているFULL使用してALTER TABLE以下で示すようにコマンドを:
ALTER TABLE schema 。 table_name REPLICA IDENTITY FULL
以下は、 ALTER TABLEコマンドの例です 。
REPLICA IDENTITY設定は、使用してPSQLユーティリティで表示することができます\d+コマンドを:
注:競合解決の要件に加えて、xDB Replication Serverの他の理由により、パブリケーションテーブルでREPLICA IDENTITY FULL設定が必要になる場合があります。追加の要件については、セクション2.2.12.3を参照してください。
•
一意性の競合。 2つ以上のマスターノードで挿入トランザクションのプライマリキーまたは一意の列に同じ値が使用されると、一意性の競合が発生します。これは、 挿入/挿入の競合とも呼ばれます。
•
更新の競合。更新トランザクションは、2つ以上のマスターノードの同じ行の列値を変更します。たとえば、従業員の住所列はマスターノードAで更新され、別のユーザーはマスターノードBで同じ従業員の住所列を更新します。各ノードでトランザクションが発生するタイムスタンプは異なる場合がありますが、両方のトランザクションは同期がまだ行われていない時間間隔。したがって、同期が行われると、競合する両方のトランザクションが適用されます。これは、 更新/更新の競合とも呼ばれます。
•
競合を削除します。行はターゲットノードで既に削除されているため、ソースノードの更新トランザクションに対応する行はターゲットノードで見つかりません。これは、 更新/削除の競合と呼ばれます。逆に、ソースノードに削除トランザクションがあり、ターゲットノードの同じ行に更新トランザクションがある場合、このケースは削除/更新の競合と呼ばれます。最後に、ソースノードの削除トランザクションに対応する行がターゲットノードで見つからない場合、その行はターゲットノードで既に削除されているため、 削除/削除の競合と呼ばれます。
Node A: INSERT INTO addrbook (name, address) VALUES ('A', 'ADDR A');
Node A: INSERT INTO addrbook (name, address) VALUES ('B', 'ADDR B');
Node B: INSERT INTO addrbook (name, address) VALUES ('C', 'ADDR C');
id = 1, name = 'C', address = 'ADDR C'
Node A: UPDATE addrbook SET address = 'ADDR B1' WHERE id = 2;
id = 2, address = 'ADDR B1'
Node B: UPDATE addrbook SET address = 'ADDR B2' WHERE id = 2;
id = 2, address = 'ADDR B2'
Node A: UPDATE addrbook SET address = 'ADDR B1' WHERE id = 2;
id = 2, address = 'ADDR B1'
Node B: DELETE FROM addrbook WHERE id = 2;
id = 2 Row with deleted
id = 2 The row with is already deleted on target Node B, hence update from Node A fails.
•
競合が検出されない場合、トランザクションの変更はターゲットマスターノードに複製され、そのターゲットノードのトランザクションステータスは、ソースマスターノードコントロールスキーマで完了 としてマークされます。各ターゲットマスターノードのトランザクションステータスマッピングは、すべてのマスターノードで維持されます。たとえば、ノードAにはステータスの2つのマッピングが含まれています。1つはノードB、もう1つはノードCです。
•
最も早いタイムスタンプ。最も早いタイムスタンプオプションを選択すると、ソースおよびターゲットマスターノードからの更新の競合に関連する関連行が、特定のノードで更新が発生したときのタイムスタンプに基づいて比較されます。最も早く発生した行の変更が適用されます。後のタイムスタンプを持つ行の変更は破棄されます。
•
最新のタイムスタンプ。最新のタイムスタンプによる行の変更が受け入れられることを除いて、最も早いタイムスタンプと同じアプローチ。以前のタイムスタンプを持つ行の変更は破棄されます。
•
ノードの優先順位。ノードの優先度が最も高いマスターノードの行の変更が適用され、優先度の低いマスターノードの変更は破棄されます。ノードの優先度レベルは、1〜10の範囲の整数です。1が最高の優先度レベルで、10が最低の優先度レベルです。
•
カスタム。カスタム競合処理は、更新/更新の競合にのみ適用されます。更新/更新の競合から生じる競合を解決するには、PL / pgSQLプログラムを提供する必要があります。カスタム競合処理の使用については、セクション6.6.8を参照してください。
•
ノード固有のシーケンス範囲。シーケンス範囲は、各マスターノード用に予約されています。たとえば、マスターノードAにはMINVALUE = 1およびMAXVALUE = 1000 、マスターノードBにはMINVALUE = 1001およびMAXVALUE = 2000などがあり、他のノードについても同様です。これにより、すべてのマスターノードにわたって一意のIDが常に生成されます。
•
開始値の変動。各ノードには異なる開始値が割り当てられます。たとえば、マスターノードAのSTART値は1、ノードBの値は2、ノードCの値は3です。ノード数以上の増分により、 表6‑4に示すように一意のIDが保証されます。
•
共通のシーケンス。すべてのノードは共通のシーケンスオブジェクトを共有しますが、これには各ID生成に関連するネットワークラウンドトリップのためにトランザクション処理が遅くなるという大きな欠点があります。
•
MMR対応シーケンス。これは、シーケンスの使用を強化する手法であり、マルチマスターレプリケーションシステムに固有の分散マルチデータベースアーキテクチャにより柔軟で信頼性の高いアプローチを提供します。このアプローチは、前述のシーケンス手法よりも推奨されます。 MMR対応シーケンスについては、セクション6.6.6を参照してください。
マルチマスターレプリケーションシステムで一意性の競合を防ぐために、 MMR対応シーケンスを使用して、固有の一意の識別子を持たないパブリケーションテーブルの各行に一意の識別子を生成できます。
MMR対応シーケンスには、 BIGINTデータ型、整数値を返す関数とシーケンスが組み込まれています。これらの値は、各マスターノードにユーザーが割り当てた一意のデータベース識別子と、そのマスターノード内で生成されたシーケンスを組み合わせます。
MMR対応シーケンスを必要とするパブリケーションテーブルは、関数によって返されるデフォルト値を持つBIGINT NOT NULL列を含めるように変更できます 。
•
一意性。一意のデータベース識別子とシーケンスの組み合わせにより、特定のテーブルの各行がすべてのマスターノードで一意の値を持つようになります。
•
クラスター化インデックスのサポート。 MMR対応シーケンスは、検索効率を提供するクラスター化インデックスの使用を損なわない。 MMR対応のシーケンス値は、Universally Unique Identifier(UUID)が使用された場合などのランダムな値としてではなく、典型的な順序付けられたシーケンスで返されます。
•
効果的な移行サポート。シーケンスをすでに利用しているテーブルは、既存の主キーと外部キーへの影響を最小限に抑えながら、MMR対応のシーケンスを使用するように変更できます。
•
信頼性と保守性。要約すると、MMR対応シーケンスは、一意性の競合を回避するための信頼性が高く保守可能な方法を提供します。
手順1:一意のデータベース識別子を1〜1024の整数として割り当てます。したがって、MMR対応シーケンスを備えたマルチマスター複製システムでは、最大1024個のデータベースを一意に識別できます。
ALTER DATABASE dbname SET cluster.unique_db_id TO db_id ;
cluster.unique_db_idを db_idます。
データベースごとに異なる db_id値を使用します。
手順2:データベース内の各テーブル行を一意に識別するシーケンスを作成します。
CREATE SEQUENCE seq_name 1サイクルseq_name 1 seq_nameます。
MMR対応シーケンスを使用するパブリケーションテーブル列には 、関数呼び出しでシーケンス名を参照する DEFAULT句が含まれます。パブリケーションテーブル定義は、関数呼び出しで同じシーケンス名を参照することにより、すべてのマスターノードで一貫している必要があります。
手順3:行がテーブルに挿入されたときに次のMMR対応シーケンス値を返す次の関数を作成します。この関数は、パブリケーションテーブル列のDEFAULT句によって参照されます。
)
ステップ2で作成されたシーケンス名は 、関数がパブリケーションテーブル列のDEFAULT句に追加されるときに、 seq_id入力引数として指定されます。
この関数は 、データベース識別子( cluster.unique_db_id )に対してビット単位の左シフト操作( << 52 )を実行するため、数値が大幅に増加します。次に、次のシーケンス値がこの番号に追加されます。したがって、特定のデータベースのテーブルに挿入されたすべての行は、シフトされたデータベース識別子の値によって決定される数値範囲内に収まります。
ステップ4(オプション):次の関数を作成して、現在のMMR対応シーケンス値を取得します。
)
mmr_sequence_nextval機能を呼び出す前に、現在のセッションで起動する必要がありますmmr_sequence_currval機能を。
ステップ5: MMR対応シーケンスを使用するパブリケーションテーブル列を追加または変更します。列のデータ型はBIGINT必要があります。 mmr_sequence_nextval関数は、列id次の例に示すように、 DEFAULT句で指定されます。
CREATE TABLE table_name (
手順6:マスターノードとして追加する他のデータベースに対して手順1〜4を繰り返します。
手順7:第6章の説明に従って、完全なマルチマスターレプリケーションシステムを作成します。
以下は、MMR対応シーケンスを使用した3マスターノードシステムの例です。マスターノードとして使用されるデータベースは、 mmrnode_a 、 mmrnode_b 、およびmmrnode_cです。 mmr_seq_tblという名前のパブリケーションテーブルは、MMR対応シーケンスを使用します。
次のコマンドは 、マスター定義ノードになるデータベース mmrnode_aで呼び出されます 。
上 mmrnode_bとmmrnode_c 、設定パラメータごとに異なる設定を作成するためのコマンドcluster.unique_db_idシーケンスと関数を作成するためのコマンドと同様に実行されています。
上 mmrnode_b次のコマンドが呼び出されます。 cluster.unique_db_idが2設定されていることに注意してください。
上 mmrnode_c次のコマンドが呼び出されます。 cluster.unique_db_idが3設定されていることに注意してください。
mmrnode_a 次の INSERTコマンドが呼び出されmmrnode_a 。
mmrnode_b 次の INSERTコマンドが呼び出されmmrnode_b 。
mmrnode_c 次の INSERTコマンドが呼び出されmmrnode_c 。
mmrnode_a次の結果に示されているように、 id主キー列に一意の値が生成されるため、一意性の競合は発生しません 。
mmrnode_b 同じクエリを実行すると、同じ行セットが表示されます。
同じ結果が mmrnode_c 存在し mmrnode_c 。
SERIALデータ型などの標準シーケンスを使用するテーブルを持つ既存のアプリケーションがある場合 、これらのテーブルを変更して、MMR対応シーケンスを使用してマルチマスター複製システムに組み込むことができます。
•
列定義を変更して、 DEFAULT句の変更または追加を含むMMR対応シーケンスとの互換性を確保し、MMR対応シーケンス機能を使用して後続の挿入にデフォルト値を提供します。
)
関数の入力引数と戻り引数はデータ型 BIGINTため、関数を使用する前に既存のシーケンス列を適宜変更する必要があります。
最後に、今後の挿入のためにMMR対応シーケンス値を提供するために、シーケンス列に BIGINT NOT NULL DEFAULT mmr_sequence_nextval(' seq_name ') 句を含める必要があります 。
MMR対応シーケンスに必要なオブジェクトの作成については、セクション 6.6.6.1を参照してください 。
列 mmr_seq_child_tbl.parent_idとmmr_seq_tbl.id 間の外部キー制約に注意してください 。
列 mmr_seq_tbl.id 、 mmr_seq_child_tbl.id 、およびmmr_seq_child_tbl.parent_idの既存のシーケンス値を変換するには 、次の手順を実行します。
MMR対応シーケンスに十分な大きさになるように、シーケンス列をデータ型 BIGINT 変更します 。
mmr_sequence_convert関数を使用して、主キーと外部キーの値を mmr_sequence_convertます。
列 mmr_seq_child_tbl.parent_idとmmr_seq_tbl.id 間の親子外部キーの関係は維持されます。
主キー id値には古いシーケンス値が組み込まれていますが、52ビットシフトされたデータベース識別子値の追加により増加しています。
これで、 6.6.6.1 項で説明した手順が、マスターノードとして使用されるデータベースで実行されます。
変換されたテーブルを含むデータベース mmrnode_a場合、既存の行との主キーの一意性の競合を回避するために、開始値7で新しいシーケンスが作成されます。元のテーブルでは、最大使用シーケンス値は6でした。
マルチマスターレプリケーションシステムは 、セクション6.6.6.2で説明されているのと同様の方法で、 データベース mmrnode_a 、 mmrnode_b 、およびmmrnode_c を使用して作成されます 。
初期スナップショットでシステムが作成された後、 mmrnode_a 、 mmrnode_b 、およびmmrnode_cすべて同一のコンテンツが含まれます。表の内容は次のとおりです。
次の行が mmrnode_a 挿入され mmrnode_a 。
次の行が mmrnode_b 挿入され mmrnode_b 。
次の行が mmrnode_c 挿入され mmrnode_c 。
同期後の mmrnode_a 内容 :
同期後の mmrnode_b 内容 :
同期後の mmrnode_c 内容 :
Node A: UPDATE addrbook SET address = 'ADDR A' WHERE id = 2;
Node C: UPDATE addrbook SET address = 'ADDR C' WHERE id = 2;
Synchronization pushes Node A changes to Node C. Current address on Node C <> old value on Node A ( 'ADDR C' <> 'ADDR' ) hence conflict detected. Latest change on Node C accepted and Node A change discarded.
たとえば、 deptテーブルの次の行を考えます。
最初に、マスター定義ノードで次の UPDATEステートメントが指定されます。
列dname の元の値 OPERATIONSは、 UPDATEステートメントで変更される値と同じであることに注意してください。
次に 、2番目のマスターノードで次の UPDATEステートメントが指定されます。
ただし、 2番目のマスターノードの列 dname の値は LOGISTICS設定されたままです。競合する列で通常予想されるように、マスター定義ノードから値OPERATIONSに戻されませんでした。予想どおり、 loc列の値はCAMBRIDGEからBEDFORDマスター定義ノード値に戻されることに注意してください。
同じ同期で複数のマスターノードで更新された列は、 競合 する列と見なされます。競合する更新トランザクションで列の新しい更新された値が同一であっても、同じ列が複数のマスターノードで更新されたという事実により、競合する列になります。
•
列はソースノードに設定されます。関数のresolution_codeパラメーターが1値に設定されている場合、競合する両方のノードのすべての列の結果の設定は、レプリケーションのソースノードから取得されます。
•
列はターゲットノードに設定されます。関数のresolution_codeパラメータの値が2設定されている場合、競合する両方のノードのすべての列の結果の設定は、レプリケーションのターゲットノードから取得されます。
•
関数ロジックは列を設定します。関数のresolution_codeパラメーターが値3設定されている場合、最初の競合する列の結果の設定は、関数ロジック内でコーディングされたsourceパラメーターで返された値から取得されます。他のすべての列値の結果の設定は、レプリケーションのソースノードから取得されます。
マルチマスター複製システムが同期複製のログベースの方法で構成されている場合、 INOUT sourceおよびIN targetパラメータのシャドウテーブルは 、次のように実際のパブリケーションテーブルに置き換えられます:
競合を解決するマスター定義ノードのスキーマ_edb_replicator_pub内のシャドウテーブルのレコードタイプのINOUTパラメーター。同期レプリケーションのログベースの方法を使用する場合は、シャドウテーブルではなく実際のパブリケーションテーブルを指定します。入力値は、ソースノードからの列値です。 resolution_codeの値が3に設定されている場合、このパラメーターの列を最終結果に使用される値に設定します。
競合を解決するマスター定義ノードのスキーマ_edb_replicator_pub内のシャドウテーブルのレコードタイプのINパラメーター。同期レプリケーションのログベースの方法を使用する場合は、シャドウテーブルではなく実際のパブリケーションテーブルを指定します。入力値は、ターゲットノードからの列値です。
更新/更新の競合が発生した列の名前を含む、タイプVARCHAR(255) INパラメーター。複数の列が競合に関係している場合、最初の競合する列の名前が返されます。
パブリケーションサーバーのログファイルに書き込まれる情報メッセージを含む、タイプVARCHAR(255) OUTパラメーター。メッセージをパブリケーションサーバーのログファイルに表示するには、パブリケーションサーバーの構成オプションlogging.levelを少なくともINFOレベルに設定する必要があります。パブリケーションサーバーのログファイルの場所については、セクション3.5を参照してください。
競合の解決方法を決定するために次の値のいずれかに設定する、タイプINTEGER OUTパラメーター: 1は最終結果にレプリケーションのソースノードの列値を使用し、 2はターゲットノードの列値を使用します最終結果のレプリケーションの3 、または最初の競合する列のsource INOUTパラメーターに設定された値をその列の最終結果として使用する場合は3
ステップ1:マスター定義ノードに機能を追加する前に、マスター定義ノードの下にパブリケーションが存在する必要があります。パブリケーションの作成については、セクション6.2.3を参照してください。
ステップ2:関数をマスター定義ノードに追加します。次の例は、PSQLを使用した関数の追加を示しています。
手順3:次のいずれかの方法で[競合解決オプション]タブを開きます。
ステップ4:カスタム競合処理を使用するテーブルで、適切なドロップダウンリストから[カスタム]を選択します。 [カスタムハンドラー]テキストボックスに、 CREATE FUNCTIONステートメントで使用されるスキーマと関数名を入力します。
手順5: [更新]ボタンをクリックし、[競合解決オプションが正常に更新されました]確認メッセージへの応答として[OK]をクリックします。
注:マルチマスター複製システムがカスタム競合処理を使用し、その後マスター定義ノードの役割を別のマスターノードに切り替える場合、新しいマスター定義ノードに機能を再追加する必要があります。つまり、新しいマスター定義ノードで手順2を繰り返す必要があります。
注:マルチマスターレプリケーションシステムを削除する場合は、パブリケーションを削除する前に、マスター定義ノードからすべてのカスタム競合処理機能を削除する必要があります。
次の例は、セクション6.6.8.1に示すcustom_conflict_dept という名前のカスタム競合処理関数を使用したカスタム競合処理の効果を示しています 。この関数は、 deptテーブルでの更新/更新の競合の勝者としてターゲットノードを設定します。
ソースマスターノードでは 、部門50 loc列のUPDATEステートメントで設定された値が失われます。列は、ターゲットマスターノードからの値にリセットされます。
ターゲットマスターノードでは 、部門50 loc列はそのUPDATEステートメントから設定された値を保持します。
ターゲットノードは、カスタム競合処理関数でresolution_codeパラメーターの値を2に設定することで決定される競合に勝ちます。
次の例は、セクション6.6.8.1に示すcustom_conflict_emp という名前のカスタム競合処理関数を使用したカスタム競合処理の効果を示しています 。この関数は、関数でコード化された値を、 empテーブルでの更新/更新の競合の勝者として設定します。
以下は 、更新前の empテーブルの行です。
同期複製後、マスターノード edbには、競合する行について次の値が含まれます。
同期複製後、マスターノード mmrnodeには、競合する行について次の値が含まれます。
注:このカスタム競合処理関数は、実際のパブリケーションテーブルではなくシャドウテーブルの列である列(この例ではrrep_old_quantity )を使用するため、この特定のソリューションは、ログベースの同期方法を使用したパブリケーションには使用できませんレプリケーション。
次の例では、マスター定義ノード edbと2番目のマスターノードmmrnodeます。最初は、インベントリテーブルの内容は両方のマスターノードで同じです。
更新トランザクションの場合、シャドー表には、更新がパブリケーション表で行われる前の列値( rrep_old_ column_name という名前の列 )および更新が適用された後の値(パブリケーション表の列名と同じ名前の列)が含まれます。
カスタム競合処理関数は 、以下に示すように、ソースおよびターゲットシャドウテーブルの quantity列の現在の値と古い値の両方を使用します。
マスター定義ノードで item_idが1 2つのアイテムを購入するとします。
また、 item_idが1 つのアイテムが 2番目のマスターノードから購入されると仮定します。
同期複製とカスタム競合処理関数の呼び出しの後、両方のマスターノードでitem_id 1 quantity列が正しく47に設定されます。
注:このセクションの手動の競合解決の説明は、同期レプリケーションのトリガーベースの方法で構成されたマルチマスターレプリケーションシステムにのみ適用されます。ログベースの同期レプリケーション方式で構成されたマルチマスターレプリケーションシステムの手動の競合解決については、セクション6.6.10を参照してください。
セクション 6.6.5で説明したように 、一意性(挿入/挿入)の競合に対する組み込みの自動競合解決戦略はありません。一意性の競合が発生した場合は、競合を含むパブリケーションテーブルの行を変更し、マスターノードのコントロールスキーマテーブルの行を変更して競合を解決する必要があります。
•
競合を見つける。未解決の競合を見つける
•
紛争解決の準備。手動の競合解決プロセスを支援する便利なセットアップ手順
•
修正戦略の概要。修正を実行するために使用できる方法の概要
•
マニュアル公開表の修正。出版物テーブルの手動修正
•
新しいトランザクションを使用した修正。新しいトランザクションを使用して、すべてのマスターノードを一貫した状態にする
•
シャドウテーブルトランザクションを使用した修正。既存のシャドウテーブルトランザクションを使用して、すべてのマスターノードを一貫した状態にする
セクション 6.7で 説明されている[競合履歴]タブを使用して競合を見つけることができます 。以下は、[競合履歴]タブの例です。 [更新]ボタンをクリックして、最新の競合をすべて表示します。
パブリケーションテーブルの行を変更するセッション中に、パブリケーションテーブルのトリガーが起動しないようにするには、データベースサーバー構成パラメーター session_replication_roleの値をreplica設定する必要があります。 ( session_replication_roleのデフォルト設定はoriginです。この場合、トリガーが起動します。)
replica設定を確実に有効にするための推奨方法は、このパラメーターのreplicaデフォルトセッション設定でデータベースユーザーを作成することです。このデータベースユーザーを使用してデータベースに接続すると、このセッション中にreplica設定が有効になります。
次のデータベース例では、この目的でスーパーユーザー mmrmaintが作成および変更されています。
「競合履歴」タブおよび 6.6.9.1 項で説明されているSQL問合せは、初期競合の原因を特定するのに役立ちます。
したがって、競合が発生したことを発見したら、パブリケーションサーバーを停止することを強くお勧めします。セクション5.2.1のステップ1で説明されているLinuxスクリプトまたはWindowsサービスのstopオプションを使用します。
•
パブリケーションテーブルでどのトランザクションが発生し、最初の競合の後にシャドウテーブルに記録されるか、およびこれらのトランザクションがすべてのマスターノードのパブリケーションテーブルに完全かつ正しく適用されたかどうか。これらのトランザクションは、保留中としてマークされない場合があります。代わりに、 rrep_tx_conflict_status列をnullに設定できます。これは、レプリケーション中に特定の競合が検出されなかったこと、またはトランザクションがまだレプリケートされていないことを意味します。これらのトランザクションは、初期競合の原因となっているトランザクションよりもrrep_tx_timestamp値が遅いため、識別できます。
手順1:すべてのマスターノードのパブリケーションテーブルの行に必要な手動修正を加えて、各パブリケーションテーブルがマスターノード全体で同じ行の同じセットを持つように、それらを初期の一貫した状態にします。これは、競合を完全に解決するための最も簡単な措置と判断した内容によっては、競合するトランザクションが発生する前の状態になる場合があります。
ステップ2:トランザクションを(アプリケーションまたはシャドウテーブルから)適用または再適用して、シャドウテーブルに記録されたものの期待される期待される結果に従って、すべてのマスターノードのすべてのパブリケーションテーブルが一貫して更新されるようにします。
手順3:シャドウテーブルで、競合するエントリの特定のインジケータを更新して、手順2で解決されたことを示します。
手順4:コントロールスキーマで、競合するエントリの特定のインジケーターを更新して、これらの競合が解決されたことを示します。この更新により、[競合履歴]タブでこれらのエントリの解決ステータスが[ Resolved ]に変更されます。これらのエントリは、 6.6.9.1項で説明されているSQL問合せには表示されなくなります。
コントローラデータベースの制御スキーマに手順4の更新を実行します。現在指定されているコントローラーデータベースは、xDBレプリケーション構成ファイルの内容から決定できます(セクション 2.3.1.3を 参照 )。パブリケーションサーバーは、コントローラーデータベースで行われたコントロールスキーマの変更がすべてのパブリケーションデータベースのコントロールスキーマに確実に複製され、すべてのパブリケーションデータベース間でメタデータの一貫性を維持します。
ステップ5:複製システムの操作を再開します。パブリケーションサーバーを起動し、レプリケーションスケジュールを使用している場合は再作成します。
•
マニュアル公開表の修正。 PSQLやpgAdmin(Advanced ServerのPostgres Enterprise Manager Client)などのユーティリティを使用して、これらの変更を複製せずに、すべてのマスターノードのパブリケーションテーブルの行を手動で修正します。この目的のために、 session_replication_roleをreplicaに設定したデータベースユーザーを使用します。
•
新しいトランザクションを使用した修正。 1つのマスターノードでアプリケーションを再実行して、他のすべてのマスターノードに複製できる新しいトランザクションを作成します。すべてのパブリケーションテーブルがすべてのマスターノードで一貫した状態にあることを確認してから、このメソッドを使用します。
•
シャドウテーブルトランザクションを使用した修正。シャドウテーブルに既に記録されているトランザクションの同期を強制します。適用する必要があるシャドウテーブルトランザクションが多数あり、アプリケーションからトランザクションを再発行するよりも、これらのトランザクションの同期を強制する方が簡単な場合は、この方法を使用します。
•
3ノードのマルチマスター複製システムが確立されました。マスターノード名は mmrnode_a (マスター定義ノードおよびコントローラーデータベース)、 mmrnode_b 、およびmmrnode_cです。
•
パブリケーションの名前は emp_pub 、このドキュメント全体で例として使用されているdeptおよびempテーブルを使用します。
•
最初の2つの競合解決方法を説明するために使用される競合は 、以下に示すINSERTステートメントの結果として、値50主キー列deptno deptテーブルで発生する一意性競合です。
で mmrnode_a 、次のステートメントが実行されます。
で mmrnode_b 、次のステートメントが実行されます。
•
マスターノード mmrnode_aおよびmmrnode_bそれぞれ主キー値50行が含まれていますが、行内の他の列の値は異なります。
•
マスターノード mmrnode_cは、プライマリキー値50行がありません。
deptテーブルの正しい状態が mmrnode_b 状態であると仮定すると 、次のオプションを使用してすべてのマスターノードの状態を修正できます。
•
mmrnode_aおよびmmrnode_c deptテーブルを手動で修正します。つまり、 mmrnode_aの行を更新して正しい値にし、欠落している行をmmrnode_c挿入しmmrnode_c 。すべてのノードのdeptテーブルは、一貫性があり最新の状態になりました。
•
mmrnode_aとmmrnode_b両方で、 主キー値 50 行をテーブルから手動で削除します。これにより、すべてのマスターノードのdeptテーブルが以前の一貫した状態に戻ります。次に、マルチマスターレプリケーションシステムを実行した状態で、いずれかのマスターノードで正しい列値を使用して挿入トランザクションを再度実行します。
•
mmrnode_aの表から、 主キー値 50 の誤った行を手動で削除しmmrnode_a 。 mmrnode_bのテーブルに正しい行を残します。これは、 mmrnode_bで正しいトランザクションが実行された状態をシミュレートしますが、シャドウテーブルに記録されますが、まだ複製されておらず、誤ったトランザクションがmmrnode_a実行されたことはありません。 mmrnode_aシャドウテーブルエントリを更新して、破棄されることを示し、今後の同期に含まれないようにします。 mmrnode_bシャドウテーブルエントリのメタデータを更新して、次の同期に含めるようにします。 mmrnode_b受け入れられたシャドウテーブルエントリがmmrnode_aおよびmmrnode_c複製されるように、同期レプリケーションを実行します。
ステップ1: session_replication_roleがreplica設定されたパブリケーション表の行を手動で修正します。
上 mmrnode_a 、誤った行を修正:
で mmrnode_c 、欠落している行を挿入します。
mmrnode_aおよびmmrnode_c の deptテーブルは、 mmrnode_aテーブルの内容と一致するようにmmrnode_b 。
手順2:マスターノード内の競合するトランザクションのシャドウテーブルエントリを更新して、競合が解決されたことを示します。
シャドウテーブルは、スキーマ _edb_replicator_pub 各マスターノードにあります 。シャドウテーブルは、命名規則に従うrrst_ schema _ table schema出版テーブルと含むスキーマの名前でtable掲載テーブルの名前です。
•
シャドウテーブルの行は 、他のマスターノードの対応するパブリケーションテーブルに適用されるINSERT 、 UPDATE 、またはDELETEステートメントに対応します。シャドウテーブルの行は、ユーザーアプリケーションによって発行されたSQLステートメントに必ずしも対応していません。たとえば、より大きいまたはより小さいなどの範囲を使用するWHERE句を含むユーザーアプリケーションによって発行されたSQLステートメントは、アプリケーションのSQLステートメントの結果セットの各行のシャドウテーブルに複数の個別のエントリをもたらします。 。
•
シャドー表の主キーは、列 rrep_sync_id 正の整数が生成されたプログラム rrep_sync_id 。 rrep_sync_id値は、特定のマスターノード内のすべてのシャドウテーブル間で一意です。したがって、競合するトランザクションのrrep_sync_id値は、各マスターノードのシャドウテーブルに記録された以前のトランザクションの数に依存するため、マスターノード間で同じ値を持つ場合と持たない場合があります。
•
まだ解決されていない競合に関係するトランザクションのシャドウテーブルエントリには 、列rrep_tx_conflict_status に P (保留)の値が含まれています 。トランザクションが競合に関与していない場合、この列はnullに設定されます。 (シャドウテーブルエントリの大部分のこの列にはnullが必要です。)パブリケーションサーバーによって自動的に解決される競合にトランザクションが関与し、このトランザクションが正しいものとして受け入れられた場合、この列にはC (complete / accepted )。トランザクションが自動的に解決された競合に関与しており、このトランザクションが正しくないと見なされた場合、この列にはD (破棄)が含まれます。
次のクエリは 、前の出力のRECORD 1フィールドsrc_rrep_sync_idから取得したrrep_sync_id値2でmmrnode_a の deptテーブルのシャドウテーブルで実行されます。
同様のクエリは 、 RECORD 2フィールドsrc_rep_sync_id :から取得したキー値をクエリすることにより、 mmrnode_b 保留中のシャドウテーブルエントリを見つけることができます 。
注:保留中のトランザクションが見落とされないようにするには、競合に関係している可能性のあるすべてのマスターノードのシャドウテーブルを調べ、 rrep_tx_conflict_statusがP設定されているエントリを検索する必要があります。
以下は、 Postgres Enterprise ManagerクライアントでP (保留中)とマークされた rrep_tx_conflict_status列を示して rrep_tx_conflict_statusます。
値をD (破棄)に変更して列 rrep_tx_conflict_statusを変更し、保留中の競合が解決されたことを示します。 Dの値は、シャドウテーブルエントリが将来の同期レプリケーション中にレプリケートされないことも保証します。
mmrnode_aとmmrnode_b 両方のシャドウテーブルにこの変更を mmrnode_bます。
次のようなSQLステートメントを使用して更新を実行する場合は、正しい rrep_sync_id値で行を修飾してください 。
mmrnode_cにはシャドーテーブルエントリがありません。これは 、アプリケーションによってマスターノードで挿入トランザクションが実行されなかったためです。
手順3:現在コントローラーデータベースとして指定されているパブリケーションデータベースのコントロールスキーマで、 xdb_conflictsテーブルのエントリを変更して、競合が解決されたことを示します。テーブルxdb_conflictsは、スキーマ_edb_replicator_pubにあります。
注意:テーブルxdb_conflictsのエントリは、セクション6.6.9.1で説明されている[競合履歴]タブとSQLクエリに表示されるデータにのみ影響します。 xdb_conflictsエントリを変更しても、将来のレプリケーション操作には影響しませんが、過去の競合がどのように解決されたかを記録する方法を提供します。
xdb_conflictsテーブルに関する次の点に注意してください。
•
xdb_conflictsテーブルの行は、 [競合履歴]タブのエントリとして表示されます。
•
xdb_conflictsテーブルの主キーは、列src_db_id 、 target_db_id 、 src_rrep_sync_id 、およびtarget_rrep_sync_idます。列src_db_idは、 target_db_id識別されるマスターノードに複製されたときに競合が発生するトランザクションが発生したマスターノードの一意の識別子が含まれます。 src_rrep_sync_idは、競合に関係するソースマスターノード上のトランザクションのシャドウテーブル識別子ですtarget_rrep_sync_idは、競合に関係するターゲットマスターノード上のトランザクションのシャドウテーブル識別子です。 注:一意性(挿入/挿入)の競合の場合、 target_rrep_sync_id値は常に0設定され0 。特定の一意性の競合について、 xdb_conflictsテーブルには2つのエントリがあります。 2つのエントリのそれぞれのsrc_rrep_sync_id値は、シャドウテーブル識別子に対応します。1つはソースマスターノードに関連付けられたシャドウテーブル識別子、もう1つはターゲットマスターノードに関連付けられたシャドウテーブル識別子です。
•
コントロールスキーマのテーブル xdb_pub_databaseは、データベース識別子src_db_idおよびtarget_db_idを、データベース名、IPアドレス、ポートなどのマスターノード属性に関連付けます。
•
列 table_idは、競合が発生したパブリケーションテーブルの識別子です。 table_id値とその名前、スキーマ、シャドウテーブルなどのパブリケーションテーブル属性との関連付けは、 _edb_replicator_pub.rrep_tables各マスターノードに_edb_replicator_pub.rrep_tablesます。
•
一意性(挿入/挿入)競合のみの場合、列 pk_valueは、競合の原因となった主キー値を示すテキストが含まれます。テキストはcolumn_name = valueとしてフォーマットされvalue 。主キーが2つ以上の列で構成されている場合、各列と値のペアは、 column_1 = value_1 AND column_2 = value_2などのキーワードAND区切られvalue_2 。これにより、 table_idで指定されたパブリケーションテーブルの行の主キーが提供され、競合が発生しました。 注:一意性(挿入/挿入)の競合のみが、 pk_value列にcolumn_name = valueテキストをpk_valueます。他のすべての競合タイプ(つまり、更新/更新、削除/更新、更新/削除、および削除/削除の競合)の場合、 pk_value列はヌルです。
•
列 resolution_statusは、競合のステータスを示します。可能な値は、 P (保留)またはC (完了-競合が解決されました)です。このステータスは、[競合履歴]タブの[解決ステータス]列に表示されます。
•
列 win_db_idを使用して、「勝った」(受け入れられた)トランザクションを含むマスターノードのデータベース識別子を記録できます。この情報は、「競合履歴」タブの「DBの獲得」列に表示されます。
•
列 win_rrep_sync_idを使用して、勝ち取ったトランザクションのシャドウテーブル識別子を記録できます。
以下からの同期の競合エントリ mmrnode_aにmmrnode_bに配置することができるxdb_conflictsこの例について、次のクエリを持ちます。
以下からの同期の競合エントリ mmrnode_bにmmrnode_aに配置することができるxdb_conflictsこの例について、次のクエリを持ちます。
列 resolution_status の値を P (保留)からC (完了)に変更して、この競合が解決されたことを示します。 winning_db_idの値は4に変更され、マスターノードmmrnode_bに勝ったトランザクションが含まれていることを示します。値winning_rrep_sync_idの値に変更さrrep_sync_idにおけるトランザクションのシャドウ・テーブル・エントリのmmrnode_bこれは一方が正しいと見なされるからです。
このアップデートを実行するには、SQL文 mmrnode_aにmmrnode_b同期の競合は以下の通りであります:
このアップデートを実行するには、SQL文 mmrnode_bにmmrnode_a同期の競合は以下の通りであります:
更新された xdb_conflictsエントリは次のとおりです 。
[競合履歴]タブで表示すると、エントリの[解決ステータス]列にPending ]ではなくPending Resolved ]が表示され、[勝利DB]列にマスターノードmmrnode_bアドレスが表示されます。
セクションで説明されているように、誤った行を修正し、行が欠落しているマスターノードに行を挿入する代わりに、 deptテーブルの一意性の競合を参照します 6.6.9.4 、すべてのマスターノードから競合する行を削除してから、1つのマスターノードに正しい行を挿入し、マルチマスター複製システムに正しい行をすべてのマスターノードと同期させることができます。
手順1: session_replication_roleがreplica設定されているすべてのマスターノードのパブリケーションテーブルから、挿入された行を手動で削除します。
で mmrnode_a 、誤った行を削除します。
で mmrnode_b 、トランザクションが正しい結果を作成していても、行を削除します。
で mmrnode_c 、変更は、このノード上のテーブルに新しい行を挿入しませんでした矛盾のトランザクションとして必要ありません。
ステップ2:マルチマスター複製システムを実行し、 session_replication_roleをデフォルト( origin )に設定して、1つのマスターノードでトランザクションを再実行します。
この例では、 mmrnode_a 正しい INSERTステートメントが実行されmmrnode_a 。
オン mmrnode_a :
手順3:同期レプリケーションを実行します。
オン mmrnode_a ;
オン mmrnode_b :
オン mmrnode_c :
ステップ4:マスターノード内の競合するトランザクションのシャドウテーブルエントリを更新して、セクション6.6.9.4のステップ2のように競合が解決されたことを示します。
変更 rrep_tx_conflict_statusの列Pを(保留中の) Dすべてのマスターノードで(廃棄)。
mmrnode_a 上のシャドウテーブルの変更は次のとおりです。
rrep_tx_conflict_statusがnullに設定され、競合がなかったことを示すステップ2で実行した受け入れられたトランザクションの2番目のエントリに注意してください 。
mmrnode_b のシャドウテーブルの変更は次のとおりです。
mmrnode_cにはシャドーテーブルエントリがありません。これは 、アプリケーションによってマスターノードで挿入トランザクションが実行されなかったためです。
ステップ5:現在コントローラーデータベースとして指定されているパブリケーションデータベースのコントロールスキーマで、 xdb_conflictsテーブルのエントリを変更し、セクション6.6.9.4のステップ3のように競合が解決されたことを示します。
mmrnode_b 、次の行が挿入されています。
mmrnode_c 、次の行が同じ主キー値が挿入されている9001でempnoカラム:
mmrnode_c 、これは、新たに挿入された行に対する一連の更新が続いています。
同期複製が実行されます。 empテーブルの結果の内容は次のとおりです。
上 mmrnode_a競合行が複製されていません。
上 mmrnode_b競合する行は、このノードが残っに挿入されたが、からレプリケートされたトランザクションで更新されmmrnode_c 。
上 mmrnode_c競合する行がこのノード上で実行された更新に伴って、このノードが残っている上に挿入します:
以下は、 mmrnode_cこの行に対する元の挿入と更新から生じたシャドウテーブルエントリを同期することにより、現在 mmrnode_cにある正しい行を他のマスターノードに再現する手順です 。
ステップ1:挿入された行を、正しい行を持つmmrnode_cを除くすべてのマスターノードのパブリケーションテーブルから手動で削除します。 session_replication_roleがreplica設定されていることを確認してください。
で mmrnode_a 、この行は存在しません。
で mmrnode_b 、誤った行を削除します。
上 mmrnode_c 、正しい、受け入れ行はそのまま残されます。
手順2:破棄される競合する行を含むマスターノードで、その行のシャドウテーブルエントリを破棄としてマークします。これは、この行の競合が解決されたことを示し、このシャドウテーブルエントリが将来的に複製されないようにします。
変更 rrep_tx_conflict_statusからカラムPの(係属中) D失うノード上の(廃棄) mmrnode_b以下で示すように:
ステップ3:勝者ノードmmrnode_cで、 empパブリケーションテーブルのシャドウテーブルを調べます。
メイクノート rrep_sync_idあるこれらの4つのエントリの値は、 1 、 2 、 3 、及び4この例では。
これらの4つのエントリの rrep_tx_conflict_status列がnullであることを確認してください 。この場合、挿入トランザクションの場合、 P (保留)値をnullに変更する必要があります。
以下のための得られた変化 rrep_tx_conflict_status上にシャドウテーブルのカラムmmrnode_c以下で示されています。
ステップ4:次の同期中にこれら四つのシャドーテーブルエントリを複製するために、1つ以上のエントリが制御スキーマテーブルに追加されなければならない_edb_replicator_pub.rrep_mmr_txsetにmmrnode_cターゲット・マスター・ノード(に同期のための保留状態を示すためmmrnode_aとmmrnode_b )同定された4つのシャドー・テーブル・エントリのrrep_sync_idの値は1 、 2 、 3 、及び4ステップ3で述べ。
最初に、保留中のトランザクションに関連付けるpub_id値とターゲットdb_id値を識別する必要があります 。そうするために、代わりに次のクエリ呼び出しrrep_sync_idの値sync_idクエリで:
この例では、4つのに置換される値がある sync_idある、 1 、 2 、 3 、及び4 。
結果は、以前に実行によって識別シャドウテーブルトランザクション適用しようと同期することを示す rrep_sync_id値1 、 2 、 3 、及び4によって識別パブリケーションのすべてたpub_idの3 。ターゲット・マスター・ノードは、によって同定したdb_idの1 (用mmrnode_a )とdb_idの4 (用mmrnode_b )。
したがって、少なくとも2つのエントリは、制御スキーマテーブルに挿入されなければならない _edb_replicator_pub.rrep_mmr_txsetにmmrnode_c 。少なくとも一つのエントリは、ターゲットに必要とされるdb_idの1とターゲットのための少なくとも1つのエントリdb_idの4 。
各エントリため _edb_replicator_pub.rrep_mmr_txsetの範囲から成りrrep_sync_id値(列によって識別start_rrep_sync_idとend_rrep_sync_id )と所望のシャドウ・テーブルはrrep_sync_id値が(連続して起こる1スルー4 )、単一のエントリは、4つの包含することができるrrep_sync_id Aの値を単一のターゲットデータベース。
したがって、この例では、合計2つのエントリを _edb_replicator_pub.rrep_mmr_txset に追加できます(ターゲットデータベースごとに1つ)。
注:複数の非連続があった場合rrep_sync_id (例えば、同期化のために必要な値は、 1 、 2 、 5 、及び6 )は、複数のエントリは、各ターゲット・データベースのために必要とされるであろう。エントリはrrep_sync_id範囲を指定して、連続していないすべての値をまとめてカバーしますが、同期に含まれないrrep_sync_id値を省略します(たとえば、 1から2 1つのエントリと5から6 2番目のエントリ)。
手順5:前の手順で特定した_edb_replicator_pub.rrep_mmr_txsetコントロールスキーマテーブルにエントリを挿入します。
mmrnode_c呼び出される2つの INSERTステートメントは次のとおりです。
_edb_replicator_pub.rrep_mmr_txsetメタデータテーブルのクエリは 、次を表示します。
現在、保留ステータス( P )の2つの新しいエントリがあります 。1つはターゲットdb_id 1で、もう1つはターゲットdb_id 4用db_id 。両方のエントリは、カバーrrep_sync_idの範囲1介して4 。
完了ステータス( C ) の2つのエントリは 、最初に競合を引き起こした同期試行からのものです。
ステップ6:同期レプリケーションを実行します。
記録された挿入三の更新トランザクション rrst_edb_emp上にシャドウテーブルmmrnode_c他のマスター・ノードに複製されます。
オン mmrnode_a :
オン mmrnode_b :
ステップ7:現在コントローラーデータベースとして指定されているパブリケーションデータベースのコントロールスキーマで、 xdb_conflictsテーブルのエントリを変更して、セクション6.6.9.4のステップ3のように競合が解決されたことを示します。
一意性(挿入/挿入)競合の場合のみ、コントローラーデータベースのxdb_conflictsテーブルに対する次のクエリで競合を表示できます。
次のSQLステートメントは、列 resolution_status の値を P (保留)からC (完了)に変更して、この競合が解決されたことを示します。 winning_db_idの値は56に変更され、マスターノードmmrnode_cに勝ったトランザクションが含まれていることを示します。値winning_rrep_sync_idの値に変更するrrep_sync_idのシャドウ・テーブル・エントリのINSERTトランザクションmmrnode_cこれは一方が正しいと見なされるからです。
[競合履歴]タブで表示すると、エントリは[解決ステータス]列に[ Resolved ]と表示され、[勝ちDB]列にはマスターノードmmrnode_cアドレスが表示されます。
注:このセクションの手動の競合解決の説明は、同期レプリケーションのログベースの方法で構成されたマルチマスターレプリケーションシステムにのみ適用されます。同期レプリケーションのトリガーベースの方法で構成されたマルチマスターレプリケーションシステムの手動競合解決については、セクション6.6.9を参照してください。
セクション 6.6.5で説明したように 、一意性(挿入/挿入)の競合に対する組み込みの自動競合解決戦略はありません。一意性の競合が発生した場合は、競合を含むパブリケーションテーブルの行を変更し、マスターノードのコントロールスキーマテーブルの行を変更して競合を解決する必要があります。
•
競合を見つける。未解決の競合を見つける
•
ログベースの方法の競合解決の概念。トランザクションを実行して修正を適用する方法に関する基本的な概念
•
修正戦略の概要。修正を実行するために使用できる方法の概要
•
マニュアル公開表の修正。出版物テーブルの手動修正
•
新しいトランザクションを使用した修正。新しいトランザクションを使用して、すべてのマスターノードを一貫した状態にする
セクション 6.7で 説明されている[競合履歴]タブを使用して競合を見つけることができます 。以下は、[競合履歴]タブの例です。 [更新]ボタンをクリックして、最新の競合をすべて表示します。
注:トリガーベースの同期レプリケーション方式で構成されたマルチマスターレプリケーションシステムで表示される「データリンクの表示」および「競合の詳細」ウィンドウは、ログベースの同期レプリケーション方式で構成されたマルチマスターレプリケーションシステムでは使用できません。
注:すべてのxDBコントロールスキーマテーブルが、トランザクションブロックのこの複製を妨げるわけではありません。以下に示すように、SQL UPDATEステートメントを使用します。
次のトランザクションブロックに示すSQL UPDATEステートメントは、同じトランザクションブロック内に現れる他のパブリケーションテーブルの変更の複製を防ぐために含まれています。
セクション 6.6.10.1で 説明されている[競合履歴]タブとSQLクエリは、初期競合の原因を特定するのに役立ちます。
したがって、競合が発生したことを発見したら、パブリケーションサーバーを停止することを強くお勧めします。セクション5.2.1のステップ1で説明されているLinuxスクリプトまたはWindowsサービスのstopオプションを使用します。
手順1:すべてのマスターノードのパブリケーションテーブルの行に必要な手動修正を加えて、各パブリケーションテーブルがマスターノード全体で同じ行の同じセットを持つように、それらを初期の一貫した状態にします。これは、競合を完全に解決するための最も簡単な措置と判断した内容によっては、競合するトランザクションが発生する前の状態になる場合があります。
ステップ2:トランザクション(アプリケーションまたはセクション6.6.10.2で定義されているトランザクションブロックのいずれか)を適用して、すべてのマスターノードにわたるすべてのパブリケーションテーブルが、期待される期待される結果に従って一貫して更新されるようにします。
手順3:コントロールスキーマで、競合するエントリの特定のインジケーターを更新して、これらの競合が解決されたことを示します。この更新により、[競合履歴]タブでこれらのエントリの解決ステータスが[ Resolved ]に変更されます。これらのエントリは、セクション6.6.10.1で説明されているSQLクエリには表示されなくなります。
コントローラーデータベースの制御スキーマに手順3の更新を実行します。現在指定されているコントローラーデータベースは、xDBレプリケーション構成ファイルの内容から決定できます(セクション 2.3.1.3を 参照 )。パブリケーションサーバーは、コントローラーデータベースで行われたコントロールスキーマの変更がすべてのパブリケーションデータベースのコントロールスキーマに確実に複製され、すべてのパブリケーションデータベース間でメタデータの一貫性を維持します。
ステップ4:複製システムの操作を再開します。パブリケーションサーバーを起動し、レプリケーションスケジュールを使用している場合は再作成します。
•
マニュアル公開表の修正。 PSQLやpgAdmin(Advanced ServerのPostgres Enterprise Manager Client)などのユーティリティを使用して、これらの変更を複製せずに、すべてのマスターノードのパブリケーションテーブルの行を手動で修正します。セクション6.6.10.2で説明したトランザクションブロック内でこれらの手動修正を適用します。
•
新しいトランザクションを使用した修正。 1つのマスターノードでアプリケーションを再実行して、他のすべてのマスターノードに複製できる新しいトランザクションを作成します。すべてのパブリケーションテーブルがすべてのマスターノードで一貫した状態にあることを確認してから、このメソッドを使用します。
•
3ノードのマルチマスター複製システムが確立されました。マスターノード名は mmrnode_a (マスター定義ノードおよびコントローラーデータベース)、 mmrnode_b 、およびmmrnode_cです。
•
パブリケーションの名前は emp_pub 、このドキュメント全体で例として使用されているdeptおよびempテーブルを使用します。
•
競合解決方法を説明するために使用される競合は 、以下に示すINSERTステートメントの結果として、値50主キー列deptno deptテーブルで発生する一意性競合です。
で mmrnode_a 、次のステートメントが実行されます。
で mmrnode_b 、次のステートメントが実行されます。
•
マスターノード mmrnode_aおよびmmrnode_bそれぞれ主キー値50行が含まれていますが、行内の他の列の値は異なります。
•
マスターノード mmrnode_cは、プライマリキー値50行がありません。
deptテーブルの正しい状態が mmrnode_b 状態であると仮定すると 、次のオプションを使用してすべてのマスターノードの状態を修正できます。
•
mmrnode_aおよびmmrnode_c deptテーブルを手動で修正します。つまり、 mmrnode_aの行を更新して正しい値にし、欠落している行をmmrnode_c挿入しmmrnode_c 。すべてのノードのdeptテーブルは、一貫性があり最新の状態になりました。
•
mmrnode_aとmmrnode_b両方で、 主キー値 50 行をテーブルから手動で削除します。これにより、すべてのマスターノードのdeptテーブルが以前の一貫した状態に戻ります。次に、マルチマスターレプリケーションシステムを実行した状態で、いずれかのマスターノードで正しい列値を使用して挿入トランザクションを再度実行します。
手順1:セクション6.6.10.2で説明されているように、トランザクションブロック内に組み込まれたSQL文を使用して、パブリケーション表の行を手動で修正します。
上 mmrnode_a 、次のトランザクションブロックを実行して、誤った行を修正:
で mmrnode_c 、以下のトランザクションブロックに欠落している行を挿入します。
mmrnode_aおよびmmrnode_c の deptテーブルは、 mmrnode_aテーブルの内容と一致するようにmmrnode_b 。
手順2:現在コントローラーデータベースとして指定されているパブリケーションデータベースのコントロールスキーマで、 xdb_conflictsテーブルのエントリを変更して、競合が解決されたことを示します。テーブルxdb_conflictsは、スキーマ_edb_replicator_pubにあります。
注:テーブルxdb_conflictsのエントリは、セクション6.6.10.1で説明されている[競合履歴]タブとSQLクエリに表示されるデータにのみ影響します。 xdb_conflictsエントリを変更しても、将来のレプリケーション操作には影響しませんが、過去の競合がどのように解決されたかを記録する方法を提供します。
xdb_conflictsテーブルに関する次の点に注意してください。
•
xdb_conflictsテーブルの行は、 [競合履歴]タブのエントリとして表示されます。
•
xdb_conflictsテーブルの主キーは、列src_db_id 、 target_db_id 、 src_rrep_sync_id 、およびtarget_rrep_sync_idます。列src_db_idは、 target_db_id識別されるマスターノードに複製されたときに競合が発生するトランザクションが発生したマスターノードの一意の識別子が含まれます。 src_rrep_sync_idは、競合に関与するソースマスターノード上のトランザクションの識別子であり、 target_rrep_sync_idは、競合に関与するターゲットマスターノード上のトランザクションの識別子です。 注: src_rrep_sync_idおよびtarget_rrep_sync_id値は、xDB Replication Serverによって内部的に使用され、手動の競合解決プロセスには必要ありません。
•
コントロールスキーマのテーブル xdb_pub_databaseは、データベース識別子src_db_idおよびtarget_db_idを、データベース名、IPアドレス、ポートなどのマスターノード属性に関連付けます。
•
列 table_idは、競合が発生したパブリケーションテーブルの識別子です。 table_id値とその名前やスキーマなどのパブリケーションテーブル属性との関連付けは、 _edb_replicator_pub.rrep_tables各マスターノードに_edb_replicator_pub.rrep_tablesます。
•
列 pk_valueは、競合の原因となった主キー値を示すテキストが含まれます。テキストはcolumn_name = valueとしてフォーマットされvalue 。主キーが2つ以上の列で構成されている場合、各列と値のペアは、 column_1 = value_1 AND column_2 = value_2などのキーワードAND区切られvalue_2 。これにより、 table_idで指定されたパブリケーションテーブルの行の主キーが提供され、競合が発生しました。
•
列 resolution_statusは、競合のステータスを示します。可能な値は、 P (保留)またはC (完了-競合が解決されました)です。このステータスは、[競合履歴]タブの[解決ステータス]列に表示されます。
•
列 win_db_idを使用して、「勝った」(受け入れられた)トランザクションを含むマスターノードのデータベース識別子を記録できます。この情報は、「競合履歴」タブの「DBの獲得」列に表示されます。
50 deptno主キー値で保留中の挿入/挿入の競合のエントリは、この例の次のクエリでxdb_conflictsに配置できます。
列 resolution_status の値を P (保留)からC (完了)に変更して、この競合が解決されたことを示します。 winning_db_idの値は22に変更され、マスターノードmmrnode_bに勝者のトランザクションが含まれることを示します。
このアップデートを実行するには、SQL文 mmrnode_aにmmrnode_b同期の競合は以下の通りであります:
更新された xdb_conflictsエントリは次のとおりです 。
[競合履歴]タブで表示すると、エントリの[解決ステータス]列にPending ]ではなくPending Resolved ]が表示され、[勝利DB]列にマスターノードmmrnode_bアドレスが表示されます。
セクション6.6.10.4で説明されているように、誤った行を修正し、行が欠落しているマスターノードに行を挿入する代わりに、 deptテーブルの一意性の競合を参照すると、競合する行をすべてのマスターノードから削除してから挿入できます1つのマスターノードで正しい行を作成し、マルチマスターレプリケーションシステムに正しい行をすべてのマスターノードと同期させます。
手順1: 6.6.10.2項で説明されているトランザクション・ブロックを使用して、すべてのマスター・ノードのパブリケーション表から挿入された行を手動で削除します。
で mmrnode_a 、以下のトランザクションブロックで誤った行を削除します。
で mmrnode_b 、トランザクションが正しい結果を作成していても、行を削除します。
で mmrnode_c 、変更は、このノード上のテーブルに新しい行を挿入しませんでした矛盾のトランザクションとして必要ありません。
手順2:マルチマスター複製システムを実行した状態で、1つのマスターノードで正しいトランザクションを再実行します。目的はすべてのマスターノードと同期することであるため、セクション6.6.10.2で説明されているトランザクションブロック内でこれを実行しないでください。
この例では、 mmrnode_a 正しい INSERTステートメントが実行されmmrnode_a 。
オン mmrnode_a :
手順3:同期レプリケーションを実行します。
オン mmrnode_a ;
オン mmrnode_b ;
オン mmrnode_c ;
ステップ4:現在コントローラーデータベースとして指定されているパブリケーションデータベースのコントロールスキーマで、 xdb_conflictsテーブルのエントリを変更して、セクション6.6.10.4のステップ2のように競合が解決されたことを示します。
注:競合履歴は、マルチマスターレプリケーションシステムの任意のマスターノードの下にあるパブリケーションノードから表示できます。履歴には、同期中に発生したすべてのマスターノードのすべてのパブリケーションテーブルでの競合が表示されるため、表示されるマスターノードに関係なく、履歴は同じように表示されます。
注:一意性(挿入/挿入)の競合については、ログベースの方法と比較してトリガーベースの同期レプリケーションの方法を使用する場合、[競合履歴]タブに表示されるエントリの数が異なります。トリガーベースの方法を使用すると、単一の挿入/挿入の競合が競合履歴に2つのエントリとして表示されます。各エントリは、2つの競合するマスターノードのソースデータベースフィールドとターゲットデータベースフィールドが交換される点で異なります。ログベースの方法を使用したときに同じ競合が発生した場合、競合履歴には1つのエントリのみが表示されます。
手順1:マスターノードを表すデータベースノードの下の任意のパブリケーションノードを選択します。 [全般]、[リアルタイムモニター]、[複製履歴]、および[競合履歴]というラベルのタブが表示されます。
手順2: [競合履歴]タブをクリックして、競合履歴を表示します。 [更新]ボタンをクリックして、すべての競合がリストされていることを確認します。
ステップ3: [競合表示基準]ドロップダウンリストを使用して、選択したステータスの競合のみを表示します。
ステップ4: [データの表示]リンクをクリックして、特定の競合の詳細を表示します。
注: 「データの表示」リンクと「競合の詳細」ウィンドウは、同期レプリケーションのトリガーベースの方法で構成されたマルチマスターレプリケーションシステムでのみ使用できます。ログベースの同期レプリケーション方式で構成されたマルチマスターレプリケーションシステムには、データの表示リンクまたは競合の詳細ウィンドウはありません。
手順1:変更するパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2:マスター定義ノードを表すPublication Databaseノードの下のPublicationノードを選択します。
手順3:次のいずれかの方法で[競合解決オプション]ダイアログボックスを開きます。
ステップ4:各テーブルで、適切なボックスの上でマウスの主ボタンをクリックしてドロップダウンリストを表示することにより、主な競合解決戦略とスタンバイ戦略を選択できます。
手順5: [更新]ボタンをクリックし、[競合解決オプションが正常に更新されました]に対して[OK]をクリックします。
注:ログベースのレプリケーションシステムのテーブル設定要件、およびテーブルフィルターの使用に関する一般的な制限については、セクション2.2.12.3を参照してください。
手順1:ノードがレプリケーションシステムのマスターノードの親であるパブリケーションサーバーが実行されており、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2:個々のフィルタールールを有効または無効にするマスターノードに対応するパブリケーションデータベースノードを選択します。
ステップ3: [パブリケーションデータベース]ノードで二次マウスボタンをクリックし、[フィルタールールの更新]を選択します。
注:現在のマスター定義ノードでフィルタールールを有効または無効にする場合、マスターノードのコンテキストメニューで[フィルタールールの更新]オプションを公開するには、まずマスター定義ノードの役割を別のマスターノードに切り替える必要があります。マスター定義ノードの切り替えに関する指示については、セクション6.10を参照してください。
手順4: [フィルタールール]タブで、チェックボックスをオンまたはオフにして、マスターノードで有効または無効にするフィルタールールを指定します。任意のテーブルで最大1つのフィルタールールを有効にできます。 [保存]ボタンをクリックします。
手順5:確認ボックスが表示され、警告メッセージと、フィルター条件を変更したすべてのマスターノードへのスナップショットレプリケーションの実行に関する推奨事項が表示されます。
手順6:前の手順で[OK]ボタンをクリックした場合、更新が成功した場合、フィルタールールが正常に更新されたことを示す確認メッセージが表示されます。
手順7:フィルター条件が変更されたテーブルを含むマスターノードに対してスナップショットレプリケーションを実行することを強くお勧めします。
注:スナップショットのテーブルコンテンツのソースを提供するマスター定義ノードには、マルチマスターレプリケーションシステムの他のマスターノードに含まれるすべてのデータのスーパーセットが含まれている必要があります。これにより、スナップショットのターゲットは、更新されたフィルタリング基準を満たすすべてのデータを確実に受信します。
手順1:ノードがレプリケーションシステムのマスターノードの親であるパブリケーションサーバーが実行されており、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
手順2:マスター定義ノードとして設定するマスターノードに対応するパブリケーションデータベースノードを選択します。
ステップ3: [パブリケーションデータベース]ノードで二次マウスボタンをクリックし、[MDNとして設定]を選択します。
ステップ4: [MDNとして設定]確認ボックスで、[はい]ボタンをクリックします。
ステップ5:選択したマスターノードがマスター定義ノードになりました。
ステップ6: [プロパティ]ウィンドウの[MDN]フィールドの[ Yes ]の値は、このデータベースがマスター定義ノードであることを示しています。
注:新しいマスター定義ノードは、xDBレプリケーションコンソールのレプリケーションツリーの最上部に移動します。
注:ここで、同期複製を実行して、新しいマスター定義ノードが他のマスターノードと同期されるようにする必要があります。同期レプリケーションの実行方法については、セクション6.5.2を参照してください。
注:レプリケーション履歴は、コントローラーデータベースから他のパブリケーションデータベースにレプリケートするのに時間がかかる場合があるため、コントローラーデータベースへのアクセスが失敗し、別のパブリケーションへの切り替えが行われると、一部のレプリケーション履歴が失われる可能性がありますコントローラーデータベースとして機能するデータベース。レプリケーション履歴については、セクション7.4を参照してください。
コントローラのデータベース認証および接続情報は、xDBレプリケーション構成ファイルで適宜変更されます(セクション 2.3.1.3を 参照 )。したがって、パブリケーションサーバーとサブスクリプションサーバーの以降の起動では、この新しく指定されたコントローラーデータベースが使用されます。
uniquenessConflictDetection一意性競合は、データロード時に検出されるか、データがターゲット・マスター・ノードに対して適用されたときに延期されなければならない必要がある場合、オプションが決定します。可能な値はEAGERとLAZYです。マスターノード間で重複した挿入の可能性が高い場合は、 EAGER設定します。
マスターノードの数が2より大きい場合、競合検出は常に EAGERモードで実行されます。 ( LAZYモードの設定は無視されます。)これは、ターゲットノードから既に複製された競合する変更を削除しないようにするために主に必要です。
マスターノードの数が2の場合、 デフォルト値は LAZY です 。
skipConflictDetection同期レプリケーション中に競合検出をスキップするかどうかを制御します。デフォルトはfalseあり、マスターノード間でデータ競合の可能性がゼロの場合にのみ変更する必要があります。たとえば、各マスターノードが独立したデータセットで動作する場合、このオプションをオンにするとレプリケーション時間が改善されます。
デフォルト値は falseです。
マルチマスターレプリケーションシステムでは、ターゲットマスターノードでデッドロックが検出された場合、 deadlockRetryCountオプションは、指定されたミリ秒数待機した後、パブリケーションサーバーが現在のレプリケーションサイクルで変更の適用を再試行する回数を制御しますdeadlockWaitTimeによって。 deadlockRetryCountを0に設定してこのオプションをオフにします。この場合、失敗した変更は次のレプリケーションサイクルで試行されます。
n のデフォルト値は1です。
deadlockWaitTimeオプションは一緒に使用されdeadlockRetryCountターゲット・マスター・ノード上の変更の再試行アプリケーションにパブリケーションサーバーの試行の前にミリ秒単位での待機時間を設定するオプション。
n のデフォルト値は1000です。
注:この章で説明するほとんどの手順は、シングルマスターとマルチマスターの両方のレプリケーションシステムに適用されますが、シングルマスターレプリケーションシステムにのみ適用される手順はFor SMR onlyで示されています。マルチマスター複製システムにのみ適用される手順は、 For MMRのみで示されています。
シングルマスター複製システム(セクション 5.2.3を 参照 )またはマルチマスター複製システム(セクション6.2.3を参照 )のパブリケーションを作成するためにテーブルを選択する場合、選択可能なテーブルの数がそうなる場合がありますチェックリストからそれらを選択するだけでは、困難で時間のかかるプロセスになります。
既存のパブリケーションにテーブルを追加するとき、この困難にも遭遇することができます(項を参照 7.6.3.1を )、または既存のパブリケーションからテーブルを削除(セクションを参照7.6.3.2 )。
ワイルドカードセレクターによって実行されるパターンマッチングは、スキーマとテーブル名の組み合わせがパターンと呼ばれる文字列と一致する場合に、操作に適格なテーブルがフィルター処理されたリストで返されるプロセスです。
パターンに一致するとは、スキーマとテーブル名がschema_nameとしてフォーマットされた文字列に結合されることを意味します. table_nameは、パターンに現れる文字に指定された規則に従って、文字と文字を一致させます。
schema_name 場合 . table_name文字列がパターンと一致すると、スキーマとテーブルがそのパターンのフィルター処理されたリストに表示されます。これは、ワイルドカードセレクターダイアログボックスの[使用可能なテーブル]フィールドです。次に、フィルター処理されたリストから選択してローカルリストに追加するテーブルを選択できます。このリストには、ワイルドカードセレクターを使用している操作の潜在的な候補テーブルが含まれます。
ワイルドカード と呼ばれる文字を除き 、パターンに現れる文字は、 schema_name対応する位置にある文字を必要とし. table_name文字列は、大文字と小文字を区別しない方法でパターン文字に一致する必要があります(つまり、文字Aまたはa 、 Aとa両方に一致a )。
ワイルドカード文字または単にワイルドカード と呼ばれるパターン文字は、 schema_name対応する文字位置と比較すると、特別な方法で解釈され. table_name文字ストリング。
•
? –単一文字のワイルドカードは、パターンの位置に任意の単一文字が存在する可能性があることを指定します。 (SQL LIKE句は、この目的のためにアンダースコア文字( _ )を使用します。)
•
% -複数文字のワイルドカードは、任意の文字の不在を含む複数の文字の任意の組み合わせがパターンのその位置に存在することを指定します。
•
[ abc ...] –リストワイルドカードは、括弧内にリストされた文字のいずれかがパターンの位置に存在する可能性があることを指定します。
•
[ a - d ] –範囲ワイルドカードは、ハイフンの前の文字( - )以上で、ハイフンの次の文字以下の任意の1文字がパターンの位置に存在することを指定します。
•
[ abcd - f ...] –リストと範囲の組み合わせのワイルドカードは、前の2つの箇条書きで説明したリストまたは範囲のワイルドカードの説明のいずれかに一致する文字がパターンの位置に存在することを指定します。
•
パターンに指定されている文字以外の文字は ? 、 % 、 [ 、 ] 、およびリストまたは範囲ワイルドカードの角括弧で囲まれた文字は、パターンの位置に存在する必要があります。このような文字のパターンマッチングは、(例えば、パターンケース鈍感であるedb.dept名前のスキーマと一致するテーブルEDB.Dept )。
•
NOT pattern 、 ! pattern 、 ! pattern –排他的パターンは、 pattern示されるpattern文字列に一致するテーブルがフィルターされたリストから除外されることを指定します。 pattern一致しないテーブルは、フィルタリングされたリストに含まれます。キーワードNOTは大文字、小文字、または大文字と小文字を混在させることができますが、 pattern前にスペース文字を1つ続ける必要があります。 ! patternは、スペース文字を挟まずに感嘆符( ! )の直後にpattern続くことを指定しpattern 。 ! patternは、 patternと感嘆符( ! )の間に単一のスペース文字が存在することを指定します。
•
pattern * - (アスタリスクを指定します*あなたがマッチすることをフィルタされたリスト内のテーブルを含めたい場合は、すぐに介在しない空白文字のパターンを以下の) pattern持っていることの表と一緒に(ローカルリストテーブルである)と、以前に選択されています選択されていません。フィルタリング済みリストでは、以前に選択された各ローカルリストテーブルが表示され、チェックボックスにチェックマークが付いています。以前に選択されていなかったフィルター処理された各テーブルには、チェックボックスにチェックマークがありません。デフォルトでは、アスタリスクが省略されると、以前に選択されていないテーブルのみがフィルターされたリストに返されます。アスタリスクを使用すると、現在選択されているテーブルをローカルリストから削除するのに役立ちます。
•
呼び出しダイアログボックス。これは、ワイルドカードセレクターダイアログボックスを呼び出す操作のダイアログボックスです。ワイルドカードセレクターからのテーブルの最終セットは、呼び出しダイアログボックスによって管理される操作に適用されます。呼び出し可能なダイアログボックスは、[パブリケーションの作成]ダイアログボックス(シングルマスターレプリケーションシステムの場合はセクション5.2.3 、マルチマスターレプリケーションシステムの場合はセクション6.2.3を参照)、[テーブルの追加]ダイアログボックス(セクション7.6.3.1を参照)です。 [テーブルの削除]ダイアログボックス(セクション7.6.3.2を参照)。
•
テーブルリスト。これは、呼び出しダイアログボックスに表示される現在選択されているテーブルのリストです。選択した各テーブルのチェックボックスにはチェックマークが付いています。
•
ローカルリスト。これは、ワイルドカードセレクターによって管理されるテーブルリストの一時的な内部コピーです。ワイルドカードセレクタを使用すると、ローカルリストにテーブルを追加したり、ローカルリストからテーブルを削除したりできます。 [ワイルドカードセレクタ]ダイアログボックスの[完了]ボタンをクリックすると、ローカルリストがテーブルリストになります。つまり、ローカルリストテーブルは、呼び出しダイアログボックスの選択されたテーブルとして表示されます。
•
選択されていないテーブル。これらは適格なテーブルですが、ワイルドカードセレクターを使用している操作では選択されていません。 [フィルターリスト]ボタンをクリックすると、フィルターパターンに一致する未選択のテーブルが、[ワイルドカードセレクター]ダイアログボックスの[使用可能なテーブル]フィールドに一覧表示されます。選択されていないすべてのテーブルを一覧表示するには、フィルターパターンにパーセント記号( % )を使用します。
•
選択したテーブル。これらは、ワイルドカードセレクターを使用している操作で選択したテーブルです。つまり、これらはローカルリストを構成するテーブルです。フィルタパターンに一致する選択したテーブルを表示するには、フィルタパターンの直後にアスタリスク文字( * )を追加します。選択した各テーブルのチェックボックスにはチェックマークが付いています。
手順1: [ワイルドカードセレクター]ダイアログボックスを開く前に、各テーブルのチェックボックスにチェックマークを追加することにより、呼び出しダイアログボックスの使用可能なテーブルのリストからテーブルの選択を開始できます。
ステップ2: [使用可能なテーブル]フィールドには、[フィルターパターン]テキストフィールドで使用されているパターンに一致するフィルター処理されたリストが表示されます。
ステップ3:フィルターパターンテキストフィールドにパターンを入力して、目的のテーブル選択を絞り込みます。 [フィルターリスト]ボタンをクリックして、パターンに一致するテーブルを表示します。
手順4:ローカルリストに追加する[使用可能なテーブル]リストから、そのような各テーブルのチェックボックスにチェックマークを付けて、テーブルを選択します。 [すべて選択]チェックボックスをクリックしてすべてのテーブルを選択し、チェックマークを外して特定のテーブルを個別に選択解除することもできます。
ステップ5: [選択をローカルリストに適用]ボタンをクリックして、選択したテーブルをローカルリストに追加します。
注:呼び出しダイアログボックスのテーブルリストにローカルリストの変更を適用せずに、いつでも[キャンセル]ボタンをクリックしてワイルドカードセレクターを終了できます。
ステップ6:必要な回数だけ、すべての目的のテーブルをローカルリストに追加するために必要なフィルターパターンを使用して、ステップ3〜5を繰り返します。
ステップ7:ローカルリストに目的の選択したテーブルがすべて含まれている場合は、[完了]ボタンをクリックします。 [ワイルドカードセレクタ]ダイアログボックスが閉じ、ローカルリストが、呼び出しダイアログボックスによって表示される選択されたテーブルのリストになります。
ステップ8:ワイルドカードセレクターを再度呼び出して、ステップ1から開始して、プロセスを繰り返してテーブルを追加したり、テーブルリストからテーブルを削除したりできます。
ステップ9:呼び出しダイアログボックスに目的のテーブルの完全なリストが含まれている場合、呼び出しダイアログボックスの適切なボタンをクリックして、選択したテーブルで操作を完了します。
レプリケーションが発生する場合、スケジュールは、時間的に繰り返し点を確立します。
注(MMRのみ):マスター定義ノードからマルチマスター複製システム内の他のすべてのマスターノードへの初期スナップショット複製が実行されていることを確認してください。新しく追加されたマスターノードが最初のスナップショットを受けなかった場合、スケジュールによって開始された以降の同期レプリケーションは、そのマスターノードへのトランザクションの適用に失敗する可能性があります。最初のスナップショットは、マスターノードが最初に追加されたときに(セクション6.3を参照)、またはオンデマンドスナップショットを実行して(セクション6.5.1を参照)取得できます。
スケジュールの変更または削除については、セクション 7.3を参照してください 。
ステップ1(SMRのみ):スケジュールを作成するサブスクリプションのサブスクリプションノードを選択します。
ステップ1(MMRのみ):コントローラーデータベースとして指定されたパブリケーションデータベースノードを選択します。 (コントローラデータベースの[プロパティ]ウィンドウの[コントローラデータベース]フィールドは[ Yesに設定されています。)
ステップ2(SMRのみ):次のいずれかの方法で[タスクウィザード]ダイアログボックスを開きます。
ステップ2(MMRのみ):次のいずれかの方法で[タスクウィザード]ダイアログボックスを開きます。
手順3: [スケジュールされたタスクウィザード]ダイアログボックスで、同期レプリケーションまたはスナップショットレプリケーションのいずれかのラジオボタンを選択します。
注:このサブスクリプションに関連付けられているパブリケーションがスナップショットのみのパブリケーションである場合、スナップショットのみを選択できます。
注:マルチマスター複製システムでは、同期のみを選択できます。
ステップ4:スケジュールされた複製頻度のラジオボタンを選択するか、[cron式]を選択して独自のcron式を作成します。周波数の選択には次の意味があります。
•
継続的に。指定した秒単位の間隔で継続的に実行されるように複製をスケジュールします。ソーステーブルが日中頻繁に変更され、ターゲットテーブルを1日を通して最新に保つ必要がある場合は、このオプションを選択します。
•
毎日。選択した時刻に1日1回実行されるように複製をスケジュールします。ターゲット表を毎日更新する必要がある場合は、このオプションを選択します。
•
毎週。選択した時刻に1日1回実行するようにレプリケーションをスケジュールしますが、選択した特定の曜日にのみ実行します。毎日のスケジュールよりも柔軟性が必要で、ターゲットテーブルを毎日更新する必要がない場合は、このオプションを選択します。
•
毎月。選択した特定の月の特定の月にのみ、月に1日実行するように複製をスケジュールします。ソーステーブルへの更新があまり頻繁に行われず、ターゲットテーブルが1か月以上古い場合、このオプションを選択します。 [月単位]オプションを使用すると、月に1回または1年に1回の頻度で複製をスケジュールできます。
•
クロン式。上記の4つのラジオボタンの選択肢を超えて、スケジュールを指定するための柔軟性を提供します。 cron式の記述方法については、付録10.4.3を参照してください。
手順5: [スケジュールされたタスクウィザード]ダイアログボックスの完了後、[次へ]ボタンをクリックします。
ステップ6:選択したスケジュールが表示されます。 [完了]ボタンをクリックして、スケジュールを受け入れます。
ステップ1(SMRのみ):変更するサブスクリプションの親であるノードを持つサブスクリプションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。サブスクリプションサーバーの起動と登録の手順については、セクション5.3.1を参照してください。
ステップ1(MMRのみ):変更するコントローラーデータベースの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):スケジュールを更新するサブスクリプションのサブスクリプションノードを選択します。
ステップ2(MMRのみ):スケジュールを更新するコントローラーデータベースとして指定されたパブリケーションデータベースノードを選択します。
ステップ3(SMRのみ):次のいずれかの方法で[タスクウィザード]ダイアログボックスを開きます。
ステップ3(MMRのみ):次のいずれかの方法で[スケジュールされたタスクウィザード]ダイアログボックスを開きます。
ステップ4: 「スケジューラーの構成」確認ボックスが表示されます。 [はい]ボタンをクリックします。
手順5: [スケジュールされたタスクウィザード]ダイアログボックスで、新しいスケジュールを作成します。新しいスケジュールの作成方法の詳細については、セクション7.2のステップ3を参照してください。
ステップ1(SMRのみ):変更するサブスクリプションの親であるノードを持つサブスクリプションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。サブスクリプションサーバーの起動と登録の手順については、セクション5.3.1を参照してください。
ステップ1(MMRのみ):変更するコントローラーデータベースの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):スケジュールを削除するサブスクリプションのサブスクリプションノードを選択します。
ステップ2(MMRのみ):スケジュールを削除するコントローラーデータベースとして指定されたパブリケーションデータベースノードを選択します。
ステップ3(SMRのみ):次のいずれかの方法でスケジュールを削除します。
ステップ3(MMRのみ):次のいずれかの方法でスケジュールを削除します。
ステップ4: [スケジュールの削除]確認ボックスで、[はい]ボタンをクリックします。
各サブスクリプションまたはマスターノードで実行されたレプリケーションの概要は、xDBレプリケーションコンソールで表示できます。各ターゲットテーブルに対して行われた各挿入、更新、削除を示す詳細なレプリケーション履歴も表示できます。同期レプリケーションのターゲットベースの方法の変更がターゲット表に適用される方法については、 セクション 2.2.9を参照してください 。同期レプリケーションのログベースの方法については、セクション2.2.10を参照してください。
注(SMRのみ):レプリケーション履歴は、パブリケーションノードおよびサブスクリプションノードから表示できます。パブリケーションノードに対して表示される履歴は、実際には、同期中にパブリケーションサーバーがサブスクリプションテーブルに対して行った挿入、更新、および削除のまったく同じセットです。パブリケーションノードに対して表示される履歴には、ユーザーアプリケーションから発生したパブリケーションテーブルで処理された実際のSQLステートメントは表示されません。
注(MMRのみ):レプリケーション履歴は、マルチマスターレプリケーションシステムの任意のマスターノードの下のパブリケーションノードから表示できます。表示される履歴には、同期中にパブリケーションサーバーによってすべてのマスターノードのすべてのパブリケーションテーブルで行われた挿入、更新、および削除が含まれるため、履歴が表示されるマスターノードに関係なく、履歴は同じように表示されます。
ステップ1(SMRのみ):サブスクリプションノードの下のノードを選択します。 [全般]、[リアルタイムモニター]、および[複製履歴]というラベルのタブが表示されます。
ステップ1(MMRのみ):マスターノードを表すデータベースノードの下の任意のパブリケーションノードを選択します。 [全般]、[リアルタイムモニター]、[複製履歴]、および[競合履歴]というラベルのタブが表示されます。
手順2: [レプリケーション履歴]タブをクリックして、レプリケーションの履歴を表示します。
注:少なくとも1つの更新を含むすべてのスナップショットレプリケーションと各同期レプリケーションは、コントロールスキーマのレプリケーション履歴テーブルに保持される履歴レコードを生成します。時間が経つにつれて、レプリケーション履歴テーブルのサイズが大きくなります。レプリケーション履歴レコードは定期的に削除できます。レプリケーション履歴のクリーンアップについては、セクション7.5.3を参照してください。
手順1: [レプリケーション履歴]タブの下部にある[トランザクション数> 0の履歴を表示する]チェックボックスをオンにします。
手順2: [レプリケーション履歴]タブが次に更新されると、ゼロ以外のトランザクションカウントのレプリケーションのみがレプリケーション履歴に表示されます。
注:ゼロトランザクションカウントのレプリケーションレコードは、パブリケーションサーバーのメモリに保持されます。デフォルトでは、これらは永続的にディスクに保存されるわけではありません。したがって、パブリケーションサーバーがシャットダウンすると、メモリ内のゼロトランザクションカウントのレプリケーションレコードは使用できなくなります。
ステップ1:テーブルを選択して、テーブルに関する一般情報とテーブルの複製履歴を含むタブを表示します。テーブルノードを展開して、テーブルの列を表示します。
手順2: [レプリケーション履歴]タブをクリックして、このテーブルのレプリケーションの履歴を表示します。
手順3: [データの表示]リンクをクリックして、同期レプリケーション中にテーブルに加えられた各変更のリストを表示します。 [履歴の同期]ウィンドウには、 empソーステーブルで実行された次のSQLステートメントのセットに対応するempターゲットテーブルに対する1つの挿入操作が後に続く2つの更新操作が表示されます。
注:すべてのソース表に対するすべての挿入、更新、および削除操作はシャドウ表に記録されるため、揮発性ソース表の場合、シャドウ表のサイズは時間とともにかなり大きくなる可能性があります。 [履歴の同期]ウィンドウに表示される行は、これらのシャドウテーブルから取得されます。シャドウテーブルの行は定期的に削除できます。シャドウテーブルのクリーンアップについては、セクション7.5.2を参照してください。
•
シャドウテーブルの履歴。トリガーベースの方法を使用した同期レプリケーション中に各ターゲットテーブルに適用された各変更(挿入、更新、または削除)のレコード。ログベースの方法を使用した同期レプリケーションのシャドウテーブル履歴はありません。
•
レプリケーション履歴。各複製の要約レコード。
•
イベント履歴。さまざまなコントロールスキーマテーブルに適用された各変更の記録。
注:同期レプリケーションのたびにシャドウテーブル履歴をクリーンアップするための構成オプションが利用可能です。このオプションの詳細は、 10.4.1.9項を参照してください。
注:シャドウテーブル内の特定の処理済み行のクリーンアップは、次にスケジュールされているクリーンアップよりも遅れることがありますが、その後のクリーンアップイベントで最終的に削除されます。
Oracleのみ: Oracleパブリケーションデータベースでのシャドウテーブル履歴のクリーンアップのスケジューリングには、Oracleデータベースサーバー上のOracle DBMS_JOBパッケージが使用されます。クリーンアップのスケジュールで指定した時間が渡され、タイムゾーン変換なしでDBMS_JOB保存されます。
SQL Serverのみ: SQL Serverパブリケーションデータベースでのシャドウテーブル履歴クリーンアップのスケジュールには、SQL Serverを実行しているホストでSQL Serverエージェントが使用されます。クリーンアップのスケジュールで指定した時間は、タイムゾーン変換なしでSQL Serverエージェントに渡されます。この効果は、前の例でOracleについて説明したものと同じです。
Postgresのみ: Postgresパブリケーションデータベースでのシャドウテーブル履歴クリーンアップのスケジューリングでは、コントローラーデータベースの場所に基づいてパブリケーションサーバーを実行しているホストでQuartzスケジューラーが使用されます。
Oracleのみ: Oracleパブリケーションデータベースのクリーンアップジョブは、パブリケーションサーバーとは独立して実行されるため、パブリケーションサーバーが実行されているかどうかに関係なく、クリーンアップジョブが実行されます。
Postgresのみ:クリーンアップジョブをPostgresパブリケーションデータベースで実行するには、パブリケーションサーバーが実行されている必要があります。
注: Postgresがパブリケーションデータベースである場合にQuartzスケジューラーを使用する代わりに、pgAgentジョブスケジューリングを使用することもできます。 pgAgentジョブスケジューリングの使用方法とその利点については、セクション10.4.1.8を参照してください。
手順1:クリーンアップスケジュール設定を設定するパブリケーションデータベース定義の親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
手順2:クリーンアップスケジュール設定を設定するパブリケーションデータベースノードを選択します。
ステップ3: [出版物]メニューから[設定]を選択します。または、[パブリケーションデータベース]ノードで2番目のマウスボタンをクリックし、[設定]を選択します。 Publication Server Preferencesダイアログボックスが表示されます。
ステップ4:スケジュールされたシャドウテーブル履歴のクリーンアップジョブを実行しない場合は、[パブリケーションサーバーの設定]ダイアログボックスで、チェックボックスをオフにします。 [OK]ボタンをクリックして、残りの手順をスキップします。
手順5:シャドウテーブルの履歴クリーンアップをスケジュールする場合は、[クリーンアップジョブの実行]チェックボックスがオンになっていることを確認します。クリーンアップ頻度のラジオボタンを選択します。周波数の選択には次の意味があります。
•
すべての分/時間。シャドウテーブルの履歴のクリーンアップをスケジュールして、指定した分または時間の間隔で継続的に実行します。 1日のうち毎日、パブリケーションテーブルに大量の更新がある場合は、このオプションを選択します。
•
毎日1時間ごと。シャドウテーブルの履歴のクリーンアップをスケジュールして、選択した時間に1日1回実行します。パブリケーションテーブルの更新が頻繁に行われ、1週間に2回以上のクリーンアップが必要であるが、1日に1回以上は必要ない場合は、このオプションを選択します。
•
選択した曜日ごとの時刻。シャドウテーブルの履歴のクリーンアップをスケジュールして、選択した日と時間に週に1回実行します。パブリケーションテーブルの更新が頻繁ではなく、クリーンアップを手動で実行したくない場合は、このオプションを選択します。
•
クロン式。上記の3つのラジオボタンの選択肢を超えて、スケジュールを指定するための柔軟性を提供します。 cron式の記述方法については、付録10.4.3を参照してください。
注:同期レプリケーションのたびにシャドウテーブル履歴をクリーンアップするための構成オプションが利用可能です。このオプションの詳細は、 10.4.1.9項を参照してください。
ステップ6: [OK]ボタンをクリックして、スケジュールを受け入れます。
•
RRST_ schema _ table
Oracleのみ: Oracleがパブリケーションデータベースである場合、これらのテーブルはパブリケーションデータベースユーザーのスキーマのパブリケーションデータベースにあります。
SQL Serverのみ: SQL Serverがパブリケーションデータベースである場合、これらのテーブルはセクション5.1.4.2のステップ5で選択したスキーマのパブリケーションデータベースにあります。
Postgresのみ: Postgresがパブリケーションデータベースである場合、これらのテーブルはスキーマ_edb_replicator_pubパブリケーションデータベースにあります。
注:シャドウテーブル内の特定の処理済み行のクリーンアップは、オンデマンドクリーンアップ中に発生しないか、スケジュールされた次のクリーンアップより遅れる場合がありますが、その後のクリーンアップイベントで削除されます。
手順1:シャドウテーブルの履歴をクリーンアップするパブリケーションの親であるノードを持つパブリケーションサーバーが実行されており、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
手順2:シャドウテーブルの履歴をクリーンアップするパブリケーションのパブリケーションノードを選択します。
ステップ3: [パブリケーション]メニューから、[シャドウテーブル履歴のクリーンアップ]を選択します。または、パブリケーションノードで二次マウスボタンをクリックし、シャドウテーブル履歴のクリーンアップを選択します。 [同期履歴のクリーンアップ]確認ボックスが表示されます。
ステップ4: [同期履歴のクリーンアップ]確認ボックスで[はい]ボタンをクリックします。
ステップ5:シャドウテーブルのトランザクション履歴が正常に削除されたことに応じて、[はい]ボタンをクリックします。
ステップ1:レプリケーション履歴をクリーンアップするパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
手順2:レプリケーション履歴をクリーンアップするパブリケーションのパブリケーションノードを選択します。
ステップ3: [パブリケーション]メニューから、[レプリケーション履歴のクリーンアップ]を選択します。または、パブリケーションノードで2番目のマウスボタンをクリックし、[レプリケーション履歴のクリーンアップ]を選択します。 Cleanup Replication History確認ボックスが表示されます。
ステップ4: [レプリケーション履歴のクリーンアップ]確認ボックスで[はい]ボタンをクリックします。
手順5: [レプリケーション履歴が削除されました]への応答として[はい]ボタンをクリックします。
シャドウテーブルの履歴( 7.5.2 項 )およびレプリケーション履歴( 7.5.3項)とは異なり 、イベント履歴はxDBレプリケーションコンソールを使用して表示も削除もできません。
パブリケーションサーバー構成オプション historyCleanupDaysThresholdは、削除する前に完了したデータに到達する必要があるhistoryCleanupDaysThresholdを指定する機能を提供します。デフォルト設定では、完了したデータは、毎日午前12時のクリーンアッププロセスで削除される前に7日以上経過している必要があります。
経過時間に関係なく完了したすべてのイベントとレプリケーション履歴をクリーンアップするには、 historyCleanupDaysThresholdの値を0に設定してから、パブリケーションサーバーを再起動します。クリーンアップは、次に予定されている午前12時のクリーンアッププロセス中に行われます。
historyCleanupDaysThresholdオプションについては、 セクション 10.4.1.10を参照してください 。
手順1:ファイルに変更を加える前に、サーバーログインファイルでログイン情報を保存、変更、または削除するパブリケーションサーバーが実行されている必要があります。パブリケーションサーバーの起動手順については、セクション5.2.1のステップ1を参照してください。
ステップ2: Publication Serverノードで2番目のマウスボタンをクリックし、Updateを選択します。 [パブリケーションサーバーの更新]ダイアログボックスが表示されます。
ステップ3:サーバーログインファイルを更新する目的に応じて、ダイアログボックスのフィールドに入力します。
ステップ4: [更新]ボタンをクリックします。ダイアログボックスが閉じた場合、サーバーログインファイルの更新は成功しています。 xDB Replication Consoleツールバーの「更新」アイコンをクリックして、更新されたPublication Serverノードを表示します。
注:このセクションは、シングルマスター複製システムにのみ適用されます。
手順1:メタデータを変更するパブリケーションサーバーが実行されている必要があります。パブリケーションサーバーの起動手順については、セクション5.2.1のステップ1を参照してください。
ステップ2: Publication Serverノードで二次マウスボタンをクリックし、Update Subscription Serversを選択します。 [サブスクリプションサーバーの更新]ダイアログボックスが表示されます。
注:エラーメッセージボックスが再び表示される場合は、[OK]ボタンをクリックして、手順2を繰り返します。
ステップ3:ネットワークロケーションが変更されたリスト内の各サブスクリプションサーバーの新しいネットワークロケーションを入力します。
ステップ4: [更新]ボタンをクリックします。ダイアログボックスが閉じた場合、パブリケーションサーバーのメタデータの更新は成功しています。
ステップ5:新しいネットワークロケーションのサブスクリプションサーバーが他のパブリケーションサーバーのパブリケーションに関連付けられたサブスクリプションを管理する場合、これらの他のパブリケーションサーバーに対してステップ1〜4を繰り返します。
注:データベースのタイプ(Oracle、SQL Server、またはPostgres)に応じて、特定の属性を変更しないでください。このパブリケーションデータベース定義を最初に追加したときにコントロールスキーマオブジェクトが作成されたスキーマへのアクセスを変更する属性を変更しないでください。コントロールスキーマオブジェクトの場所については、セクション5.2.4を参照してください。
ステップ1:パブリケーションデータベース定義として最終的に保存するデータベースサーバーが実行中であり、クライアント接続を受け入れていることを確認します。
手順2:変更するパブリケーションデータベース定義の親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
手順3:更新するパブリケーションデータベース定義に対応するパブリケーションデータベースノードを選択します。
ステップ4: [出版物]メニューから[出版物データベース]を選択し、[データベースの更新]を選択します。または、[パブリケーションデータベース]ノードで2番目のマウスボタンをクリックし、[データベースの更新]を選択します。 [データベースソースの更新]ダイアログボックスが表示されます。
ステップ5:目的の変更を入力します。シングルマスター複製システムのフィールドの正確な意味については、セクション5.2.2のステップ3を参照してください。マルチマスター複製システムについては、セクション6.2.2および6.3を参照してください。
ステップ6: [テスト]ボタンをクリックします。テスト結果:成功が表示されたら、[OK]ボタンをクリックしてから、[保存]ボタンをクリックします。
ステップ7:パブリケーションサーバーを再起動します。パブリケーションサーバーを再起動する方法については、セクション5.2.1を参照してください。
手順8: xDB Replication Consoleツールバーの[更新]アイコンをクリックして、更新されたパブリケーションデータベースノードとそのパブリケーションを表示します。
手順1:変更するパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):テーブルを追加するパブリケーションのパブリケーションノードを選択します。
ステップ2(MMRのみ):マスター定義ノードを表すPublication Databaseノードの下のPublicationノードを選択します。
手順3:次のいずれかの方法で[テーブルの追加]ダイアログボックスを開きます。
ステップ4: [テーブルの追加]ダイアログボックスの[テーブルの追加]タブで、次のフィールドに入力します。
•
追加します。パブリケーションに追加する[使用可能なテーブル]リストのテーブル名の横にあるチェックボックスをオンにします。パブリケーションがスナップショットのみのパブリケーションである場合、ビューは[使用可能なテーブル]リストにも表示されます。 [使用可能なテーブル]リストには、同じパブリケーションデータベースノードの下の他のパブリケーションのメンバーではないテーブルとビューのみが含まれます。または、さらに、[ワイルドカード選択の使用]ボタンをクリックして、パブリケーションに追加するテーブルの選択にワイルドカードパターンマッチングを使用します。
•
すべて選択。パブリケーションの[使用可能なテーブル]リストにすべてのテーブルとビューを含める場合は、このボックスをオンにします。
•
ワイルドカード選択を使用します。このボタンをクリックして、ワイルドカードセレクターを使用してパブリケーションのテーブルを選択します。ワイルドカードセレクタの詳細については、セクション7.1を参照してください。
ステップ5(オプション):パブリケーションのテーブルまたはビューの行をフィルターする場合は、[テーブルフィルター]タブをクリックします。 [フィルター]ダイアログボックスに一意のわかりやすいフィルター名と適切なSQL WHERE句を入力して、複製する行を選択することにより、フィルタールールを定義します。
シングルマスターレプリケーションシステムの場合 、パブリケーションテーブルでテーブルフィルターを定義する方法については、セクション 5.2.3を参照してください 。
ステップ6(SMRのみ): [テーブルの追加]ボタンをクリックします。 [パブリケーションが正常に更新された]が表示されたら、[OK]ボタンをクリックします。それ以外の場合は、エラーを調査して必要な修正を行います。
ステップ6(MMRのみ): [テーブルの追加]ボタンをクリックします。テーブルが追加される前に同期レプリケーションが実行されることを警告する[データ同期チェック]ダイアログボックスが表示されます。
ステップ7:パブリケーションノードの下に新しく追加されたテーブルとともに、レプリケーションツリーが次のように表示されます。 [更新]アイコンをクリックします。新しく追加されたテーブルは、シングルマスター複製システムのサブスクリプションノードまたはマルチマスター複製システムの追加マスターノードの下に表示されます。
ステップ8(MMRのみ):新しく追加されたテーブルに割り当てられたデフォルトの競合解決オプションを変更または表示する場合は、セクション6.8の指示に従います。
ステップ9(オプション):新しく追加されたテーブルでテーブルフィルターを定義し、サブスクリプションまたはマスターノードでこれらのフィルターを使用する場合、目的のサブスクリプションまたはマスターノード内のテーブルでフィルターを有効にする必要があります。
シングルマスターレプリケーションシステムの場合 、サブスクリプションでテーブルフィルターを有効にする方法については、セクション 5.5.4を参照してください 。
マルチマスターレプリケーションシステムの場合 、マスターノードでテーブルフィルターを有効にする方法については、セクション 6.9を参照してください 。
pp_xdb_repsvr_ug_erdiag
上記のエンティティ関係図では、 empテーブルにはdeptテーブルを参照する外部キー制約があり、 jobhistテーブルには2つの外部キー制約があります。 1つの制約はempテーブルを参照し、もう1つの制約はdeptテーブルを参照します。
•
jobhistテーブルのみを削除します。
•
jobhistテーブルとempテーブルの両方を削除します。
手順1:変更するパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):テーブルを削除するパブリケーションのパブリケーションノードを選択します。
ステップ2(MMRのみ):マスター定義ノードを表すPublication Databaseノードの下のPublicationノードを選択します。
手順3:次のいずれかの方法で[テーブルの削除]ダイアログボックスを開きます。
手順4:次のように[テーブルの削除]ダイアログボックスを使用します。
•
削除します。パブリケーションから削除する[使用可能なテーブル]リストのテーブル名の横にあるチェックボックスをオンにします。パブリケーションがスナップショットのみのパブリケーションである場合、ビューは[使用可能なテーブル]リストにも表示されます。または、さらに、[ワイルドカード選択の使用]ボタンをクリックして、パブリケーションから削除するテーブルの選択にワイルドカードパターンマッチングを使用します。
•
ワイルドカード選択を使用します。このボタンをクリックして、ワイルドカードセレクターを使用して、パブリケーションから削除するテーブルを選択します。ワイルドカードセレクタの詳細については、セクション7.1を参照してください。
ステップ5: [削除]ボタンをクリックし、確認ボックスの[はい]ボタンをクリックします。
ステップ6:テーブルが正常に削除されたことに応じて、[OK]ボタンをクリックします。
注:ログベースのレプリケーションシステムのテーブル設定要件、およびテーブルフィルターの使用に関する一般的な制限については、セクション2.2.12.3を参照してください。
シングルマスター複製システムでテーブルフィルターを使用する方法についてはセクション 5.2.3を、マルチマスター複製システムでセクション6.2.3を参照してください。
手順1:変更するパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):利用可能なテーブルフィルターのセットを更新するパブリケーションのパブリケーションノードを選択します。
ステップ2(MMRのみ):マスター定義ノードを表すPublication Databaseノードの下のPublicationノードを選択します。
手順3:次のいずれかの方法で[フィルターの更新]ダイアログボックスを開きます。
ステップ4:パブリケーションで定義されている使用可能なすべてのフィルタールールのセットが、[テーブルフィルター]タブの下に一覧表示されます。
新しいフィルタールールを追加するには、[テーブル/ビュー]ドロップダウンリストから、フィルターを追加するテーブルまたはビューを選択し、[フィルターの追加]ボタンをクリックします。表示されるダイアログボックスに情報を入力します。 (シングルマスター複製システムに個々のフィルター規則を追加する方法の詳細については、 セクション 5.2.3を参照してください。マルチマスター複製システムについては、セクション6.2.3を参照してください。)
手順5:警告メッセージと、フィルター条件の変更を有効にする予定のサブスクリプションまたはマスターノードへのスナップショットレプリケーションを実行するための推奨事項を示す確認ボックスが表示されます。
ステップ6:関連するサブスクリプションまたはマスターノードの対応するテーブルに対して、新しいフィルタールールを選択的に有効にすることができます。サブスクリプションでテーブルフィルターを有効にする方法については、セクション5.5.4を参照してください。マスターノードでテーブルフィルターを有効にする方法については、 6.9項をご覧ください。
パブリケーションが作成されたら、パブリケーションに 属するテーブルの定義を直接変更しない で ください 。これを行うと、複製プロセス中に障害が発生する場合があります。変更してはならないテーブル定義の例は次のとおりです。
注: xDB Replication Serverによって生成されたトリガーを変更しないでください。トリガーの再生成が必要になった場合、関連するパブリケーションを削除してから、パブリケーションを再作成する必要があります。
•
追加のマスターノードを再追加します。マスターノードを追加する方法については、セクション 6.3を参照してください 。マスターノードを作成するときに、すべてのマスターノードでテーブル定義をすでに作成している場合は、[パブリケーションスキーマの複製]チェックボックスをオフにします。マスター定義ノードから他のすべてのマスターノードにテーブル定義を伝播する場合は、[パブリケーションスキーマの複製]チェックボックスをオンにします。スナップショットは、マスター定義ノードからマスターノードテーブルをリロードします。
注:この検証機能は、同期レプリケーションのトリガーベースの方法を使用するパブリケーションでのみ使用できます。この検証機能は、同期レプリケーションのログベースの方法を使用するパブリケーションでは使用できません。
ここおよび 7.6.5.2 項で説明する検証操作では 、次のタイプの表変更を確認できます。
注:マルチマスターレプリケーションシステムでは、マスター定義ノードのみのパブリケーションテーブルが検証されます。検証操作では、他のマスターノードでテーブル定義が変更されているかどうかはチェックされません。
ステップ1:検証するパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):検証するパブリケーションのパブリケーションノードを選択します。
ステップ2(MMRのみ):マスター定義ノードを表すPublication Databaseノードの下のPublicationノードを選択します。
ステップ3: [出版物]メニューから[出版物の検証]を選択します。または、パブリケーションノードで2番目のマウスボタンをクリックし、パブリケーションの検証を選択します。
ステップ4:パブリケーション ' publication_name 'のパブリッシュされたテーブルのすべてのスキーマが最新である場合は、[OK]ボタンをクリックします。エラーが表示された場合、どのテーブルが変更されたか、テーブル定義にどのような変更が加えられたかを判断します。このセクションで前述したように、これらの問題はケースバイケースで解決する必要があります。
注:この検証機能は、同期レプリケーションのトリガーベースの方法を使用するパブリケーションでのみ使用できます。この検証機能は、同期レプリケーションのログベースの方法を使用するパブリケーションでは使用できません。
注:マルチマスターレプリケーションシステムでは、マスター定義ノードのみのパブリケーションテーブルが検証されます。検証操作では、他のマスターノードでテーブル定義が変更されているかどうかはチェックされません。
ステップ1:検証するパブリケーションの親であるノードを持つパブリケーションサーバーが実行されており、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):すべてのパブリケーションを検証するパブリケーションデータベースノードを選択します。
ステップ2(MMRのみ):マスター定義ノードを表すパブリケーションデータベースノードを選択します。
ステップ3: [出版物]メニューから[すべての出版物を検証]を選択します。または、パブリケーションデータベースノードで2番目のマウスボタンをクリックし、[すべてのパブリケーションを検証]を選択します。
ステップ4:変更されたテーブルがなかった場合、[OK]ボタンをクリックします。
ステップ1:削除するパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2(SMRのみ):削除するパブリケーションのパブリケーションノードを選択します。
ステップ2(MMRのみ):マスター定義ノードを表すPublication Databaseノードの下のPublicationノードを選択します。
手順3:次のいずれかの方法でパブリケーションを削除します。
ステップ4: [パブリケーションの削除]確認ボックスで、[はい]ボタンをクリックします。
OracleおよびSQL Serverの場合:パブリケーションデータベースユーザーのスキーマの下にあるすべてのメタデータデータベースオブジェクトが削除されます。
Postgresのみ:スキーマ_edb_replicator_pubとそのすべてのデータベースオブジェクトがパブリケーションデータベースから削除されます。
手順1:削除するパブリケーションデータベース定義の親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2:削除するパブリケーションデータベースノードを選択します。
ステップ3: [出版物]メニューから[出版物データベース]、[データベースの削除]の順に選択します。または、パブリケーションデータベースノードで2番目のマウスボタンをクリックし、データベースの削除を選択します。 [パブリケーションデータベースの削除]確認ボックスが表示されます。
ステップ4: [パブリケーションデータベースの削除]確認ボックスで、[はい]ボタンをクリックします。
注:コントローラーデータベースがOracleまたはSQL Serverパブリケーションデータベースの場合、2番目のOracleまたはSQL Serverパブリケーションデータベースを追加して、2番目のシングルマスターレプリケーションシステムを作成することはできません。 xDB Replication ServerがOracleまたはSQL Serverパブリケーションデータベースで構成される複数のシングルマスタレプリケーションシステムを実行するには、Postgresパブリケーションデータベースをコントローラーデータベースとして指定する必要があります。
コントローラーデータベースを切り替えると、パブリケーションサーバーはxDBレプリケーション構成ファイルを更新し、パラメーター user 、 password 、 host 、 port 、 database 、およびtypeが、選択したパブリケーションデータベースの接続および認証設定に設定されるようにします。
手順1:ノードがパブリケーションデータベースの親であるパブリケーションサーバーが実行されており、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ2:コントローラーデータベースとして設定するパブリケーションデータベースに対応するパブリケーションデータベースノードを選択します。
ステップ3: Publication Databaseノードで2番目のマウスボタンをクリックし、Set as Controller databaseを選択します。
ステップ4: [コントローラーデータベースとして設定]確認ボックスで、[はい]ボタンをクリックします。
ステップ5:選択したパブリケーションデータベースがコントローラーデータベースとして設定されました。
ステップ6: [プロパティ]ウィンドウの[コントローラーデータベース]フィールドの[ Yesは、このデータベースがコントローラーデータベースであることを示します。
注:他のタイプのテーブル定義の変更の処理については、セクション7.6.5を参照してください。
テーブル定義の変更は通常、SQL ALTER TABLEステートメントを使用して実装されます 。これは、PSQLなどのSQLコマンドラインユーティリティプログラムで発行されます。
DDL変更のレプリケーション機能は、一つ以上の受け入れALTER TABLE文を。ステートメントは、テキストファイルを使用するか、[パブリケーションテーブルの変更]ダイアログボックスに直接入力することで提供できます。後者の場合は、ステートメントをコピーしてダイアログボックスに貼り付けるか、ステートメントを直接入力します。その後、DDL変更レプリケーション機能は次のアクションを実行します。
•
ALTER TABLEステートメントを、シングルマスターレプリケーションシステムのパブリケーションデータベースとサブスクリプションデータベース、またはマルチマスターレプリケーションシステムのすべてのマスターノード(マスター定義ノードを含む)の適切なターゲットテーブルに適用します。
DDL変更レプリケーション機能で受け入れられるALTER TABLEステートメントの構文は次のとおりです。
ALTER TABLE schema 。 table_name action
どこ action 、次のいずれかになります。
RENAME [COLUMN] column_name TO new_column_name
ADD [COLUMN] column_name data_type
[デフォルト dflt_expr ]
[ column_constraint_1 [ column_constraint_2 ] ...]
DROP [COLUMN] column_name [RESTRICT]
ALTER [COLUMN] column_name [SET DATA] TYPE data_type
[COLLATE " collation "]
[USING data_type_expr ]
列のDEFAULT値を設定します。
ALTER [COLUMN] column_name SET DEFAULT dflt_expr
注: OracleまたはSQL Serverがサブスクリプションデータベースの場合、 SET DEFAULT句はサポートされません。
ドロップ DEFAULT列の値を:
ALTER [COLUMN] column_name DROP DEFAULT
注: OracleまたはSQL Serverがサブスクリプションデータベースである場合、 DROP DEFAULT句はサポートされません。
ALTER [COLUMN] column_name SET NOT NULL
注: SQL Serverがサブスクリプションデータベースである場合、 SET NOT NULL句はサポートされSET NOT NULL 。
ALTER [COLUMN] column_name DROP NOT NULL
注: SQL Serverがサブスクリプションデータベースの場合、 DROP NOT NULL句はサポートされDROP NOT NULL 。
次の制限は、 ALTER TABLEステートメントがテキストファイル内にあるか、ダイアログボックスに直接入力されるかに関係なく指定される方法に適用されます。
•
各 ALTER TABLEステートメントはセミコロンで終了し、別の行で開始する必要があります。
•
Postgres ALTER TABLEステートメントはステートメントごとに複数のアクションを許可しますが、xDB DDL変更レプリケーション機能はALTER TABLEステートメントごとに1つのactionのみを許可します。
•
すべての ALTER TABLEステートメントのターゲットテーブルは同じでなければなりません。
•
DROP COLUMNアクションは、テーブルの主キーの一部を構成する列に指定することはできません。
table_name を含むスキーマの名前 。この値は大文字と小文字が区別されます。
RENAME COLUMN句で指定された列の新しい名前 。
UNIQUEまたはCHECK 制約などの列制約 。列制約の詳細については、次の場所にあるPostgreSQLコアドキュメントのCREATE TABLE SQLコマンドを参照してください。

https://www.postgresql.org/docs/current/static/sql-createtable.html
DROP COLUMNそれに依存するオブジェクトが存在する場合句、列を削除しないでください。これがデフォルトです。 注: CASCADEオプションは、DDL変更複製機能ではサポートされていないため、指定できません。
例
以下は 、DDL変更レプリケーション機能で使用できるALTER TABLEステートメントの例です。
次の ALTER TABLEステートメントのセットは 、テキストファイルで指定するか、ダイアログボックスに直接入力して、 edb.empテーブルに列を追加します。
次の ALTER TABLEステートメントは、 title列のデータ型の長さを変更し、その値をUSING data_type_expr句で設定します。
次のクエリは、 DDL変更レプリケーション機能が前述のALTER TABLEステートメントをedb.empテーブルに適用した後にtitle列に割り当てられた値を示しています 。 title列のこの変更と値の割り当ては、シングルマスター複製システムのすべてのサブスクリプションデータベース、またはマルチマスター複製システムのすべてのマスターノードで発生します。
次の ALTER TABLEステートメントのセットは 、最初の例で追加された列をドロップします。
DDLステートメントは 、操作の過程でターゲットテーブルが排他的にロックされるように制御された方法で実行されます(構成オプション ddlChangeTableLock デフォルト設定により )。これは、DDL変更レプリケーションプロセスによってレプリケーショントリガーとシャドウテーブルが変更されている間、トランザクションの損失を回避するために行われます。 DDL変更レプリケーションがそのテーブル、そのトリガー、およびシャドウテーブルで行われている間、一度に1つのターゲットテーブルのみがロックされます。
注: ddlChangeTableLockをfalse設定すると、DDL変更レプリケーションプロセス中の各ターゲットテーブルの排他的取得をオフにできfalse 。ただし、これは、ターゲットテーブルに対して実行されている書き込みトランザクションがない場合にのみ行う必要があります。そうでない場合、レプリケーションシステムによってトランザクションが記録されない場合があります。 ddlChangeTableLock構成オプションの追加情報については、セクション10.4.1.11を参照してください。
•
パブリケーションサーバーの構成オプション ddlChangeTableLockがデフォルト値のtrueに設定されている場合、DDLの変更が適用されるテーブルで排他テーブルロックが要求されます。別のアプリケーションがすでにテーブルにロックを設定している場合、2分前に待機時間があり、その後ロックが解除されない場合、DDL変更レプリケーションプロセスは中止されます。 ddlChangeTableLockがfalseに設定されてfalse場合、排他的なテーブルロックは要求されません。
手順1:ファイルを使用してパブリケーションテーブルにALTER TABLEステートメントを提供する場合は、テキストファイルを準備します。 xDBレプリケーションコンソールを開くオペレーティングシステムアカウントでこのテキストファイルにアクセスできることを確認してください。
または、ファイルにステートメントを保存せずに、コピーして貼り付けるか、 ALTER TABLEステートメントを[パブリケーションテーブルの変更]ダイアログボックスに直接入力できます。
ステップ2:変更するテーブルを含むパブリケーションの親であるノードを持つパブリケーションサーバーが実行中であり、使用しているxDBレプリケーションコンソールに登録されていることを確認します。パブリケーションサーバーの起動と登録の手順については、セクション5.2.1を参照してください。
ステップ3:シングルマスターレプリケーションシステムのパブリケーションデータベースの下、またはマルチマスターレプリケーションシステムのマスター定義ノードの下で、テーブルのテーブルノードのセカンダリマウスボタンをクリックしてパブリケーションテーブルの変更ダイアログボックスを開きます。変更して、テーブルの変更を選択します。
pub_alter_table_dialog_box_1
ステップ4: [パブリケーションテーブルの変更]ダイアログボックスで、 ALTER TABLEステートメントをテキストファイルに保存した場合、[DDLスクリプトファイル]オプションが選択されていることを確認し、このファイルを参照して[OK]ボタンをクリックします。
pub_alter_table_dialog_box_2a
または、 ALTER TABLEステートメントを直接入力する場合は、DDLスクリプトファイルオプションではなくDDLスクリプトオプションを選択します。ソースからALTER TABLEステートメントを直接入力するか、コピーしてテキストボックスに貼り付けます。 OKボタンをクリックします。
pub_alter_table_dialog_box_2b
ステップ5: DDL replicated successfullyメッセージボックスが表示されたら、DDLの変更はすべてのデータベースで成功しました。 OKボタンをクリックします。
pub_alter_table_dialog_box_3
•
ALTER TABLEステートメントの変更は、レプリケーションシステムの各データベースのターゲットテーブルに正常に適用されましたか?
•
トリガーベースの方法の場合 、 ALTER TABLEステートメントを説明するために、レプリケーションシステムの各データベースの_edb_replicator_pubスキーマにあるシャドウテーブル RRST_ schema _ table変更されましたか?
更新の1つが新しい行の挿入であり、この新しい行がすでにオフラインスナップショットからロードされたターゲットテーブルにある場合、パブリケーションサーバーがこのための INSERTステートメントを含むバッチを適用しようとすると、重複キーエラーが発生します行。重複キーエラーにより、バッチ全体が強制的にロールバックされます。これにより、まだターゲットテーブルに引き継がれていない可能性があるバッチ内の更新が除外されます。ターゲット表に適用されていないソース表に更新があったため、ソース表とターゲット表は一貫性がなくなりました。
注:バッチ内のUPDATEおよびDELETEステートメントを、これらの更新によって既に変更されているターゲットテーブルに適用する効果は、 INSERTステートメントの繰り返しの適用と同じ問題を引き起こしません。 UPDATEステートメントは、行を同じ値に2回変更するだけです。 DELETEステートメントが行に影響しない場合、これはデータベースサーバーによってエラーと見なされないため、バッチのロールバックは発生しません。
batchInitialSync第1の同期レプリケーションは、バッチまたは非バッチモードで発生するかどうかの設定オプションを制御します。
注:オフラインスナップショットを使用して、ログベースの方法を使用するアクティブなレプリケーションシステムにサブスクリプションまたはマスターノードを追加することはできません。ログベースの方法の場合、オフラインスナップショットは、システムの初期構成にのみ使用でき、パブリケーションデータベースまたはマスターノードがトランザクションをアクティブに受信した後、追加のノードで更新することはできません。
注:これらのオプションは、パブリケーションサーバーにのみ適用されます。
offlineSnapshotオプションがに設定されなければならないtrueシングルマスタレプリケーションシステムのサブスクリプションを作成する前に、またはマルチマスター・レプリケーション・システムのマスターノードを追加する前に。
デフォルト値は falseです。
trueに設定すると、サブスクリプションがシングルマスターレプリケーションシステムで定義されている場合、サブスクリプションテーブル定義を作成して外部ソースからロードすると想定されるため、 offlineSnapshotオプションはサブスクリプションスキーマとテーブル定義の通常の作成を防ぎます出版物以外。
場合 offlineSnapshotに設定されているtrue 、これはカラムに設定することにより制御スキーマ内直接影響有するhas_initial_snapshot値をO列で表されるターゲットサブスクリプションまたはマスターノードのために使用されるオフラインスナップショットを示しています。列has_initial_snapshotは、シングルマスター複製システムの場合はテーブルxdb_mmr_pub_groupに、マルチマスター複製システムのhas_initial_snapshotはテーブルxdb_publication_subscriptions設定されます。
has_initial_snapshot の設定は 、次のセクションで説明するように、 batchInitialSyncオプションの動作に影響します。
batchInitialSyncオプションはオフラインスナップショットからターゲット表をロードした後最初の同期は、バッチモード(デフォルト)または非バッチモードで行われているかどうかを制御するために使用されます。
非バッチモードで同期レプリケーションを実行するには、 batchInitialSyncオプションをfalseに設定します。
offlineSnapshot設定オプションは、最初に設定されていなければならないtrue前にサブスクリプションを作成したり、追加のマスターノードを追加します。非バッチモード同期は、 batchInitialSyncがfalseあり、コントロールスキーマのhas_initial_snapshot列がofflineSnapshotオプションの説明offlineSnapshot O値に設定されている場合にofflineSnapshotます。
デフォルト値は trueです。
ステップ1:パブリケーションサーバーを登録し、パブリケーションデータベース定義を追加し、セクション5.2の説明に従ってパブリケーションを作成します。
ステップ2:サブスクリプションサーバーを登録し、セクション5.3.1および5.3.2でそれぞれ説明されているように、サブスクリプションデータベース定義を追加します。
注:サブスクリプションを作成する前に、ステップ3および4を実行する必要があります。オフラインスナップショットから追加のサブスクリプションを作成するたびに、手順3〜9を繰り返すことができます。
手順3:これらのオプションが以下で説明するように設定されていない場合、パブリケーションサーバーの構成ファイルを変更します。
•
offlineSnapshotオプションをtrue 変更しtrue 。パブリケーションサーバーを再起動すると、 offlineSnapshotをtrue設定すると、1)サブスクリプションを作成しても、既定の設定で行われるようにサブスクリプションデータベースにスキーマとサブスクリプションテーブルの定義が作成されません。オフラインスナップショットを示すコントロールスキーマの列は、このサブスクリプションの読み込みに使用されます。
•
セクション7.9.1の最後で説明したように、 batchInitialSyncオプションを特定の状況に適した設定に設定します。
ステップ4:パブリケーションサーバーの構成ファイルがステップ3で変更された場合、パブリケーションサーバーを再起動します。パブリケーションサーバーを再起動する方法については、セクション5.2.1を参照してください。
手順5:サブスクリプションデータベースで、スキーマ、サブスクリプションテーブル定義を作成し、オフラインデータソースからサブスクリプションテーブルを読み込みます。セクション5.3.2で使用されるサブスクリプションデータベースのユーザー名には、この手順で作成されたデータベースオブジェクトに対する完全な権限が必要です。また、ターゲット定義を手動で作成するときにこれらの同じ規則に従う必要があるため、xDB Replication Serverが各データベースタイプのパブリケーションからサブスクリプション定義を作成する方法に関する規則に関するセクション5.3.2の冒頭を確認してください。
ステップ6:セクション5.3.3の説明に従って、サブスクリプションを追加します。
ステップ7:オンデマンド同期レプリケーションを実行します。オンデマンド同期レプリケーションの実行方法については、セクション5.4.2を参照してください。
ステップ8:あなたはこの時点では、オフラインのスナップショットを使用して、他のサブスクリプションをロードする予定がない場合は、変更offlineSnapshotにオプションのバックfalseとbatchInitialSyncにオプションtrueパブリケーションサーバーの設定ファイルのを。
ステップ9:ステップ8でパブリケーションサーバーの構成ファイルを変更した場合は、パブリケーションサーバーを再起動します。
オフラインスナップショットを使用して、マルチマスターレプリケーションシステムのマスターノードを最初にロードできます。セクション 6.3で 説明されているようにマスターノードを定義する場合、またはセクション6.5.1で説明されているオンデマンドスナップショットを使用する場合、xDB Replication Serverスナップショットレプリケーション機能を使用して一部のマスターノードをロードできますが、他のマスターノードはロードできますオフラインスナップショットから。
注:アクティブに使用されているマルチマスターレプリケーションシステムでは、オフラインスナップショットはサポートされていません。アクティブなマスターノードでの変更は、別のノードのデータをダンプまたは復元するオフラインスナップショットプロセス中に失われます。
手順1:パブリケーションサーバーを登録し、マスター定義ノードを追加して、セクション6.2の説明に従ってパブリケーションを作成します。
注:オフラインスナップショットによってロードされるマスターノードを追加する前に、次の手順を実行する必要があります。オフラインスナップショットから追加のマスターノードを作成するたびに、手順2〜10を繰り返すことができます。
手順2:複製システムにスケジュールが定義されていないことを確認します。定義されていない場合は、次の手順の実行中にスケジュールを削除します。スケジュールを削除する方法については、セクション7.3.2を参照してください。
手順3:これらのオプションが以下で説明するように設定されていない場合、パブリケーションサーバーの構成ファイルを変更します。
•
offlineSnapshotオプションをtrue 変更しtrue 。パブリケーションサーバーを再起動すると、 offlineSnapshotをtrue設定すると、マスターノードを追加すると、コントロールスキーマの列が設定され、このマスターノードの読み込みにオフラインスナップショットが使用されることが示されます。
•
セクション7.9.1の最後で説明したように、 batchInitialSyncオプションを特定の状況に適した設定に設定します。
ステップ4:パブリケーションサーバーの構成ファイルがステップ3で変更された場合、パブリケーションサーバーを再起動します。パブリケーションサーバーを再起動する方法については、セクション5.2.1を参照してください。
手順5:新しいマスターノードとして使用するデータベースで、スキーマ、テーブル定義を作成し、オフラインデータソースからテーブルを読み込みます。
手順6:セクション6.3の説明に従って、[公開スキーマの複製]および[初期スナップショットの実行]チェックボックスをオフにして、マスターノードを追加します。
ステップ7:初期オンデマンド同期を実行します。オンデマンド同期の実行方法については、セクション6.5.2を参照してください。
ステップ8:あなたはこの時点では、オフラインのスナップショットを使用して、他のマスター・ノードをロードする予定がない場合は、変更offlineSnapshotにオプションのバックfalseとbatchInitialSyncにオプションtrueパブリケーションサーバーの設定ファイルのを。
ステップ9:ステップ8でパブリケーションサーバーの構成ファイルを変更した場合は、パブリケーションサーバーを再起動します。
ステップ10:ステップ2でスケジュールが削除された場合、スケジュールを再度追加します。スケジュールの作成方法については、セクション7.2を参照してください。
Advanced Serverを使用している場合、 CREATE TABLE文を使用して、 Oracleデータベースと互換性のあるパーティション構文を使用してパーティション表を作成できます。 Oracleデータベースと互換性のあるパーティションの詳細については、次の場所にあるEnterpriseDB Webサイトから入手可能な 『 EDB Postgres Advanced Server 10.0データベース互換性Oracle開発者ガイド 』の第10章「テーブルパーティション」を参照してください。
PostgreSQLまたはAdvanced Serverのバージョン10以降を使用している場合、 宣言的なパーティション分割を使用してパーティションテーブルを作成できます。宣言的なパーティションテーブルを作成するためのCREATE TABLE構文は、Oracleデータベースと互換性のあるパーティションに似ていますが、宣言的なパーティションテーブルの個々のパーティションは、独自のCREATE TABLEステートメントで個別に作成する必要があります。
ネイティブのPostgreSQLバージョン9.6以前を使用している場合、最初に親テーブルを作成し、次に親の列を継承する1つ以上の子テーブルを作成するテーブル継承 と呼ばれる手法を使用する必要があります 。各子は、親の列定義を含むことを除いて、それ自体が独立した表です。次に、親テーブルでトリガーを定義して、挿入された行をどの子テーブルに保存するかを指示します。テーブル継承はAdvanced Serverでも使用できます。
このドキュメント全体で例として使用されるempテーブルには、3つのパーティション化テクニックがすべて示されています。パーティションテーブルは、次のセクションのマルチマスターレプリケーションシステムのパブリケーションで使用されます。
注: xDB Replication Serverを使用して複製される宣言パーティションテーブルを作成する場合、 PRIMARY KEY制約は、パーティション化される親テーブルのCREATE TABLEステートメントではなく、個々のパーティションのCREATE TABLEステートメントに含まれている必要があります。
SELECTステートメントでテーブル名にアスタリスクを追加して親テーブル emp 照会すると、親テーブルと子テーブルの行が表示されます。これは、アスタリスクが省略された場合のデフォルトの動作です。
次のクエリは、子テーブル間で行が物理的にどのように分割されるかを示しています。 ONLYキーワードを使用すると、 SELECTステートメントの指定されたテーブルにのみ行が作成され、その子からは作成されません。
セクション 7.10.2は、Oracleデータベースと互換性のあるパーティションを使用する場合、またはPostgres 10以降のデータベースサーバーで宣言パーティションを使用する場合のパブリケーションの作成を示しています。
6.2 項の指示に従って、パーティション化された表を含むパブリケーションとともにマスター定義ノードを作成します。 (シングルマスターレプリケーションシステムの場合、セクション5.2の指示に従って、パブリケーションとともにパブリケーションデータベースを作成します。)
セクション 6.3で 説明されているように、追加のマスターノードを作成します 。 (シングルマスターレプリケーションシステムの場合、セクション5.3の指示に従ってサブスクリプションデータベースとサブスクリプションを作成します。)
注:テーブルの継承を使用している場合、Postgres 10以降のデータベースサーバーでパブリケーションを作成する場合でも、セクション7.10.1で説明されているプロセスを使用する必要があります。
6.2 項の指示に従って、パーティション化された表を含むパブリケーションとともにマスター定義ノードを作成します。 (シングルマスターレプリケーションシステムの場合、セクション5.2の指示に従って、パブリケーションとともにパブリケーションデータベースを作成します。)
セクション 6.3で 説明されているように、追加のマスターノードを作成します 。 (シングルマスターレプリケーションシステムの場合、セクション5.3の指示に従ってサブスクリプションデータベースとサブスクリプションを作成します。)
注: SSL接続は、xDB Replication ConsoleまたはxDB Replication Serverコマンドラインインターフェースからは使用されません。 xDBユーザーインターフェイスは、パブリケーションサーバーおよびサブスクリプションサーバーと通信し、パブリケーション/サブスクリプションデータベースまたはマスターノードに接続します。
注: SSLを使用したMigration Toolkit接続は、パブリケーションサーバーとサブスクリプションサーバーのSSL接続のコンテキスト内で発生します。したがって、Migration Toolkit SSL接続に対して実行する必要のある個別の手順はありません。
Java トラストストアは、Javaクライアント(パブリケーションサーバーおよびサブスクリプションサーバー)がSSL接続を開始するサーバーの信頼性を検証するために使用する認証局(CA)証明書を含むファイルです。
Java キーストアは、秘密鍵と公開鍵、およびそれらに対応する証明書を含むファイルです。キーストアは、xDB Replication Server SSL接続に使用されるサーバーへのクライアント認証に必要です。
ステップ1:証明書署名要求(CSR)を作成します。
次の例では、生成された証明書署名要求ファイルは server.csrです。秘密鍵は、ファイルserver.keyとして生成されます。
注:証明書を作成する場合、共通名フィールド(この例ではCN=enterprisedbとして指定)に指定する値は、定義時に使用する[データベースの追加]または[データベースの更新]ダイアログボックスの[ユーザー]フィールドで指定するデータベースユーザー名である必要がありますパブリケーションデータベース(セクション5.2.2を参照)、サブスクリプションデータベース(セクション5.3.2を参照)、またはマスターノード(セクション6.2.2および6.3を参照)。
あるいは、 pg_ident.confファイルで定義されているユーザー名マップを使用して、共通名とデータベースユーザー名の柔軟性を高めることができます。手順8および9では、ユーザー名マップの使用について説明します。
ステップ2:自己署名証明書を生成します。
以下は 、証明書署名要求ファイルserver.csrと秘密鍵server.keyを入力として使用して、 ファイル server.crt 自己署名証明書を生成します。
ステップ3:ルート認証局(CA)ファイル( root.crt )として使用するサーバー証明書( server.crt )のコピーを作成します。
ステップ4:現在冗長な証明書署名要求( server.csr )を削除します。
ステップ5:証明書と秘密鍵ファイルをPostgresデータベースサーバーのデータディレクトリPOSTGRES_INSTALL_HOME /data移動またはコピーし/data 。
ステップ6:証明書ファイルと秘密鍵ファイルにファイルの所有権と許可を設定します。
Postgresデータベースサーバーのdataサブディレクトリを所有するオペレーティングシステムアカウントに所有権を設定します。これは、Postgresデータベースサーバーのインストール時に選択したインストールモード(Oracle互換またはPostgreSQL互換)に応じてenterprisedbまたはpostgresいずれかenterprisedb 。
ステップ7: postgresql.confファイルで、次の変更を行います。
ステップ8: pg_hba.confファイルを変更して、目的のパブリケーション、サブスクリプション、またはマスターノードデータベースでSSLの使用を有効にします。
内 pg_hba.confファイル、 hostsslタイプは、エントリがクライアント(公開サーバと加入サーバ)から検証SSL接続試行に使用されていることを示します。
認証方法は 、証明書の共通名(この例ではenterprisedb )を使用して認証が実行されるクライアントからのSSL証明書を要求するために、オプションclientcert=1でcert 設定されます。
map=sslusersのオプションは、名前のマッピングというsslusersで定義されているpg_ident.confファイルには、認証のために使用されるべきです。このマッピングにより、証明書の共通名と接続を試行するデータベースユーザー名がpg_ident.confファイルにリストされているSYSTEM-USERNAME/PG-USERNAMEペアと一致する場合、データベースへの接続が許可されます。
以下は、パブリケーションおよびサブスクリプションデータベース( edbおよびsubnode )がSSL接続を使用する必要がある場合のpg_hba.confファイルの設定の例です 。
ステップ9:以下は、 map=sslusersオプションによるpg_hba.confファイルに関連するpg_ident.confファイル内のユーザー名マップを示しています。これらのユーザー名マップを使用すると、xDBレプリケーションコンソールでパブリケーション、サブスクリプション、またはマスターノードデータベースを追加するときに、[データベースの追加]または[データベースの更新]ダイアログボックスの[ユーザー]フィールドでデータベースユーザー名pubuser 、 subuser 、 mmruser 、またはenterprisedbを指定できます。
手順10: Postgres構成ファイルに変更を加えた後、Postgresデータベースサーバーを再起動します。
手順1: Postgresデータベースサーバーのdataサブディレクトリにあるserver.crtファイルとserver.keyファイルを使用して、これらのファイルのコピーを作成し、パブリケーションサーバーとサブスクリプションサーバーが実行されているホストに移動します。
この例では、ファイル xdb.crtがserver.crtコピーであり、 xdb.keyがserver.keyコピーであるとxdb.key server.key 。
ステップ2: xdb.crtコピーを作成します。
ステップ3:ファイルxdb_root.crt Distinguished Encoding Rules(DER)形式を作成します。このファイルの生成されたDER形式はxdb_root.crt.derです。次のステップのkeytoolプログラムでは、ファイルのDER形式が必要です。
ステップ4:使用keytoolキーストアファイル(作成するためのプログラムxdb.keystore使用) xdb_root.crt.der入力としてを。このプロセスにより、Postgresデータベースサーバーの証明書がキーストアファイルに追加されます。
keytoolプログラムは、下にありますbinのJava Runtime Environmentのインストールのサブディレクトリ。
ステップ5:前のステップで指定された新しいパスワードの暗号化された形式を生成します。
暗号化されたパスワードは 、パブリケーションサーバーSSL接続用のパブリケーションサーバー構成ファイルと、サブスクリプションサーバーSSL接続用のサブスクリプションサーバー構成ファイルの sslTrustStorePassword構成オプションで指定する必要があります 。 (パブリケーションサーバーとサブスクリプションサーバーの構成ファイルについては、セクション10.4.1を参照してください。)
xDB Replication Server CLIの encryptコマンドを使用してパスワードを encrypt ます 。次の例は、ファイルinfile含まれるパスワードを暗号化するこのプロセスを示しています。
ステップ6:ファイルxdb.crtおよびxdb.keyを入力として使用して、キーストアファイル( xdb_pkcs.p12 )のPKCS#12形式を作成します。
ステップ7:前のステップで指定した新しいパスワードの暗号化された形式を生成し、
暗号化されたパスワードは 、パブリケーションサーバーSSL接続用のパブリケーションサーバー構成ファイルおよびサブスクリプションサーバーSSL接続用のサブスクリプションサーバー構成ファイルの sslKeyStorePassword構成オプションで指定する必要があります 。
手順8:ファイルxdb.keystoreとxdb_pkcs.p12を、パブリケーションサーバーとサブスクリプションサーバーがアクセスするディレクトリの場所にコピーします。
ステップ9:パブリケーションサーバーとサブスクリプションサーバーの設定ファイルでは、ファイルの場所を設定xdb.keystoreしてsslTrustStoreオプションとファイルの場所xdb_pkcs.p12とsslKeyStoreオプション。
暗号化された sslTrustStorePasswordは、手順4でkeytoolプログラムに指定された後、手順5から取得されます。
暗号化された sslKeyStorePasswordは、ステップ6でopenssl pkcs12プログラムに指定された後、ステップ7から取得されます。
セクション 7.11.4には、SSL接続用のパブリケーションサーバーとサブスクリプションサーバーの構成オプションの概要が含まれています。
ステップ10:パブリケーションサーバーとサブスクリプションサーバーを再起動します。
•
シングルマスターレプリケーションシステムでSSL接続を使用するには、パブリケーションデータベースのセクション 5.2.2およびサブスクリプションデータベースのセクション5.3.2に示すように、URLオプションを指定する必要があります。
•
マルチマスター複製システムでSSL接続を使用するには、マスター定義ノードについてはセクション 6.2.2に、非MDNノードについてはセクション6.3に示すように、URLオプションを指定する必要があります 。
pubserver_add_database_dialog_box_ssl
注: xDB Replication ServerデータベースへのSSL接続を使用したくない場合は、[データベースの追加]または[データベースの更新]ダイアログボックスの[URLオプション]フィールドからssl=trueテキストを完全に削除する必要があります。 trueをfalse変更するだけでは、SSLオプションを無効にする効果はありません。
sslTrustStoreTypeオプションは、トラストストア・フォーマットを指定します。このオプションをクライアントのJavaトラストストア形式に設定します。
sslTrustStoreType= truststore_format
デフォルト値 truststore_formatあるjks JKSトラストストア・ファイル・フォーマットのために。
トラストストアの一般的なデフォルトの場所は、 cacertsという名前のファイルのディレクトリ JAVA_HOME /jre/lib/securityまたはJAVA_HOME /lib/securityです。 ( JAVA_HOMEはJavaインストールディレクトリです。)
sslTrustStore = truststore_file
xDB Replication Server CLIの encryptコマンド(セクション8.3.4を参照) を使用してJavaシステムのトラストストアのパスワードを暗号化し、 sslTrustStorePasswordオプションで暗号化されたパスワードを指定します。
sslTrustStorePassword = encrypted_password
sslKeyStoreTypeオプションは、キーストアのフォーマットを指定します。このオプションをクライアントのJavaキーストア形式に設定します。
sslKeyStoreType= keystore_format
keystore_format のデフォルト値は、PKCS#12キーストアファイル形式のpkcs12です。
sslKeyStore = keystore_file
xDB Replication Server CLIの encryptコマンド(セクション8.3.4を参照) を使用してJavaシステムキーストアのパスワードを暗号化し、 sslKeyStorePasswordオプションで暗号化されたパスワードを指定します。
sslKeyStorePassword = encrypted_password
この章では、xDB Replication Serverコマンドラインインターフェイス(CLI) の構文と使用方法について説明します 。このユーティリティプログラムは、xDBレプリケーションコンソールに代わるコマンドライン駆動型です。
xDB Replication Server CLI を使用してレプリケーションシステムを作成する手順は 、xDB Replication Consoleを使用する場合に必要な手順と同じです。レプリケーションシステムの論理コンポーネントは、xDBレプリケーションコンソールでレプリケーションシステムを作成するときと同じ属性セットで、同じ順序で作成する必要があります。
xDB Replication Server CLIを使用してレプリケーションシステムを構築する前に、第 2 章 、および第5 章 (シングルマスターレプリケーションの場合)または6 (マルチマスターレプリケーションの場合)に示されている概念と手順を理解する必要があり ます 。
xDB Replication ConsoleとxDB Replication Server CLIの 両方を使用して同じ複製システムを構築および管理することに制限はありません 。
セクション 8.3では、個別に実行される各xDB Replication Server CLIコマンドの構文と例が示されています 。該当する場合、コマンドの説明には、影響を受けるコンポーネントとその属性の詳細な説明が記載されているxDB Replication Consoleのカウンターパートへの参照が含まれています。
xDB Replication Serverのインストール時にxDB Replication Consoleコンポーネントが選択されている場合、 xDB Replication Server CLIが含まれています 。 xDB Replication Server CLIは、ディレクトリXDB_HOME /binあるJavaアプリケーションです。
手順1:第3章に記載されているインストール手順に従って、xDB Replication Serverをインストールします。
ステップ2:節で与えられた前提条件の手順に従って、 5.1シングルマスタレプリケーションシステム用や、セクション6.1マルチマスタ複製システムのために。
ステップ3:次の説明に従って、Javaランタイム環境を設定します。
xDB Replication Server CLIを実行するホスト上に、Javaランタイム環境( JRE )が存在し、xDBの実行に使用されるオペレーティングシステムユーザー名のパスにJavaランタイムbinディレクトリが含まれている必要があります。 Replication Server CLI 。
xDBスタートアップ構成ファイル xdbReplicationServer- xx .configには、xDB Replication Serverのインストール中に検出されたJREランタイムプログラムのパスが含まれています。以下は、xDBスタートアップコンフィギュレーションファイルの例です(このファイルの場所については、セクション3.5を参照してください)。
Windowsシステムでは、マイコンピュータの[プロパティ]ダイアログボックスを開き、[システムの詳細設定]を選択して、[環境変数]をクリックします。 Pathシステム環境変数を編集して 、Javaランタイム環境のbinディレクトリを含めます。または、次の例のようにコマンドプロンプトウィンドウを開いたときに、現在のセッションだけのパスを設定できます。
xDB Replication Consoleを実行できる任意のホストからxDB Replication Server CLIを実行できます。 xDB Replication Server CLIは、 javaランタイムプログラムを実行し、 javaプログラムに次の引数を指定することにより実行されます。
•
xDB Replication Server CLI jarファイルedb-repcli.jar
•
xDB Replication Server CLIコマンド
Java jarファイル edb-repcli.jarは、ディレクトリXDB_HOME /binます。
各xDB Replication Server CLIコマンドの一般的な構文は次のとおりです。
- command [{ pubname | subname } ...]
[- parameter [ value ] ...] ...
上記の構文図では、 commandはxDB Replication Server CLIコマンドの名前です。コマンド名の前には、ハイフン文字(-)を付ける必要があります。コマンドがパブリケーションに作用する場合、 pubnameで表されるpubnameが指定されます。コマンドがサブスクリプションに作用する場合、 subnameで表されるサブスクリプション名が指定されます。特定のコマンドでは、複数のパブリケーション名または複数のサブスクリプション名を指定できます。
java -jar XDB_HOME /bin/edb-repcli.jar
- command [{ pubname | subname } ...]
[- parameter [ value ] ...] ...
注: Enterキーを押す前にオペレーティングシステムの継続文字(たとえば、Linuxではバックスラッシュ文字(\)、Windowsではキャレット文字(^))を入力すると、次の物理行にコマンドを継続できます。
あなたはXDB実行する場合にReplication ServerのCLIを helpコマンド、XDB Replication ServerのCLIは、すべてのコマンドの構文の概要が一覧表示されます。
helpコマンドの詳細については、 セクション 8.3.1を参照してください。
このセクションでは、多くのコマンドで必要とされるrepsvrfileという名前のrepsvrfile Replication Server CLIパラメーターの構文と使用法について説明します 。パラメータrepsvrfile使用は、xDB Replication Consoleでパブリケーションサーバーまたはサブスクリプションサーバーを登録するプロセスと同等のxDB Replication Server CLIです。
セクション 5.2.1は複製システムを構築する最初のステップが出版サーバーを登録することである方法について議論します 。 xDBレプリケーションコンソールでは、登録されたパブリケーションサーバーがレプリケーションツリーのノードとして表示されます。 Publication Serverノードは、レプリケーションシステムの他の論理コンポーネントを追加できるコンテキストを提供します。
xDB Replication Server CLI を使用する場合 、レプリケーションシステムの他の論理コンポーネントを関連付けるために使用できるレプリケーションツリーイメージはありません。代わりに、パブリケーションサーバーまたはサブスクリプションサーバーのコンテキストを必要とするxDB Replication Server CLIコマンドを実行するときは、 repsvrfileパラメーターを使用してパブリケーションサーバーのログイン情報またはサブスクリプションサーバーのログイン情報を指定する必要があります。
repsvrfileパラメータは、その値として使用したいというパブリケーションサーバーインスタンスまたはサブスクリプションサーバーインスタンスのいずれかのログイン情報を含むテキストファイルへのパスを取ります。 repsvrfileパラメーターを含む一般的なxDB Replication Server CLIコマンド構文を次の図に示します。
- command [{ pubname | subname } ...]
[- parameter [ value ] ...] ...
[-repsvrfile repsvrfile ]
[- parameter [ value ] ...] ...
XDB Replication ServerのCLIコマンドが表され実行されるcommand 。必要な場合は、パブリケーション名は、で表さpubnameで表現またはサブスクリプションの名前subname次に指定されています。パブリケーションサーバーまたはサブスクリプションサーバーのログイン情報を含むテキストファイルへのパスは、 repsvrfile で表され repsvrfile 。 command使用されるパラメーターとその値は、 parameterとvalue示されparameter 。
-repsvrfile repsvrfile 、および- parameterとその値が指定されるコマンドラインの順序は重要ではありません。たとえば、 -repsvrfile repsvrfileは、コマンドラインの最初のパラメーター、コマンドラインの最後のパラメーター、または他のパラメーターの間に指定できます。
以下は、パブリケーションサーバーのrepsvrfile 例です 。
次に 、サブスクリプションサーバーのrepsvrfile 例を repsvrfileます。
ファイルで、次のフィールドの値を パブリケーションサーバーまたはサブスクリプションサーバー の値に置き換えてください 。
•
•
港
これは、 xDBレプリケーションコンソールを使用している場合に、 パブリケーションサーバーまたはサブスクリプションサーバー を登録するために必要な情報と同じです 。 出版サーバーの登録に関する追加情報に関してセクション5.2.1を見てください。サブスクリプションサーバーの登録については、セクション5.3.1を参照してください。
次の例は、 printpublistコマンドとともにrepsvrfileパラメーターがどのように使用されるかを示して repsvrfileます。
xDB Replication Server CLIを使用する場合、ユーザー名とパスワードを含む特定の情報を保存するためにテキストファイルが使用されます。例は、 repsvrfileパラメーターで使用されるパブリケーションサーバーとサブスクリプションサーバーのログイン情報を含むファイルです。
パラメーター repsvrfileで指定されたファイルでは、 passwordフィールドを暗号化された形式のパスワードに設定する必要があります。暗号化されたパスワードを使用すると、ファイルが何らかの形で侵害された場合に、権限のない人がuserとpassword値を使用してパブリケーションサーバーまたはサブスクリプションサーバーにアクセスすることを防ぎます。 (暗号化されたパスワードを使用して、xDBレプリケーションコンソールのダイアログボックスからパブリケーションサーバーまたはサブスクリプションサーバーにアクセスすることはできません。)
encryptコマンドを使用してencryptされたパスワードを生成する方法については、セクション 8.3.4を参照してください 。
paramfileコマンドは、テキストファイルに符号化されたXDB Replication ServerのCLIコマンドとそのパラメータを実行することができます。この手法は、繰り返し実行するためにコマンドとそのパラメーターを保存する場合に役立ちます。
paramfile を実行するための構文は次のとおりです。
java -jar XDB_HOME /bin/edb-repcli.jar
-paramfile cmdparamfile
テキストファイルcmdparamfileコード化されたxDB Replication Server CLIコマンドとそのパラメーターの構文は 、次のようにコマンドラインプロンプトで指定した場合と同じです。
- command [{ pubname | subname } ...]
[- parameter [ value ] ...] ...
[-repsvrfile repsvrfile ]
[- parameter [ value ] ...] ...
paramfileコマンドの使用には、次の制限があります。
•
パラメーターファイルcmdparamfileコーディングできるxDB Replication Server CLIコマンドは1つだけです。
•
xDB Replication Server CLIコマンドで使用されるパラメーターは、すべてcmdparamfileに含まれている必要があります 。一部のパラメーターをcmdparamfileして、コマンドラインで他のパラメーターを指定することはできません。
次の例では、 addpubdb_advsvrという名前のパラメーターファイルを使用してAdvanced Serverパブリケーションデータベース定義を作成し ます 。
Windowsの場合のみ: -repsvrfileディレクトリパスは、スラッシュ文字またはバックスラッシュ文字で指定できます。ディレクトリ名にスペース文字が含まれる場合は、ディレクトリパス全体を二重引用符で囲みます。
注: xDB Replication Server CLIコマンドとそのパラメーターをコマンドラインプロンプトで直接入力するのとは異なり、テキストファイルにコーディングする場合、次の行に進むために継続文字は必要ありません。
以下は、 paramfileコマンドの実行を示しています 。
終了ステータス 0は、実行が成功したことを示します。ゼロ以外の終了ステータスは、障害が発生したことを示します。
Linuxのみ:環境変数、 $? 、終了ステータスが含まれます。
次の例は、 8.2.5項で説明するaddpubdb_advsvrパラメータ・ファイルに含まれるaddpubdbコマンドの正常実行時の終了ステータス0 示しています。
Windowsの場合のみ:環境変数%ERRORLEVEL%には、終了ステータスが含まれます。
注:このセクションで説明するほとんどのコマンドは、シングルマスターとマルチマスターの両方のレプリケーションシステムに適用されますが、シングルマスターレプリケーションシステムにのみ適用されるコマンドには、 For SMRのみが記載されています。マルチマスター複製システムにのみ適用されるコマンドは、 For MMRのみで示されています。同じ表記法は、シングルマスター複製システムまたはマルチマスター複製システムにのみ適用されるコマンドパラメーターにも使用されます。
このセクションで使用例については、XDBことが想定され 、あなたが行った後にReplication ServerのCLIコマンドが実行されXDB_HOME /bin 、それによっての完全なパスを指定する必要がなくなり、あなたの現在の作業ディレクトリXDB_HOME /binそれぞれ実行するためにedb-repcli.jarファイル。たとえば、xDB Replication Serverがデフォルトのインストールディレクトリにインストールされていると仮定すると、Linuxで次のコマンドを発行しました。
例にrepsvrfileパラメーターが表示されるたびに 、ファイル~/pubsvrfileにはパブリケーションサーバーのログイン情報が含まれ、ユーザーのホームディレクトリにありますが、 ~/subsvrfileにはサブスクリプションサーバーのログイン情報が含まれます。 Windowsの場合、同等の使用法は%HOMEPATH%\pubsvrfileおよび%HOMEPATH%\subsvrfileです。
このセクションの例はLinuxで実行されたので、Linux継続文字(バックスラッシュ(\))を使用して、xDB Replication Server CLIコマンドを次の行に継続する方法を示します。端末ウィンドウでテキストをラップします。 Windowsの場合、Windows継続文字を使用します。これはキャレット(^)です。
helpコマンドは、すべてのXDB Replication ServerのCLIコマンドの構文の要約を提供します。
例
versionコマンドは、XDB Replication ServerのCLIのバージョン番号を提供します。
例
repversionコマンドは、XDB レプリケーションServerのバージョン番号を提供します。
パブリケーションサーバーのログイン情報を含むファイル 。
例
encryptコマンドは、入力ファイルで提供されたテキストを暗号化し、指定した出力ファイルに暗号化された結果を書き込みます。 encryptコマンドを使用して、ユーザー名とユーザーのパスワードを必要とするxDB Replication Server CLIコマンドによって参照されるテキストファイルにコピーできる暗号化されたパスワードを生成します。
-encrypt –input infile –output pwdfile
infile のテキストはMD5暗号化アルゴリズムを使用して処理され、暗号化されたテキストはファイルpwdfile書き込まれます。 infileは暗号化するテキストのみが含まれ、暗号化するテキストの前またはテキストの後に余分な文字や空行がないことを確認してください。
例
ファイル infileには「パスワード」という単語が含まれています。
次に、 encryptコマンドが実行され、 pwdfileという名前のファイルが生成されます。
ファイル pwdfile の内容には、暗号化された形式の「パスワード」が含まれています。
uptimeのコマンドは、パブリケーションサーバーが完全に起動してからの時間間隔を出力します。
-uptime -repsvrfile pubsvrfile
パブリケーションサーバーのログイン情報を含むファイル 。
例
addpubdbコマンドは、パブリケーションデータベースの定義を追加します。
-repsvrfile pubsvrfile
-dbhost host
-dbport port
-dbuser user
{-dbpassword encrypted_pwd | -dbpassfile pwdfile }
-database dbname
[-urloptions jdbc_url_parameters ]
[-filterrule filterid_1 [、 filterid_2 ] ...]
[-nodepriority priority_level ]
addpubdbコマンドは、新しいパブリケーションデータベース定義を作成します。 addpubdbコマンドは、新しく作成されたパブリケーションデータベース定義に割り当てられた一意のパブリケーションデータベースIDを表示します。パブリケーションデータベースIDは、他のxDB Replication Server CLIコマンドの実行時に操作するパブリケーションデータベース定義を識別するために使用されます。
シングルマスターレプリケーションシステムのパブリケーションデータベース定義を追加するときに提供する必要があるデータベース接続情報の詳細については、 セクション 5.2.2を参照してください。マルチマスター複製システムについては、セクション6.2.2および6.3を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
データベースがOracleデータベースの場合は、 oracle 指定します。データベースがOracle互換構成モードのAdvanced Serverデータベースである場合、 enterprisedb指定します。データベースがPostgreSQLデータベースまたはPostgreSQL互換構成モードのAdvanced Serverデータベースである場合、 postgresql指定します。データベースがMicrosoft SQL Serverデータベースの場合、 sqlserver指定します。
データベースサーバーが接続を待機しているポート番号 。
databaseパラメータでパブリケーションデータベースを識別するためにOracleシステムID(SID)が使用される場合は、 sid 指定します。 databaseパラメータでパブリケーションデータベースを識別するためにOracleサービス名が使用される場合は、 servicename指定します。 注: Oracle 12cの場合、サービス名を使用します。
MMRのみ:非MDNノードに適用されます。新しいマスターノードの対応するテーブルで有効にするために使用可能なテーブルフィルターのセットからフィルタールールを識別するフィルターIDのカンマ区切りリスト。 printpubfilterslistコマンドを使用して、 printpubfilterslist使用可能なフィルタールールのフィルターIDを取得します(セクション8.3.17を参照)。 注:コンマIDとフィルターIDの間に空白があってはなりません。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。省略した場合、デフォルトはsです。
MMRのみ:非MDNノードに適用されます。新しいマスターノードを作成するときに、マスター定義ノードからパブリケーションテーブル定義を複製する場合は、このオプションをtrue設定します。新しいマスターノードにテーブル定義を既に作成している場合は、このオプションをfalse設定します。省略した場合、デフォルトはtrueです。マスター定義ノードを作成するときは、このパラメーターを指定しないでください。
MMRのみ:非MDNノードに適用されます。マスターノードの作成時に初期スナップショットレプリケーションを実行する場合は、このオプションを指定します。マスターノードの作成時に初期スナップショットレプリケーションを実行しない場合は、このオプションを省略します。
注(MMRのみ):オフラインスナップショット手法を使用する場合を除き(セクション7.9を参照)、このオプションを指定することをお勧めします。最初のスナップショットレプリケーションは、オンデマンド(セクション8.3.42を参照)またはスケジュール(セクション8.3.44を参照)で同期レプリケーションを実行する前に、マスター定義ノードから他のすべてのマスターノードに実行する必要があります。新しく追加されたマスターノードで初期スナップショットが行われなかった場合、その後の同期レプリケーションでは、そのマスターノードへのトランザクションの適用に失敗する可能性があります。初期スナップショットは、オンデマンドスナップショットを実行することでも取得できます(セクション8.3.41を参照)。
スナップショットからの出力を表示する true 、 このオプションを true 設定します 。スナップショットの出力を表示したくない場合は、このオプションをfalse設定します。省略した場合、デフォルトはtrueです。
注:このオプションは、 -initialsnapshotオプションの指定の直後にのみ指定できます。
MMRの場合のみ: 1〜10の整数値で、1が最高の優先順位を持ち、10が最低の優先順位を持つマスターノードに優先順位レベルを割り当てます。
Tを指定して、このパブリケーションデータベースの同期レプリケーションのトリガーベースの方法を使用します。このパブリケーションデータベースの同期レプリケーションのログベース(WAL)メソッドを使用するには、 Wを指定します。省略した場合、デフォルトはTです。
例
次の例では、 Oracleデータベースのパブリケーションデータベース定義を追加します。暗号化されたパスワードは、 dbpasswordパラメーターを使用してコマンドラインで指定されます。出版データベースID 1出版サービスがデータベースに割り当てられています。
次の例では、 Advanced Serverデータベースのパブリケーションデータベース定義を追加します。暗号化されたパスワードは、名前のファイルから読み込まれるpwdfileでdbpassfileパラメータ。 2パブリケーションデータベースIDは、パブリケーションサービスによってデータベースに割り当てられます。
次の例では、初期スナップショットが呼び出されないマルチマスターレプリケーションシステムで、マスターノード(マスター定義ノード以外)のパブリケーションデータベース定義を追加します( initialsnapshotパラメーターは省略されます)。フィルターID 8および16フィルタールールがこのマスターノードに適用されます。マスターノードに3のノードプライオリティレベルが割り当てられます。
注:追加のマスターノードを作成する前に、マスター定義ノードでパブリケーションを作成する必要があります。パブリケーションを作成するコマンドについては、セクション8.3.14を参照してください。
printpubdbidsコマンドは、パブリケーションデータベース定義のパブリケーションデータベースIDを印刷します。
パブリケーションサーバーのログイン情報を含むファイル 。
例
printpubdbidsdetailsコマンドは、各パブリケーションデータベース定義の接続情報を印刷します。
dbid : host : port : dbname : user
注:データベースユーザーのパスワードは表示されません。
パブリケーションサーバーのログイン情報を含むファイル 。
データベースサーバーが接続を待機しているポート番号 。
例
printcontrollerdbidコマンドは、コントローラのデータベースのパブリケーションデータベースのIDを印刷します。
パブリケーションサーバーのログイン情報を含むファイル 。
例
MMRの場合のみ: printmdndbidコマンドは、マスター定義ノードのパブリケーションデータベースIDを出力します。
パブリケーションサーバーのログイン情報を含むファイル 。
例
updatepubdbコマンドは、パブリケーションデータベースIDによって識別される既存のパブリケーションデータベース定義の接続情報を変更する能力を提供します。
-repsvrfile pubsvrfile
-pubdbid dbid
-dbhost host
-dbport port
-dbuser user
{-dbpassword encrypted_pwd | -dbpassfile pwdfile }
-database dbname
[-urloptions jdbc_url_parameters ]
[-nodepriority priority_level ]
シングルマスターレプリケーションシステムのパブリケーションデータベース定義に提供する必要があるデータベース接続情報の詳細については、 セクション 5.2.2を参照してください。マルチマスター複製システムについては、セクション6.2.2および6.3を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
データベースサーバーが接続を待機しているポート番号 。
databaseパラメータでパブリケーションデータベースを識別するためにOracleシステムID(SID)が使用される場合は、 sid 指定します。 databaseパラメータでパブリケーションデータベースを識別するためにOracleサービス名が使用される場合は、 servicename指定します。 注: Oracle 12cの場合、サービス名を使用します。
SSL接続のサポートなどのために、JDBC URLパラメーターの使用を拡張しました。 (パブリケーションデータベースへのSSL接続については、セクション 7.11を参照してください 。) urloptionsパラメーターの指定は、このデータベースで以前に指定された既存のJDBC URLパラメーターを完全に置き換えます。 urloptionsパラメーターを省略すると、このデータベースで以前に指定された可能性のある既存のJDBC URLパラメーターが削除されます。
MMRの場合のみ: 1〜10の整数値で、1が最高の優先順位を持ち、10が最低の優先順位を持つマスターノードに優先順位レベルを割り当てます。
例
removepubdbコマンドは、パブリケーションデータベースの定義を削除します。
–repsvrfile pubsvrfile
–pubdbid dbid
パブリケーションデータベースの削除に関する追加情報については、セクション 7.6.7を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
例
gettablesfornewpubコマンドは、指定されたパブリケーションデータベースの定義から新しい出版物に含めることが可能です表やビューを示しています。
-gettablesfornewpub –repsvrfile repsvrfile –pubdbid dbid
パブリケーションサーバーのログイン情報を含むファイル 。
例
パブリケーションデータベースID 1で識別されるパブリケーションデータベース定義の場合、パブリケーションに含めることができるテーブルはEDB.DEPT 、 EDB.EMP 、およびEDB.JOBHISTです。パブリケーションに含めることができるビューはEDB.SALESEMPです。
createpubコマンドは、新しいパブリケーションを作成します。
-createpub pubname
-repsvrfile pubsvrfile
-pubdbid dbid
-tables schema_t1 。 table_1 [ schema_t2 。 table_2 ] ...
[-views schema_v1 。 view_1 [ schema_v2 。 view_2 ] ...]
" ordinal_t1 : filtername_t1 : filterclause_t1 "
[" ordinal_t2 : filtername_t2 : filterclause_t2 "] ...]
" ordinal_v1 : filtername_v1 : filterclause_v1 "
[" ordinal_v2 : filtername_v2 : filterclause_v2 "] ...]
ordinal_t1 :{E | L | N | M | C: customhandler_t1 }
[ ordinal_t2 :{E | L} N | M | C: customhandler_t2 }] ...]
ordinal_t1 :{E | L | N | M | C: customhandler_t1 }
[ ordinal_t2 :{E | L} N | M | C: customhandler_t2 }] ...]
createpubコマンドは、パラメータで指定したパブリケーションデータベースのIDとパブリケーションデータベースの定義に新しいパブリケーションの従属を追加pubdbid 。パラメーターreptypeをs設定してパブリケーションがスナップショットのみとして指定されている場合、 viewsパラメーターの後にリストされているviewsはすべて無視されます。
シングルマスターレプリケーションシステム用のパブリケーション作成の詳細については、セクション 5.2.3を参照してください 。マルチマスター複製システムについては、セクション6.2.3を参照してください。
注: tablesおよびviewsパラメーターの値として指定するスキーマ名、テーブル名、およびビュー名では、大文字と小文字が区別されます。データベースオブジェクトの作成に引用識別子が使用されていない限り、 Oracle名は大文字で入力する必要があり(たとえばEDB.DEPT )、 Advanced Server名は小文字で入力する必要があります(たとえばedb.dept )。引用符付き識別子とケース変換の詳細については、セクション10.4.5を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
パブリケーションをスナップショットのみのパブリケーションにする場合は、 s 指定します。パブリケーションで同期レプリケーションを許可する場合は、 t指定します。
tablesパラメータリストのn番目のテーブルを含むスキーマの名前 。この値は大文字と小文字が区別されます。
tablesパラメータリストのn番目のテーブルのテーブル名 。この値は大文字と小文字が区別されます。
SMRの場合のみ: viewsパラメーターリストのn番目のビューを含むスキーマの名前。この値は大文字と小文字が区別されます。
:SMRだけのためのビューの名前nで番目のビューviewsリストのパラメータ。この値は大文字と小文字が区別されます。
ordinal_tn示される位置のtablesパラメータリストのテーブルに適用されるフィルタ句 。
SMRの場合のみ:属性が適用されるviewsパラメーターリスト内のviewsの序数(つまり、左から右に1から始まるリスト内の位置)。
SMRの場合のみ: ordinal_vn示される位置にあるviewsパラメーターリストのビューに適用されるフィルター句。
MMRの場合のみ:競合解決オプションでは、指定したE最も古いタイムスタンプによる競合解消のためのL最新のタイムスタンプによる競合解消のため、 Nノード優先紛争解決のために、 Mマニュアル紛争解決のための、またはCカスタム競合処理のため。指定された競合解決は、 tablesパラメータリストの左から右にカウントするordinal_tn指定された位置のテーブルに適用されます。省略した場合、デフォルトはEです。
MMRの場合のみ:スタンバイの競合解決オプションでは、指定したE最も古いタイムスタンプによる競合解消のためのL最新のタイムスタンプによる競合解消のため、 Nノード優先紛争解決のために、 Mマニュアル紛争解決のための、またはCカスタム競合処理のため。指定された競合解決は、 tablesパラメータリストの左から右にカウントするordinal_tn指定された位置のテーブルに適用されます。省略した場合、デフォルトはMです。
MMRの場合のみ: 、競合解決オプションまたはスタンバイの競合解決オプションで指定customhandler_tnオプションのスキーマの接頭辞を持つ関数名として(としてフォーマットされ、 schema . function_nameで与えられる) CREATE FUNCTION機能を処理するカスタム競合するためのコマンドordinal_tn示される位置にあるtablesパラメータリストのtablesに対して作成されます。カスタム競合処理関数をマスター定義ノードに追加する必要があります。 PSQLを使用してカスタム競合処理関数を追加する例については、セクション6.6.8.2を参照してください。競合解決オプションまたはスタンバイ競合解決オプションがC値を使用したカスタム競合処理に設定されている場合にのみ、カスタムハンドラー名オプションを指定する必要があります。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。省略した場合、デフォルトはsです。
例
次の例では、 OracleデータベースのEDB.DEPTおよびEDB.EMPテーブルを含むdept_emp という名前の dept_empが作成されます。複製方法は同期です。
次の例では、 OracleデータベースのEDB.SALESEMPビューを含むsalesemp という名前の salesempが作成されます。複製方法はスナップショットのみです。
次の例では、名前の公表 analysts_managers含まれているが作成されedb.deptテーブルとから従業員edb.empアナリストや管理されているテーブルを。テーブルはAdvanced Serverデータベースにあります。複製方法はスナップショットのみです。
次の例では、マルチマスター複製システムのパブリケーションを作成します。 1つのテーブルフィルタは、テーブルの上に定義され edb.deptと3つのテーブルフィルタは、テーブルの上に定義されていedb.emp 。テーブルedb.deptは、スタンバイ競合解決戦略としてノード優先度競合解決と最新のタイムスタンプが割り当てられます。テーブルedb.empは、スタンバイ戦略として最も早いタイムスタンプ競合解決と手動解決(デフォルト)が割り当てられます。
printpublistコマンドは、パブリケーション名のリストを出力します。
[-pubdbid dbid ]
パブリケーションサーバーのログイン情報を含むファイル 。
pubdbidパラメーターが指定されている場合、 dbid指定されたパブリケーションデータベース定義に従属するパブリケーション名のみが出力されます。 pubdbidパラメーターを省略すると、パブリケーションサーバーに従属するすべてのパブリケーション名が印刷されます。
例
printpublishedtables印刷物に与えられたパブリケーションに属しているテーブルとビューのリストを命じます。
-printpublishedtables pubname -repsvrfile pubsvrfile
パブリケーションサーバーのログイン情報を含むファイル 。
例
パブリケーション dept_emp 属するテーブルが印刷されます。
printpubfilterslistコマンドは、指定された刊行物で定義されているテーブルのフィルタのリストを印刷します。
-printpubfilterslist pubname -repsvrfile pubsvrfile
パブリケーションサーバーのログイン情報を含むファイル 。
例
パブリケーション analysts_managers のテーブルフィルターが出力されます。
addtablesintopubコマンドは、既存のパブリケーションにテーブルまたはビューを追加します。
-repsvrfile pubsvrfile
[-tables schema_t1 。 table_1 [ schema_t2 。 table_2 ] ...]
[-views schema_v1 。 view_1 [ schema_v2 。 view_2 ] ...]
" ordinal_t1 : filtername_t1 : filterclause_t1 "
[" ordinal_t2 : filtername_t2 : filterclause_t2 "] ...]
" ordinal_v1 : filtername_v1 : filterclause_v1 "
[" ordinal_v2 : filtername_v2 : filterclause_v2 "] ...]
ordinal_t1 :{E | L | N | M | C: customhandler_t1 }
[ ordinal_t2 :{E | L} N | M | C: customhandler_t2 }] ...]
ordinal_t1 :{E | L | N | M | C: customhandler_t1 }
[ ordinal_t2 :{E | L} N | M | C: customhandler_t2 }] ...]
addtablesintopubコマンドがで識別される既存のパブリケーションを更新pubname 。パブリケーションがスナップショットのみの場合、 viewsパラメーターの後にリストされているviewsはすべて無視されます。
パブリケーションへのテーブルの追加に関する追加情報については、セクション 7.6.3.1を参照してください 。
注: tablesおよびviewsパラメーターの値として指定するスキーマ名、テーブル名、およびビュー名では、大文字と小文字が区別されます。データベースオブジェクトの作成に引用識別子が使用されていない限り、 Oracle名は大文字で入力する必要があり(たとえばEDB.DEPT )、 Advanced Server名は小文字で入力する必要があります(たとえばedb.dept )。引用符付き識別子とケース変換の詳細については、セクション10.4.5を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
tablesパラメータリストのn番目のテーブルを含むスキーマの名前 。この値は大文字と小文字が区別されます。
tablesパラメータリストのn番目のテーブルの名前 。この値は大文字と小文字が区別されます。
SMRの場合のみ: viewsパラメーターリストのn番目のビューを含むスキーマの名前。この値は大文字と小文字が区別されます。
SMRの場合のみ: viewsパラメータリストのn番目のビューの名前。この値は大文字と小文字が区別されます。
ordinal_tn示される位置のtablesパラメータリストのテーブルに適用されるフィルタ句 。
SMRの場合のみ:属性が適用されるviewsパラメーターリスト内のviewsの序数(つまり、左から右に1から始まるリスト内の位置)。
SMRの場合のみ: ordinal_vn示される位置にあるviewsパラメーターリストのビューに適用されるフィルター句。
MMRの場合のみ:競合解決オプションでは、指定したE最も古いタイムスタンプによる競合解消のためのL最新のタイムスタンプによる競合解消のため、 Nノード優先紛争解決のために、 Mマニュアル紛争解決のための、またはCカスタム競合処理のため。指定された競合解決は、 tablesパラメータリストの左から右にカウントするordinal_tn指定された位置のテーブルに適用されます。省略した場合、デフォルトはEです。
MMRの場合のみ:スタンバイの競合解決オプションでは、指定したE最も古いタイムスタンプによる競合解消のためのL最新のタイムスタンプによる競合解消のため、 Nノード優先紛争解決のために、 Mマニュアル紛争解決のための、またはCカスタム競合処理のため。指定された競合解決は、 tablesパラメータリストの左から右にカウントするordinal_tn指定された位置のテーブルに適用されます。省略した場合、デフォルトはMです。
MMRの場合のみ: 、競合解決オプションまたはスタンバイの競合解決オプションで指定customhandler_tnオプションのスキーマの接頭辞を持つ関数名として(としてフォーマットされ、 schema . function_nameで与えられる) CREATE FUNCTION機能を処理するカスタム競合するためのコマンドordinal_tn示される位置にあるtablesパラメータリストのtablesに対して作成されます。カスタム競合処理関数をマスター定義ノードに追加する必要があります。 PSQLを使用してカスタム競合処理関数を追加する例については、セクション6.6.8.2を参照してください。競合解決オプションまたはスタンバイ競合解決オプションがC値を使用したカスタム競合処理に設定されている場合にのみ、カスタムハンドラー名オプションを指定する必要があります。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。 注:このパラメーターは必須ではなく、完全に省略できます。以前のxDB Replication Server CLIバージョンでの使用をサポートするために存在します。
例
次の例では、テーブル edb.jobhistおよびビューedb.salesempがanalysts_managersという名前の既存のパブリケーションに追加されます。
removetablesfrompubコマンドは、出版からテーブルを削除します。
-repsvrfile pubsvrfile
[-tables schema_t1 。 table_1 [ schema_t2 。 table_2 ] ...]
[-views schema_v1 。 view_1 [ schema_v2 。 view_2 ] ...]
パブリケーションからテーブルを削除することに関する追加情報については、セクション 7.6.3.2を参照してください 。
注: tablesおよびviewsパラメーターの値として指定するスキーマ名、テーブル名、およびビュー名では、大文字と小文字が区別されます。データベースオブジェクトの作成に引用識別子が使用されていない限り、 Oracle名は大文字で入力する必要があり(たとえばEDB.DEPT )、 Advanced Server名は小文字で入力する必要があります(たとえばedb.dept )。引用符付き識別子とケース変換の詳細については、セクション10.4.5を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
tablesパラメータリストのn番目のテーブルを含むスキーマの名前 。この値は大文字と小文字が区別されます。
tablesパラメータリストのn番目のテーブルの名前 。この値は大文字と小文字が区別されます。
viewsパラメータリストのn番目のビューを含むスキーマの名前 。この値は大文字と小文字が区別されます。
viewsパラメータリストのn番目のビューの名前 。この値は大文字と小文字が区別されます。
例
次の例では、テーブル edb.jobhistおよびビューedb.salesempがanalysts_managersパブリケーションから削除されます。
addfilterコマンドは、指定されたパブリケーションにテーブルのフィルタルールの定義を追加します。
テーブルフィルタルールを有効にする方法については、セクション 8.3.38を参照してください 。
-addfilter pubname
–repsvrfile pubsvrfile
[-tables schema_t1 。 table_1 [ schema_t2 。 table_2 ] ...]
[-views schema_v1 。 view_1 [ schema_v2 。 view_2 ] ...]
" ordinal_t1 : filtername_t1 : filterclause_t1 "
[" ordinal_t2 : filtername_t2 : filterclause_t2 "] ...]
" ordinal_v1 : filtername_v1 : filterclause_v1 "
[" ordinal_v2 : filtername_v2 : filterclause_v2 "] ...]
注: tablesまたはviewsパラメーターの値として指定するスキーマ名とテーブルまたはビューの名前では、大文字と小文字が区別されます。データベースオブジェクトの作成に引用識別子が使用されていない限り、 Oracle名は大文字で入力する必要があり(たとえばEDB.DEPT )、 Advanced Server名は小文字で入力する必要があります(たとえばedb.dept )。引用符付き識別子とケース変換の詳細については、セクション10.4.5を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
tablesパラメータリストのn番目のテーブルを含むスキーマの名前 。この値は大文字と小文字が区別されます。
tablesパラメータリストのn番目のテーブルの名前 。この値は大文字と小文字が区別されます。
SMRの場合のみ: viewsパラメーターリストのn番目のビューを含むスキーマの名前。この値は大文字と小文字が区別されます。
SMRの場合のみ: viewsパラメータリストのn番目のビューの名前。この値は大文字と小文字が区別されます。
ordinal_tn示される位置のtablesパラメータリストのテーブルに適用されるフィルタ句 。
SMRの場合のみ:属性が適用されるviewsパラメーターリスト内のviewsの序数(つまり、左から右に1から始まるリスト内の位置)。
SMRの場合のみ: ordinal_vn示される位置にあるviewsパラメーターリストのビューに適用されるフィルター句。
例
次の例では 、パブリケーションanalysts_managers テーブル edb.empにテーブルフィルターが追加されます 。
updatefilterコマンドは、指定したテーブルまたはビューのフィルタ句を変更します。
-updatefilter pubname
–repsvrfile pubsvrfile
" filterid_1 : filterclause_1 "
[" filterid_2 : filterclause_2 "] ...
パブリケーションサーバーのログイン情報を含むファイル 。
フィルター句を変更するフィルタールールを識別するフィルターID。 printpubfilterslistコマンドを使用して、 printpubfilterslist 使用可能なフィルタールールのフィルターIDを取得します(セクション8.3.17を参照)。
例
パブリケーションanalysts_managers フィルターID 26 のフィルター句が変更されました。
removefilterコマンドは、指定されたパブリケーションからテーブルのフィルタを削除します。
-removefilter pubname
–repsvrfile pubsvrfile
-filterid filterid
パブリケーションサーバーのログイン情報を含むファイル 。
削除するフィルタールールを識別するフィルターID。 printpubfilterslistコマンドを使用して、パブリケーション内のフィルタールールのフィルターIDを取得します(セクション8.3.17を参照)。
例
次の例では、フィルターID 26 フィルタールールがパブリケーションanalysts_managersから削除されます。
MMRのみ: printconfresolutionstrategyコマンドは、指定されたテーブルの競合解決戦略とスタンバイ競合解決戦略を出力します。
–repsvrfile pubsvrfile
-table schema_t 。 table_name
注: tableパラメーターの値として指定するスキーマ名とテーブル名またはビュー名では、大文字と小文字が区別されます。データベースオブジェクトの作成に引用識別子が使用されていない限り、 Oracle名は大文字で入力する必要があり(たとえばEDB.DEPT )、 Advanced Server名は小文字で入力する必要があります(たとえばedb.dept )。引用符付き識別子とケース変換の詳細については、セクション10.4.5を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
table_name を含むスキーマの名前 。この値は大文字と小文字が区別されます。
例
次の例では 、パブリケーションemp_pub Advanced Serverテーブルedb.emp 競合解決戦略が出力されます。
MMRのみ: updateconfresolutionstrategyコマンドは、指定されたテーブルの競合解決戦略またはスタンバイ競合解決戦略を変更します。
–repsvrfile pubsvrfile
-table schema_t 。 table_name
[-customhandlername customhandler ]
競合解決戦略の更新に関する追加情報については、セクション 6.8を参照してください 。
注: tableパラメーターの値として指定するスキーマ名とテーブル名またはビュー名では、大文字と小文字が区別されます。データベースオブジェクトの作成に引用識別子が使用されていない限り、 Oracle名は大文字で入力する必要があり(たとえばEDB.DEPT )、 Advanced Server名は小文字で入力する必要があります(たとえばedb.dept )。引用符付き識別子とケース変換の詳細については、セクション10.4.5を参照してください。
パブリケーションサーバーのログイン情報を含むファイル 。
table_name を含むスキーマの名前 。この値は大文字と小文字が区別されます。
競合解決オプションでは、最も早いタイムスタンプ競合解決のためにE 、最新のタイムスタンプ競合解決のためにL 、ノード優先度競合解決のためにN 、手動競合解決のためにM 、またはカスタム競合処理のためにCを指定します。
スタンバイ競合解決オプションでは、指定した E 、最も古いタイムスタンプによる競合解消のためにL 、最新のタイムスタンプによる競合解消のため、 Nノードの優先紛争解決のために、 Mマニュアル紛争解決、またはのためのCカスタム競合処理のため。
カスタムハンドラ名オプションについては、指定 customhandlerオプションのスキーマの接頭辞を持つ関数名として(としてフォーマットされ、 schema . function_nameで与えられる) CREATE FUNCTION機能を扱うカスタム競合するためのコマンドを。カスタム競合処理関数をマスター定義ノードに追加する必要があります。 PSQLを使用してカスタム競合処理関数を追加する例については、セクション6.6.8.2を参照してください。競合解決オプションまたはスタンバイ競合解決オプションがC値を使用したカスタム競合処理に設定されている場合にのみ、カスタムハンドラー名オプションを指定する必要があります。
例
上の紛争解決の戦略 Advanced Serverのテーブル edb.emp出版におけるemp_pubノード優先紛争解決の待機戦略と最新のタイムスタンプによる競合解消を使用するように変更されます。
カスタム競合処理は 、カスタム競合処理関数edb.custom_conflict_deptとともにedb.deptテーブルに設定されます。
MMRのみ: setasmdnコマンドは、マスターノードをマスター定義ノードの役割に設定します。
-setasmdn pubdbid
–repsvrfile pubsvrfile
マスター定義ノードの設定に関する追加情報については、セクション 6.10を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
例
次の例では、パブリケーションデータベースID 9 マスターノードをマスター定義ノードとして設定します。
setascontrollerコマンドセットパブリケーションデータベースは、コントローラデータベースとして指定されます。パブリケーションデータベースは、シングルマスターレプリケーションシステムのマスターデータベースでも、マルチマスターレプリケーションシステムのマスターノードでもかまいません。
–repsvrfile pubsvrfile
コントローラデータベースの設定に関する追加情報については、セクション 7.7を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
例
validatepubコマンドをチェックし、所与の出版物内のテーブルの定義のいずれかは、出版物が作成された以降に変更された場合。
-validatepub pubname
–repsvrfile pubsvrfile
出版物の検証に関する追加情報については、セクション 7.6.5を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。
例
次の例では、パブリケーション dept_empが検証されます。
validatepubsパブリケーションが作成されてから所定のパブリケーションデータベースの定義に従属するテーブルの定義のいずれかが変更されたかどうかをチェックするコマンド。
–repsvrfile pubsvrfile
-pubdbid dbid
出版物の検証に関する追加情報については、セクション 7.6.5を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。
例
次の例では 、パブリケーションデータベースID 1識別されるOracleパブリケーションデータベース定義が検証されます。
removepubコマンドは、1つまたは複数のパブリケーションを削除します。
-removepub pubname_1 [ pubname_2 ] ...
–repsvrfile pubsvrfile
パブリケーションサーバーのログイン情報を含むファイル 。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。
例
dept_emp という名前の dept_empは、シングルマスターレプリケーションシステムから削除されます。
replicateddlコマンドが適用されるALTER TABLEレプリケーション・システムのすべてのデータベースで出版テーブルへの声明と同様にアップデートそのパブリケーションテーブルに関連付けられたXDB Replication Serverの挿入/更新/削除トリガーと影のテーブルを。
-replicateddl pubname
–repsvrfile pubsvrfile
-table schema_t 。 table_name
-ddlscriptfile script_file
DDL変更レプリケーションの詳細については、セクション 7.8を参照してください 。
ALTER TABLEステートメントが適用されるテーブルを含むパブリケーションの名前 。
パブリケーションサーバーのログイン情報を含むファイル 。
table_name を含むスキーマの名前 。この値は大文字と小文字が区別されます。
定義を変更する ALTER TABLEステートメント内のテーブルの名前 。この値は大文字と小文字が区別されます。
ALTER TABLEステートメントを含むファイルへのパス 。
例
次の例は、テーブルedb.emp title という名前の列を追加することを示しています。 ALTER TABLEステートメントは、次のようにテキストファイルaddcolumn.sqlあります。
replicateddlコマンドを使用して実行されるaddcolumn.sqlマスターノード上のトリガとシャドウ・テーブルを更新するファイル:
SMRの場合のみ: addsubdbコマンドは、サブスクリプションデータベース定義を追加します。
-repsvrfile subsvrfile
-dbhost host
-dbport port
-dbuser user
{-dbpassword encrypted_pwd | -dbpassfile pwdfile }
-database dbname
[-urloptions jdbc_url_parameters ]
addsubdbコマンドは、新しいサブスクリプションデータベース定義を作成します。 addsubdbコマンドは、新しく作成されたサブスクリプションデータベース定義に割り当てられた一意のサブスクリプションデータベースIDを表示します。サブスクリプションデータベースIDは、他のxDB Replication Server CLIコマンドを実行するときに操作するサブスクリプションデータベース定義を識別するために使用されます。
サブスクリプションデータベース定義を追加するときに指定する必要があるデータベース接続情報の詳細については、 セクション 5.3.2を参照してください。
サブスクリプションサーバーのログイン情報を含むファイル 。
データベースがOracleデータベースの場合は、 oracle 指定します。データベースがOracle互換構成モードのAdvanced Serverデータベースである場合、 enterprisedb指定します。データベースがPostgreSQLデータベースまたはPostgreSQL互換構成モードのAdvanced Serverデータベースである場合、 postgresql指定します。データベースがMicrosoft SQL Serverデータベースの場合、 sqlserver指定します。
データベースサーバーが接続を待機しているポート番号 。
databaseパラメータでサブスクリプションデータベースを識別するためにOracleシステムID(SID)が使用される場合は、 sid 指定します。 databaseパラメータでサブスクリプションデータベースを識別するためにOracleサービス名が使用される場合は、 servicename指定します。 注: Oracle 12cの場合、サービス名を使用します。
例
次の例では、 Oracleデータベースのサブスクリプションデータベース定義を追加します。暗号化されたパスワードは、 dbpasswordパラメーターを使用してコマンドラインで指定されます。サブスクリプションデータベースのID 1サブスクリプションサーバーでデータベースに割り当てられます。
次の例では、 Advanced Serverデータベースのサブスクリプションデータベース定義を追加します。暗号化されたパスワードは、名前のファイルから読み込まれるpwdfileでdbpassfileパラメータ。 2サブスクリプションデータベースIDは、サブスクリプションサーバーによってデータベースに割り当てられます。
SMRのみ: printsubdbidsコマンドは、サブスクリプションデータベース定義のサブスクリプションデータベースIDを出力します。
サブスクリプションサーバーのログイン情報を含むファイル 。
例
SMRのみ: printsubdbidsdetailsコマンドは、各サブスクリプションデータベース定義の接続情報を出力します。
dbid : host : port : dbname : user
注:データベースユーザーのパスワードは表示されません。
サブスクリプションサーバーのログイン情報を含むファイル 。
データベースサーバーが接続を待機しているポート番号 。
例
SMRのみ: updatesubdbコマンドは、サブスクリプションデータベースIDで識別される既存のサブスクリプションデータベース定義の接続情報を変更する機能を提供します。
-repsvrfile subsvrfile
-subdbid dbid
-dbhost host
-dbport port
-dbuser user
{-dbpassword encrypted_pwd | -dbpassfile pwdfile }
-database dbname
[-urloptions jdbc_url_parameters ]
サブスクリプションデータベース定義に提供する必要があるデータベース接続情報の詳細については、 セクション 5.3.2を参照してください。
サブスクリプションサーバーのログイン情報を含むファイル 。
データベースサーバーが接続を待機しているポート番号 。
databaseパラメータでサブスクリプションデータベースを識別するためにOracleシステムID(SID)が使用される場合は、 sid 指定します。 databaseパラメータでサブスクリプションデータベースを識別するためにOracleサービス名が使用される場合は、 servicename指定します。 注: Oracle 12cの場合、サービス名を使用します。
SSL接続のサポートなどのために、JDBC URLパラメーターの使用を拡張しました。 (サブスクリプションデータベースへのSSL接続の詳細については、セクション 7.11を参照してください 。) urloptionsパラメーターの指定は、このデータベースで以前に指定された既存のJDBC URLパラメーターを完全に置き換えます。 urloptionsパラメーターを省略すると、このデータベースで以前に指定された可能性のある既存のJDBC URLパラメーターが削除されます。
例
SMRの場合のみ: removesubdbコマンドは、サブスクリプションデータベース定義を削除します。
-removesubdb –repsvrfile subsvrfile –subdbid dbid
サブスクリプションデータベースの削除に関する追加情報については、セクション 5.5.6を参照してください 。
サブスクリプションサーバーのログイン情報を含むファイル 。
例
SMRの場合のみ: createsubコマンドは、新しいサブスクリプションを作成します。
-createsub subname
-subsvrfile subsvrfile
-subdbid dbid
-pubsvrfile pubsvrfile
-pubname pubname
[-filterrule filterid_1 [、 filterid_2 ] ...]
createsubコマンドは、パラメータで指定したサブスクリプションデータベースのIDを持つサブスクリプションデータベースの定義に新しいサブスクリプションの従属を追加subdbid 。
サブスクリプションの作成に関する追加情報については、セクション 5.3.3を参照してください 。
新しいサブスクリプションが従属する サブスクリプションサーバー の サブスクリプションサーバーログイン情報を含むファイル 。
新しいサブスクリプションが関連付けられるパブリケーションが従属するパブリケーションサーバー の パブリケーションサーバーログイン情報を含むファイル 。
新しいサブスクリプションの対応するテーブルで有効にするために使用可能なテーブルフィルターのセットからフィルタールールを識別するフィルターIDのコンマ区切りリスト。 printpubfilterslistコマンドを使用して、 printpubfilterslist 使用可能なフィルタールールのフィルターIDを取得します(セクション8.3.17を参照)。 注:コンマIDとフィルターIDの間に空白があってはなりません。
例
次の例では、サブスクリプションデータベースID 2識別されるAdvanced Serverサブスクリプションデータベースにdept_emp_sub というサブスクリプションが作成されます。サブスクリプションはdept_empという名前のパブリケーションに関連付けられていdept_emp 。
SMRのみ: printsublistコマンドは、サブスクリプション名のリストを出力します。
-printsublist -repsvrfile subsvrfile -subdbid dbid
サブスクリプションサーバーのログイン情報を含むファイル 。
例
enablefilterコマンドは、シングルマスタ複製システムのサブスクリプションまたはマスター定義ノード以外のマルチマスタ複製システムのマスタノードに1つ以上のフィルタ規則を可能にします。
enablefilterコマンドは、サブスクリプション又は非MDNノードにフィルタルールを適用することが望まれるときに使用されるが、フィルタルールがまだ存在していなかったか、サブスクリプション又は非MDNノード場合、これらに含まれることを怠りましたコンポーネントは最初に作成されました。
-repsvrfile pubsvrfile
{-subname subname | -dbid dbid }
-filterids filterid_1 [ filterid_2 ] ...
•
テーブルフィルターは、 createpubコマンド(セクション8.3.14を参照)またはxDBレプリケーションコンソール(セクション5.2.3を参照) によって最初に作成されたときに、masterデータベースのパブリケーションで定義されました 。
•
テーブルフィルタは、 addfilterコマンド(セクション8.3.20を参照)またはxDBレプリケーションコンソール(セクション7.6.4を参照) を使用して、既存のパブリケーションに追加されました 。
•
テーブルフィルターは、 createpubコマンド(セクション8.3.14を参照)またはxDBレプリケーションコンソール(セクション6.2.3を参照 ) によって最初に作成されたときに、マスター定義ノードのパブリケーションで定義されました 。
•
テーブルフィルタは、 addfilterコマンド(セクション8.3.20を参照)またはxDBレプリケーションコンソール(セクション7.6.4を参照) を使用して、既存のパブリケーションに追加されました 。
SMRの場合: enablefilterコマンドまたはxDB Replication Consoleを使用します(セクション5.5.4を参照)。
MMRの場合: enablefilterコマンドまたはxDBレプリケーション・コンソールを使用します( 6.9項を参照)。
パブリケーションサーバーのログイン情報を含むファイル 。
SMRの場合のみ:フィルタールールを有効にするテーブルを含むサブスクリプションの名前。
MMRのみ:フィルター規則を有効にするテーブルを含む非MDNノードのパブリケーションデータベースID。
subname 指定されたSMRサブスクリプションまたはdbid指定されたMMR非MDNノードの対応するテーブルで有効にするために、使用可能なテーブルフィルターのセットからフィルター規則を識別するスペース文字で区切られた1つ以上のフィルターID printpubfilterslistコマンドを使用して、 printpubfilterslist使用可能なフィルタールールのフィルターIDを取得します(セクション8.3.17を参照)。
例
disablefilterコマンドは、シングルマスタ複製システムのサブスクリプションまたはマスター定義ノード以外のマルチマスタ複製システムのマスタノードに1つ以上のフィルタルールを無効にします。
-repsvrfile pubsvrfile
{-subname subname | -dbid dbid }
-filterids filterid_1 [ filterid_2 ] ...
SMRの場合: disablefilterコマンドまたはxDB Replication Consoleを使用します(セクション5.5.4を参照)。
MMRの場合: disablefilterコマンドまたはxDB Replication Consoleを使用します。 (セクション6.9を参照)。
SMRまたはMMRの場合: removefilterコマンド(セクション8.3.22を参照)またはxDBレプリケーションコンソール(セクション7.6.4を参照)を使用します。
パブリケーションサーバーのログイン情報を含むファイル 。
SMRの場合のみ:フィルター規則を無効にするテーブルを含むサブスクリプションの名前。
MMRのみ:フィルター規則を無効にするテーブルを含む非MDNノードのパブリケーションデータベースID。
例
SMRの場合のみ: dosnapshotコマンドは、単一マスター複製システム内の指定されたサブスクリプションでスナップショット同期を実行します。
-dosnapshot subname -repsvrfile subsvrfile
スナップショットレプリケーションの実行に関する追加情報については、セクション 5.4.1を参照してください 。
サブスクリプションサーバーのログイン情報を含むファイル 。
スナップショットからの出力を表示する true 、 このオプションを true 設定します 。スナップショットの出力を表示したくない場合は、このオプションをfalse設定します。省略した場合、デフォルトはtrueです。
例
MMRのみ: dommrsnapshotコマンドは、マルチマスター複製システムの指定されたマスターノードでスナップショット同期を実行します。
-dommrsnapshot pubname
–repsvrfile pubsvrfile
パブリケーションサーバーのログイン情報を含むファイル 。
スナップショットからの出力を表示する true 、 このオプションを true 設定します 。スナップショットの出力を表示したくない場合は、このオプションをfalse設定します。省略した場合、デフォルトはtrueです。
例
次の例では、パブリケーション emp_pubパブリケーションデータベースID 9識別されるターゲットマスターノードへのスナップショットレプリケーションが実行されます。
dosynchronizeシングルマスタ複製システムのための、または全体のマルチマスタ複製システムのための指定されたサブスクリプションのコマンドを実行同期レプリケーション。
-dosynchronize { subname | pubname }
-repsvrfile { subsvrfile | pubsvrfile }
-dosynchronize subname -repsvrfile subsvrfile
-dosynchronize pubname -repsvrfile pubsvrfile -repgrouptype m
注(SMRのみ): dosynchronizeコマンドを使用してスナップショットを最初に実行しなくても、 dosnapshotコマンドをサブスクリプションで使用できます。 dosynchronizeコマンドは、最初に必要なスナップショットを自動的に実行します。
注(MMRのみ):マスター定義ノードからマルチマスター複製システム内の他のすべてのマスターノードへの初期スナップショット複製が実行されていることを確認してください。新しく追加されたマスターノードで初期スナップショットが行われなかった場合、その後の同期レプリケーションでは、そのマスターノードへのトランザクションの適用に失敗する可能性があります。最初のスナップショットは、マスターノードが最初に追加されたときに(セクション6.3またはセクション8.3.6を参照)、またはオンデマンドスナップショットを実行して(セクション6.5.1またはセクション8.3.41を参照) 取得できます。
シングルマスター複製システムの同期複製の実行に関する追加情報については、 5.4.2 項を参照してください 。マルチマスター複製システムについては、セクション6.5.2を参照してください。
SMRのみ:同期レプリケーションが実行されるサブスクリプションの名前。
MMRのみ:同期レプリケーションが実行されるパブリケーションの名前。
SMRのみ: サブスクリプションサーバーのログイン情報を含むファイル。
MMRのみ: パブリケーションサーバーのログイン情報を含むファイル。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。省略した場合、デフォルトはsです。
例
次の例では、シングルマスター複製システムのサブスクリプション dept_emp_subで同期複製が実行されます 。
次の例では、マルチマスター複製システムのパブリケーション emp_pubで同期複製が実行されます。この場合、 -repgrouptype mパラメーターが必要であることに注意してください。
SMRの場合のみ: confscheduleコマンドは、シングルマスター複製システムで繰り返し複製を開始するスケジュールを作成します。
-confschedule subname -repsvrfile subsvrfile
{-realtime no_of_sec |
-1 hour minute |
-weekly day_of_week hour minute |
-monthly month day_of_month hour minute |
-cronexpr " cron_expression "
}
}
場合は removeパラメータが指定され、その後のスケジュールは、サブスクリプションから削除されます。以外の他のパラメータsubnameとrepsvrfile 、この場合には指定できません。
場合は removeパラメータが省略され、その後、 jobtypeパラメータとパラメータの一つはrealtime 、 daily 、 weekly 、 monthly 、またはcronexpr一緒に指定する必要がありますsubnameとrepsvrfileパラメータ。サブスクリプションsubname既存のスケジュールがある場合、新しいスケジュールに置き換えられます。
スケジュールの作成に関する追加情報については、セクション 7.2を参照してください 。
サブスクリプションサーバーのログイン情報を含むファイル 。
removeパラメーターが指定されている場合、既存のスケジュールはすべてサブスクリプションから削除されます。 removeパラメーターが指定されていない場合、サブスクリプションのスケジュールが作成されます。
スケジュールされたレプリケーションをスナップショットで実行する場合は、 s 指定します。スケジュールされたレプリケーションを同期によって実行する場合は、 t指定します。関連するパブリケーションがスナップショットのみのパブリケーションである場合、 -jobtype s使用する必要があります。
曜日。これは、 SUN 、 MON 、 TUE 、 WED 、 THU 、 FRI 、またはSAT いずれかの値になります 。この値は大文字と小文字が区別されないため、 SunとsunはSUNと同様に機能します。
年の月。これは、 JAN 、 FEB 、 MAR 、 APR 、 MAY 、 JUN 、 JUL 、 AUG 、 SEP 、 OCT 、 NOV 、またはDECいずれかの値になります。この値は大文字と小文字を区別しないため、 JanとjanはJANと同様に機能します。
月の日。これは、 1以上でmonthの日数以下の任意の整数です。
例
MMRの場合のみ: confschedulemmrコマンドは、マルチマスター複製システムで繰り返し複製を開始するスケジュールを作成します。
注:マスター定義ノードからマルチマスター複製システム内の他のすべてのマスターノードへの初期スナップショット複製が実行されていることを確認してください。新しく追加されたマスターノードが最初のスナップショットを受けなかった場合、スケジュールによって開始された以降の同期レプリケーションは、そのマスターノードへのトランザクションの適用に失敗する可能性があります。最初のスナップショットは、マスターノードが最初に追加されたときに(セクション6.3またはセクション8.3.6を参照)、またはオンデマンドスナップショットを実行して(セクション6.5.1またはセクション8.3.41を参照) 取得できます。
-confschedulemmr pubdbid -pubname pubname
–repsvrfile pubsvrfile
{-realtime no_of_sec |
-1 hour minute |
-weekly day_of_week hour minute |
-monthly month day_of_month hour minute |
-cronexpr " cron_expression "
}
}
場合は removeパラメータが指定され、その後、スケジュールは公表から削除されます。この場合、 pubdbid 、 pubname 、およびrepsvrfile以外のパラメーターは指定できません。
場合は removeパラメータが省略されたパラメータの一つが、その後、 realtime 、 daily 、 weekly 、 monthly 、またはcronexpr一緒に指定する必要がありますpubdbid 、 pubname 、およびrepsvrfileパラメータ。パブリケーションpubname既存のスケジュールがある場合、新しいスケジュールに置き換えられます。
スケジュールの作成に関する追加情報については、セクション 7.2を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
removeパラメーターが指定されている場合、既存のスケジュールはパブリケーションから削除されます。 removeパラメーターが指定されていない場合、パブリケーションのスケジュールが作成されます。
曜日。これは、 SUN 、 MON 、 TUE 、 WED 、 THU 、 FRI 、またはSAT いずれかの値になります 。この値は大文字と小文字が区別されないため、 SunとsunはSUNと同様に機能します。
年の月。これは、 JAN 、 FEB 、 MAR 、 APR 、 MAY 、 JUN 、 JUL 、 AUG 、 SEP 、 OCT 、 NOV 、またはDECいずれかの値になります。この値は大文字と小文字を区別しないため、 JanとjanはJANと同様に機能します。
月の日。これは、 1以上でmonthの日数以下の任意の整数です。
例
次の例では 、パブリケーションデータベースIDが6マスター定義ノードに従属するパブリケーション emp_pub 同期レプリケーションを実行するスケジュールが作成されます 。レプリケーションは毎日午前8時に発生します。
printscheduleコマンドは、定期的な複製スケジュールを表示します。
-printschedule { subname | pubname }
-repsvrfile { subsvrfile | pubsvrfile }
-printschedule subname -repsvrfile subsvrfile
-printschedule pubname -repsvrfile pubsvrfile -repgrouptype m
SMRのみ:スケジュールが印刷されるサブスクリプションの名前。
MMRの場合のみ:スケジュールが印刷されるパブリケーションの名前。
SMRのみ: サブスクリプションサーバーのログイン情報を含むファイル。
MMRのみ: パブリケーションサーバーのログイン情報を含むファイル。
このコマンドがシングルマスター複製システムに適用される場合は、 s 指定します。このコマンドがマルチマスター複製システムに適用される場合は、 m指定します。省略した場合、デフォルトはsです。
例
SMRの場合のみ: updatesubコマンドを使用すると、特定のサブスクリプションの特定のメタデータを更新できます。このメタデータにより、サブスクリプションサーバーは、サブスクリプションに関連付けられているパブリケーションを管理するパブリケーションサーバーを実行しているホストを見つけることができます。
-updatesub subname
-subsvrfile subsvrfile
-pubsvrfile pubsvrfile
-host newpubsvr_ipaddress
-port newpubsvr_port
updatesubコマンドは、サブスクリプションに関連付けられている出版物の親であるパブリケーションサーバーを識別するIPアドレスとポート番号からなるサブスクリプションメタデータを更新することができます。
あなたは使用する updatesubあなたはその時点で有効なIPアドレスを使用して複製システムを構築していたシナリオでコマンドを。後の時点で、 パブリケーションサーバーを実行しているホストに割り当てられたIPアドレスが変更されました。
updatesubコマンドの hostおよびportパラメーターを使用して 、 パブリケーションサーバーを識別する新しいネットワークアドレスを指定します 。
サブスクリプションの更新に関する追加情報については、セクション 5.5.3を参照してください 。
含むファイル購読するサブスクリプションサーバーのサブスクリプションサーバーのログイン情報subname作成されましたが。
サブスクリプションsubname関連付けられたパブリケーションを管理するパブリケーションサーバーのパブリケーションサーバーログイン情報を含むファイル 。 newpubsvr_ipaddressおよびnewpubsvc_portする値は、ファイルpubsvrfileフィールドhostおよびportに設定されている値と同じでなければならないことに注意してください。
サブスクリプション subname 関連付けられたパブリケーションを管理するパブリケーションサーバーの新しいIPアドレス 。この値は、ファイルpubsvrfileフィールドhostに指定されたIPアドレスと同じでなければなりません。
サブスクリプション subname 関連付けられたパブリケーションを管理するパブリケーションサーバーの新しいポート番号 。この値は、ファイルpubsvrfileフィールドportに指定されたポート番号と同じでなければなりません。
例
パブリケーションサーバーのホストIPアドレスが 192.168.2.7に変更された 192.168.2.7 、ファイルpubsvrfile.propパブリケーションサーバーのログイン情報に、次のように新しいIPアドレスが含まれていることを確認してください。
サブスクリプションサーバーが新しいパブリケーションサーバーホストを見つけることができるように、サブスクリプション dept_emp_sub のメタデータを更新するには 、次のコマンドを実行します。
SMRの場合のみ: removesubコマンドはサブスクリプションを削除します。
-removesub subname –repsvrfile subsvrfile
サブスクリプションの削除に関する追加情報については、セクション 5.5.5を参照してください 。
サブスクリプションサーバーのログイン情報を含むファイル 。
例
dept_emp_sub という名前のサブスクリプションが削除されます。
confcleanupjobコマンドは、シャドウテーブル履歴が削除されるときにようスケジュールを作成します。
-confcleanupjob pubdbid –repsvrfile pubsvrfile
{-minutely no_of_minutes |
-hourly no_of_hours |
-1 hour |
-weekly day_of_week hour |
-cronexpr " cron_expression "
}
}
場合は disableパラメータが指定され、その後、スケジュールが削除されます。この場合、 pubdbidとpubsvrfile以外のパラメーターは指定できません。
場合は disableパラメータが省略され、その後、 enableなパラメータのパラメータと1をminutely 、 hourly 、 daily 、 weekly 、またはcronexpr一緒に指定する必要がありますpubdbidとpubsvrfileパラメータ。
シャドウテーブルの履歴クリーンアップのスケジュールの作成に関する追加情報については、セクション 7.5.1を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
場合 disableパラメータが指定され、その後、既存のシャドーテーブル履歴クリーンアップスケジュールは、パブリケーションデータベースの定義から削除されます。 disableパラメーターが指定されていない場合は、 disable指定enable必要があります。
曜日。これは、 SUNDAY 、 MONDAY 、 TUESDAY 、 WEDNESDAY 、 THURSDAY 、 FRIDAY 、またはSATURDAY いずれかの値になります 。この値は大文字と小文字を区別しないため、 SundayとsundayはSUNDAYと同様に機能します。
例
cleanshadowhistforpubコマンドは、指定されたパブリケーションのシャドウテーブルの履歴を削除します。
–repsvrfile pubsvrfile
[-mmrdbid dbid_1 [、 dbid_2 ] ...]
シャドウテーブルの履歴のクリーンアップに関する追加情報については、セクション 7.5.2を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
MMRのみ:シャドウテーブルの履歴を削除するマスターノードのパブリケーションデータベースID。このパラメーターは、1つ以上のコンマ区切りのパブリケーションデータベースIDを指定するマルチマスターレプリケーションシステムに必要です。 注:コンマデータベースIDとパブリケーションデータベースIDの間に空白があってはなりません。
例
cleanrephistoryforpubコマンドは、指定されたパブリケーションのための複製履歴を削除します。
-cleanrephistoryforpub pubname –repsvrfile pubsvrfile
レプリケーション履歴のクリーンアップに関する追加情報については、 7.5.3 項を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
例
cleanrephistoryコマンドは、指定されたパブリケーションサーバー内のすべての出版物の複製履歴を削除します。
レプリケーション履歴のクリーンアップに関する追加情報については、 7.5.3 項を参照してください 。
パブリケーションサーバーのログイン情報を含むファイル 。
例
次の例では 、ファイルpubsvrfile.propコンテンツによって識別されるパブリケーションサーバー 内のすべてのパブリケーションのレプリケーション履歴が削除されます。
比較される2つのデータベースは、 ソースデータベースとターゲットデータベースと呼ばれ ます 。ソースデータベースのタイプは、Oracle、EnterpriseDB、SQL Server、Sybase®、またはMySQL®です。ターゲットデータベースは、OracleまたはEnterpriseDBである必要があります。
注:データ検証ツールは、次のデータ型の列を検証しません。これらのタイプの1つ以上の列を含むテーブルは、部分的にのみ検証されます。
•
•
•
•
•
•
•
•
注: xDB Replication ServerのシングルマスターまたはマルチマスターレプリケーションシステムのテーブルでのData Validatorの使用に関しては、Data Validatorを使用する前に、ソースとターゲットのxDB Replication Serverテーブル間のすべての同期レプリケーションが完了していることを確認してください。同期レプリケーションがまだ進行中の場合は、データ検証ツールがテーブルの内容の違いを報告する可能性があります。
手順1: xDB Replication Server製品をインストールすると、Data Validatorのコンポーネントもインストールされます。 xDB Replication Server製品のインストールについては、第3章を参照してください。
XDB_HOME /etc
XDB_HOME /bin
runValidation.bat (Windows)
XDB_HOME \bin
注: XDB_HOMEは、xDB Replication Serverがインストールされているディレクトリーです。これは、xDB Replication Serverのインストール方法に応じて、Postgresホームディレクトリと同じ場合と異なる場合があります。
ステップ2: Oracleデータベースをソースまたはターゲットデータベースとして使用する場合は、Oracle JDBCドライバーをダウンロードし、 JAVA_HOME /jre/lib/extディレクトリに配置します。
手順3: XDB_HOME /etcディレクトリにあるdatavalidator.propertiesファイルを編集し、比較するソースデータベースとターゲットデータベースの接続情報を指定します。
以下は、 datavalidator.propertiesファイルのパラメーターです。
Type of the source database. Values may be enterprisedb , oracle , sqlserver , sybase , or mysql .
以下は、インストール後の datavalidator.propertiesファイルの初期コンテンツです。
手順4: Data Validatorログディレクトリの場所を決定します。
Data Validatorは、実行ごとにlogsディレクトリにdatavalidator_ yymmdd - hhmiss .log としてフォーマットされた名前のログファイルを生成します 。
ソース表とターゲット表の間に行の違いがある場合、 datavalidator_ yymmdd - hhmiss .diff としてフォーマットされた名前のファイルも生成されます。これには、 diff形式のエラーの出力が含まれます。 Kompareなどのグラフィカルなdiffツールを使用してこのファイルを表示し、特定の違いを強調表示します。
データ XDB_HOMEは、 -ldオプションを-ldせずにデータXDB_HOME最初に起動したときに、 XDB_HOME /binディレクトリ内にlogs という名前のサブディレクトリを作成しようとします。 rootアカウントとしてData Validatorを呼び出さない場合、通常はrootアカウントのみがこの権限を持つXDB_HOME /binディレクトリにサブディレクトリlogsを作成しようとするため、実行が失敗する可能性があります。
•
データ検証ツールを rootアカウントとして実行します。これは、データValidatorが作成することができますlogs内のサブディレクトリをXDB_HOME /binディレクトリに移動し、ログインして、差分ファイルを作成するために、 logsサブディレクトリ。
•
データXDB_HOME実行する前に、 XDB_HOME /bin/logsディレクトリ構造を作成します 。ディレクトリXDB_HOME /bin/logsの権限を変更して、Data Validatorの実行に使用するオペレーティングシステムアカウントがディレクトリにファイルを作成する権限を持つようにします。
•
使用 -ld log_directory_pathデータValidatorが指定されたディレクトリの場所にログおよび差分ファイルを作成できるようにするオプションlog_directory_path 。データlog_directory_path実行に使用するオペレーティングシステムアカウントに、 log_directory_path指定された最下位レベルのサブディレクトリがまだ存在しない場合は作成するか、完全なディレクトリパスが既に存在する場合は指定されたディレクトリ内にファイルを作成する適切な権限があることを確認してください。
Data Validatorスクリプト runValidation.sh (WindowsのrunValidation.bat ) を呼び出す現在の作業ディレクトリは、スクリプトを含むbinサブディレクトリ(つまり、 XDB_HOME /bin )でなければなりません。
[ option ] ...
schema_nameは、検証されるテーブルを含むソースデータベース内のスキーマの名前です。 optionは、このセクションの「オプション」サブセクションに記載されていoption 。
[ option ] ...
--versionおよび--help を除くすべてのオプションの一般的な構文は 、次のとおりです。
[-ts schema ]
[-it table_1 [、 table_2 ] ...]
[-および table_1 [、 table_2 ] ...]
[-ld log_directory_path ]
[-ds { true | false }]
[-sdbms database_type ]
[-sh host ]
[-sp port ]
[-sdb dbname ]
[-spw password ]
[-tdbms database_type ]
[-th host ]
[-tp port ]
[-tdb dbname ]
[-tu user ]
[-tpw password ]
[-bs row_count ]
[-fs row_count ]
わかりやすくするために、上記の構文図は、オプションの単一文字形式のみを示しています。 [ オプション]サブセクションには、 オプションの単一文字形式と複数文字形式の両方がリストされます。
データベース接続オプションの指定(前述の構文図にリストされている-sdbmsから-tpw )は、 datavalidator.propertiesファイル内の対応するパラメーターをオーバーライドします。 datavalidator.propertiesファイルの詳細は、 9.1項を参照してください。
-ss 、-- --source-schema schema
-ts 、 --target-schema -ts --target-schema schema
-it 、-- --include-tables table_1 [, table_2 ] ...
-et 、 --exclude-tables table_1 --exclude-tables table_1 [, table_2 ] ...
比較から除外されるソーススキーマ内のテーブル。省略すると、 -itオプションで指定されたテーブルのみが比較のために含まれます。 -itオプションと-etオプションの両方を省略すると、すべてのソーススキーマテーブルが比較のために含まれます。 注:コンマとテーブル名の間に空白があってはなりません。
-srs 、 -srs --skip-rowsonlyin-source { true | false }
とき true指定され、ソースデータベースのテーブルにだけ存在する行の差異のログはスキップされます。デフォルトはfalseです。
-srt 、 -srt --skip-rowsonlyin-target { true | false }
とき true指定され、ターゲット・データベースのテーブルにだけ存在する行の差異のログはスキップされます。デフォルトはfalseです。
-srb 、 -srb --skip-rowsin-both { true | false }
場合 true指定され、同じ主キーを持つソースおよびターゲット・データベース・テーブルの両方に存在する行の差異のロギングが、異なる非プライマリ・キー値がスキップされています。デフォルトはfalseです。
-ld 、-- --logging-dir log_directory_path
データ検証ログと差分ファイルを作成して保存するディレクトリパス。場合 log_directory_path存在しない場合、データValidatorは、それを作成しようとします。完全なディレクトリパスが指定されていない場合、 log_directory_pathが作成されるか、 runValidation.shスクリプトが呼び出されるXDB_HOME /binサブディレクトリに相対的であると想定されます。 (つまり、logsディレクトリはXDB_HOME /bin/ log_directory_pathです。) runValidation.shスクリプトの呼び出しに使用するオペレーティングシステムアカウントに、ディレクトリが存在しない場合はディレクトリを作成する権限、または指定した場所にファイルを作成する権限があることを確認してくださいディレクトリが既に存在する場合。省略した場合、デフォルトはXDB_HOME /bin/logsディレクトリです。
-ds 、 --display-summary { true | false }
データ検証ツールの概要のみを表示するには、 trueを指定し true 。これにより、ソースとターゲットのデータベース接続情報、およびソースデータベーステーブルごとの結果の詳細な内訳が省略されます。データ検証ツールのすべての結果を表示するには、 falseを指定しfalse 。データ検証ツールが呼び出されたときにコマンドラインコンソールに表示される情報の種類と量は、その実行のログファイルにも保存される情報と同じです。省略した場合、デフォルトはfalse (つまり、データ検証ツールの結果がすべて表示されます)。
-sdbms 、 --source-dbms -sdbms --source-dbms -sdbms database_type
ソースデータベースサーバーのタイプ。サポートされているタイプは oracle 、 enterprisedb 、 sqlserver 、 sybase 、およびmysqlです。
-sh 、-- --source-host host
-sp 、-- --source-port port
ソース データベースサーバーが接続をリッスンしているポート番号 。
-sdb 、 --source-database -sdb --source-database dbname
-su 、 -su --source-user user
-spw 、 --source-password password
-tdbms 、 -tdbms --target-dbms -tdbms database_type
-th 、-- --target-host host
-tp 、-- --target-port port
ターゲット データベースサーバーが接続を待機しているポート番号 。
-tdb 、 --target-database -tdb --target-database dbname
-tu 、-- --target-user user
-tpw 、 --target-password -tpw --target-password password
-bs 、 --batch-size row_count
-bsオプションは、ソースおよびターゲット・データベース・テーブルを横切って比較のために使用されるバッチにグループに行数を指定します。たとえば、テーブルに1000行が含まれる場合、 -bs設定を100にすると、ソースデータベースとターゲットデータベース全体で比較を完了するために10回のバッチ反復が必要になります。データ検証ツールは、ソーステーブルとターゲットテーブルの両方から100行を読み取り、ソースバッファとターゲットバッファに追加します。検証スレッドは、ソースバッファとターゲットバッファから100行を読み取り、比較を実行します。次に、比較などのために次の100行を読み取って準備するために移動します。データベースから100行を-fsために必要な実際のデータベースラウンドトリップは、フェッチサイズの-fsオプションに依存することに注意してください。たとえば、 -fs設定が100の場合は1回のラウンドトリップしか必要ありませんが、 -fs設定が10の場合は10回のデータベースラウンドトリップが必要です。
-fs 、 --fetch-size row_count
サイズが非常に大きいテーブルに対してデータ検証を実行すると、デフォルトのフェッチサイズ5000行を使用しているときに、データ検証ツールがヒープ領域不足エラーで終了する場合があります。 -fsオプションを使用して 、より小さいフェッチサイズを指定し、ヒープ領域不足の問題を回避します。結果セットの反復により、1回のデータベースラウンドトリップでrow_count値で表される数の行がrow_countます。
例
以下に、スキーマ EDBのテーブルと、OracleソースデータベースのテーブルDEPTおよびEMP内容を示します。
以下は、 Advanced Server edbデータベース内のテーブルdeptおよびemp内容とともに、スキーマ public のテーブルをリストします。
•
Oracle EDBスキーマには、Advanced Server publicスキーマに存在しないORATABという名前の追加テーブルが1つ含まれています。
•
Oracle DEPT表には、Advanced Server dept表には存在しないDEPTNO 50追加行が1つ含まれています。
•
EMPNO値が9001および9002 の EMPテーブルの行には 、OracleテーブルとAdvanced Serverテーブルで異なる列値があります
•
この例では、 JOBHISTテーブルには、OracleテーブルとAdvanced Serverテーブルの両方に同じ行が含まれています。
datavalidator.propertiesファイルの内容は次のように設定されます。
次の例では、Oracle EDBスキーマのすべてのテーブルを Advanced Server publicスキーマと比較します。
データ /home/user/datavalidator_logs ログファイルは 、 -ldオプションで指定されたディレクトリ /home/user/datavalidator_logs 作成されます。 runValidation.shスクリプトの呼び出しに使用されるオペレーティングシステムアカウントには/home/userディレクトリへの書き込みアクセス権があるため、Data Validatorはdatavalidator_logsサブディレクトリを作成できます。
All tables count: 4
Validated tables count: 3
Rows count: 38
Errors count: 3
Missing tables on the target database count: 1
Tables list:
- EDB.ORATAB
Tables having only unsupported datatypes count: 0
Tables having primary key limitation count: 0
Total time(s): 0.678
Rows per second: 56
•
DEPTテーブルに1つのエラーがあります(行がありません)。
•
EMPテーブルに2つのエラーがあります(列の値が一致しない2つの行)
•
JOBHIST表には、エラーが含まれていません。
•
ORATABテーブルには、ターゲット・データベースに存在しません。
次の例には 、Oracle EDBスキーマをAdvanced Server publicスキーマと比較するときに、 -itオプションを指定したテーブル deptおよびemp のみが含まれています。
次の例では 、Oracle EDBスキーマをAdvanced Server publicスキーマと比較するときに、 -etオプションをjobhistしてテーブル ORATABおよびjobhistを除外しています。 -ds trueオプションを使用すると、データ検証ツールの概要のみが表示されます。
10 付録
•
Oracle 10gリリース2バージョン10.2.0.1.0は明示的に認定されています。 10.2ラインの新しいマイナーバージョンもサポートされています。
•
Oracle 11gリリース2バージョン11.2.0.2.0は明示的に認定されています。 11.2ラインの新しいマイナーバージョンもサポートされています。
•
Oracle 12cバージョン12.1.0.2.0は明示的に認定されています。 12.1ラインの新しいマイナーバージョンもサポートされています。
•
SQL Server 2008バージョン10.50.1617.0は明示的に認定されています。 10.50ラインの新しいマイナーバージョンもサポートされています。
•
SQL Server 2012バージョン11.0.6020.0は明示的に認定されています。 11.0ラインの新しいマイナーバージョンもサポートされています。
•
SQL Server 2014バージョン12.0.5000.0は明示的に認定されています。 12.0ラインの新しいマイナーバージョンもサポートされています。
注: Advanced Serverバージョン11の場合、最初にバージョン11ベータに対して認証が実行されましたが、バージョン11 GAリリースでは問題は発生しません。
Advanced Serverを使用している場合、xDB Replication Server(Oracle、SQL Server、PostgreSQL、またはAdvanced Server)で使用しているデータベース製品と 互換性構成モードに応じて、ソースデータベースサーバーとターゲットデータベースサーバーの特定の組み合わせはシングルマスター複製システムでのパブリケーションおよびそれに関連するサブスクリプションには許可されていません。
Advanced Serverは、次の2つの 互換構成モードの操作をサポートしています。
•
Oracle互換構成モード。操作は、データ型、関数、データベースオブジェクトの作成などのOracle構文とセマンティクスを使用して実行されます。このモードは、アプリケーションをOracleから移行する場合、またはアプリケーションをOracle互換の方法で構築する場合に便利です。
•
PostgreSQL互換の構成モード。操作は、ネイティブのPostgreSQL構文とセマンティクスを使用して実行されます。このモードは、アプリケーションをPostgreSQLから移行する場合、またはアプリケーションをPostgreSQLと互換性のある方法で構築する場合に便利です。
Oracle互換構成モードでサポートされる機能の詳細については、次の場所にある『Oracle開発者ガイドのデータベース互換性』を 参照してください 。
マルチマスター複製システムの場合、各マスターノードはすべてのマスターノードのソースとすべてのマスターノードのターゲットの両方として機能します。したがって、特定のマルチマスター複製システムまたは クラスター を構成する許可されたデータベースサーバーは、マスター定義ノードのデータベースタイプを選択するときに最初に確立されるクラスターの全体的な構成によって決定されます(セクション6.2.2のステップ3を参照) 。
•
PostgreSQL互換クラスター。すべてのマスターノードは、PostgreSQL互換構成モードでインストールされたPostgreSQLデータベースサーバーまたはAdvanced Serverで構成されている必要があります。
•
Advanced Server Oracle互換クラスター。すべてのマスターノードは、Oracle互換構成モードでインストールされたAdvanced Serverで構成されている必要があります。
手順1:パブリケーションテーブルのトランザクションの保留中のバックログは、アップグレードプロセスを開始する前に複製する必要があります。
ステップ2:保留中のトランザクションがすべてターゲットデータベースに複製されたら、xDB Replication Server 6.1.xパブリケーションサーバーとサブスクリプションサーバーを停止します(セクション5.2.1および5.3.1を参照)。
ステップ3: xDB Replication Server 6.2をインストールします。 xDB Replication Serverのインストール手順については、第3章を参照してください。ただし、次の手順で説明する違いに注意してください。
ステップ4:セクション3.1のステップ11でライセンス契約に同意すると、[コンポーネントの選択]画面が表示されますが、エントリはグレー表示されます。古いxDB Replication Serverコンポーネントは、古いxDB Replication Serverのディレクトリの場所にある新しいコンポーネントに置き換えられます。 [次へ]ボタンをクリックします。
ステップ5: [既存のインストール]画面で、既存のxDB Replication Serverインストールが見つかったことを確認します。 [次へ]ボタンをクリックして、アップグレードを続行します。
ステップ6: [インストールの準備完了]画面で、[次へ]ボタンをクリックします。
ステップ7:表示される残りの画面は、インストールプロセスの完了を確認し、Stack BuilderまたはStackBuilder Plusを終了できるようにします。
ステップ8:インストールの完了後、新しいxDB Replication Server製品のパブリケーションサーバーが実行され、xDB Replication Server 6.1が使用するコントローラーデータベースに接続されます。サブスクリプションサーバーはこの時点で実行されている場合と実行されていない場合がありますが、これはこのプロセスの予想される結果です。
手順9:パブリケーションサーバーとサブスクリプションサーバーの構成ファイルのセットアップを完了します。
で XDB_HOME /etcディレクトリに、XDB Replication Serverバージョン6.2の構成ファイルの新しいセットが作成されます。これらのファイルの名前はxdb_pubserver.conf.newおよびxdb_subserver.conf.newです。新しい構成ファイルには、xDB Replication Server 6.2に追加された新しい構成オプションが含まれています。
アクティブな構成ファイルの最終セットには、 xdb_pubserver.confおよびxdb_subserver.conf という名前を xdb_pubserver.conf 必要があります 。
で XDB_HOME /etc/sysconfigディレクトリ、確認しXDBスタートアップコンフィギュレーションファイルxdbReplicationServer-62.configあなたがXDB Replication Serverの6.2を使用したいパラメータの設定が含まれています。 xDBスタートアップコンフィギュレーションファイルの詳細については、セクション2.3.1.4を参照してください。
ステップ10:パブリケーションサーバーとサブスクリプションサーバーを再起動します(セクション5.2.1および5.3.1を参照)。
ステップ11:パブリケーションサーバーとサブスクリプションサーバーのログファイルをチェックして、エラーが発生していないことを確認します(セクション10.3.2.4を参照)。
ステップ12:必要に応じて、パブリケーションサーバーとサブスクリプションサーバーのポート番号を調整します。
xDB Replication Server 6.2パブリケーションおよびサブスクリプションサーバーは 、それぞれデフォルトのポート番号 9051および9052 を使用するようにインストールされます 。 xDB Replication Server 6.1.xレプリケーションシステムが9051および9052以外のポート番号を使用した場合、セクション10.2.3で説明されているように、この不整合を修正するために変更を実行します。
ステップ13:これで、 xDB Replication Server 6.2を使用して、新しいレプリケーションシステムを作成し、既存のシステムを管理する準備ができました。
注: xDB Replication Server 6.2のリポジトリー構成ファイルedb.repoが/etc/yum.repos.dディレクトリーにセットアップされていることを確認して/etc/yum.repos.d 。詳細については、セクション3.3を参照してください。
手順1:パブリケーションテーブルのトランザクションの保留中のバックログは、アップグレードプロセスを開始する前に複製する必要があります。
ステップ2:保留中のトランザクションがすべてターゲットデータベースに複製されたら、xDB Replication Server 6.1.xパブリケーションサーバーとサブスクリプションサーバーを停止します(セクション5.2.1および5.3.1を参照)。
ステップ3:次の構成ファイルのコピーを保存します。
ステップ4:既存のシングルマスターレプリケーションシステムでOracleパブリケーションデータベースまたはサブスクリプションデータベースが使用されている場合、xDB Replication Server 6.2のパブリケーションサーバーおよびサブスクリプションサーバーがOracle JDBCドライバーバージョンojdbc5以降のコピーにアクセスできることを確認します。インストールされます。詳細については、セクション5.1.3.1を参照してください。
注: 2つのオプションを使用できます。オプション1)Oracle JDBCドライバーをJavaランタイム環境のjre/lib/extサブディレクトリにコピーします。オプション2)Oracle JDBCドライバーをxDB Replication Serverインストールディレクトリのlib/jdbcサブディレクトリにコピーします。
オプション1を実行することをお勧めします(Oracle JDBCドライバーを Javaランタイム環境の jre/lib/extサブディレクトリにコピーします )。
一方、オプション2を実行する場合、 xDB Replication Server 6.2をインストールした後に、Oracle JDBCドライバーを /usr/ppas-xdb-6.2/lib/jdbcディレクトリーにコピーする必要があります 。
ステップ5:コントローラーデータベースが稼働していることを確認するのが最善です。既存のSMRおよびMMRシステムの他のパブリケーションおよびサブスクリプションデータベースは、稼働している必要はありません。
ステップ6: rootアカウントでyum updateコマンドを呼び出して、次のようにxDB Replication Server 6.1.xからxDB Replication Server 6.2へのアップグレードを開始します。
すべてのxDB Replication Serverコンポーネントを更新するには、 ppas-xdb後にアスタリスク文字( * ) を含めるようにしてください 。
•
xDB Replication Server 6.1.xはディレクトリの場所 /usr/ppas-xdb-6.1 残りますが、 binやlibなどのサブディレクトリからファイルが削除されます。
•
では etcのサブディレクトリとして名前変更後のコンフィギュレーションファイルがあるかもしれませんxdb_pubserver.conf.rpmsaveとxdb_subserver.conf.rpmsave 。
•
内 etc/sysconfigサブディレクトリと改名設定ファイルが存在してもよいxdbReplicationServer-61.config.rpmsave 。
•
/etcディレクトリに、1つまたは2つのXDBレプリケーション設定が名前のファイルがあるかもしれませんedb-repl.confと、おそらくedb-repl.conf.rpmsave 。ファイルedb-repl.confは、xDB 6.1.xパブリケーションサーバーが使用するコントローラーデータベースの接続および認証情報が含まれている必要があります。ファイルedb-repl.conf.rpmsaveには、新しい管理者ユーザーパラメータadmin_userおよびadmin_passwordのみが含まれています。パブリケーションサーバーとサブスクリプションサーバーを起動する前に、コントローラーデータベースが稼働中であり、 edb-repl.confファイルにコントローラーデータベース接続と認証パラメーターが含まれていることを確認してください。
ステップ7:パブリケーションサーバーとサブスクリプションサーバーの構成ファイルのセットアップを完了します。
で /usr/ppas-xdb-6.2/etcディレクトリ、XDB Replication Serverバージョン6.2の構成ファイルの新しいセットが作成されます。これらのファイルの名前はxdb_pubserver.confおよびxdb_subserver.confです。新しい構成ファイルには、xDB Replication Server 6.2に追加された新しい構成オプションが含まれています。
xDB Replication Serverバージョン6.1.xによって使用される古い構成ファイルは、 /usr/ppas-xdb-6.1/etcディレクトリーにあり、 xdb_pubserver.conf.rpmsaveおよびxdb_subserver.conf.rpmsave名前変更されています。
注:これらのファイルが存在しない場合は、ステップ3で保存したファイルを使用してください。
アクティブな構成ファイルの最終セットは、 xdb_pubserver.confおよびxdb_subserver.confという名前のディレクトリ /usr/ppas-xdb-6.2/etc 含まれている必要があります 。
/ usr/ppas-xdb-6.2/etc/sysconfigディレクトリで、xDBスタートアップ構成ファイルxdbReplicationServer-62.configにxDB Replication Server 6.2で使用するパラメータ設定が含まれていることを確認します。 xDBスタートアップコンフィギュレーションファイルの詳細については、セクション2.3.1.4を参照してください。
ステップ8:パブリケーションサーバーとサブスクリプションサーバーを再起動します(セクション5.2.1および5.3.1を参照)。
ステップ9:パブリケーションサーバーとサブスクリプションサーバーのログファイルをチェックして、エラーが発生していないことを確認します(セクション10.3.2.4を参照)。
ステップ10:必要に応じて、パブリケーションサーバーとサブスクリプションサーバーのポート番号を調整します。
xDB Replication Server 6.2パブリケーションおよびサブスクリプションサーバーは 、それぞれデフォルトのポート番号 9051および9052 を使用するようにインストールされます 。 xDB Replication Server 6.1.xレプリケーションシステムがパブリケーションサーバーおよびサブスクリプションサーバーに9051および9052以外のポート番号を使用した場合、セクション10.2.3で説明されているように、この不整合を修正するための変更を実行します。
ステップ11:これで、 xDB Replication Server 6.2を使用して新しい複製システムを作成し、既存の複製システムを管理する準備ができました。
xDB Replication Server 6.2の新しくインストールされたパブリケーションサーバーとサブスクリプションサーバーは 、それぞれデフォルトのポート番号 9051と9052 を使用するように構成されています 。セクションで説明したように、これらのポート番号は、XDBスタートアップコンフィギュレーションファイルに設定されている2.3.1.4 。
xDB Replication Server 6.1.xレプリケーションシステムが 9051および9052 以外のポート番号で実行されていた場合、xDB Replication Server 6.2の設定の一部を調整して、これらの既存のレプリケーションシステムを引き続き使用する必要があります。
注:ポート9052およびサブスクリプションサーバーに関する以下の変更は、シングルマスターレプリケーションシステムを実行している場合にのみ必要です。マルチマスターレプリケーションシステムのみを使用している場合、ポート9051とパブリケーションサーバーに関連する変更のみが必要です。
•
xDB Replication Server 6.1.xで使用されていた古いポート番号( 9051および9052 以外 ) を引き続き使用するには 、パブリケーションおよびサブスクリプションサーバーを停止します。 xDBスタートアップ構成ファイルのPUBPORTおよびSUBPORTパラメーターの設定を9051および9052からxDB Replication Server 6.1.xが使用する古いポート番号に9052します。パブリケーションサーバーとサブスクリプションサーバーを再起動します。セクション5.2.1および5.3.1で説明されているように、パブリケーションサーバーとサブスクリプションサーバーを古いxDB Replication Server 6.1.xポート番号とadminユーザーおよびパスワードとともに登録します。
•
xDB Replication Server 6.1.xレプリケーションシステムでデフォルトのポート番号 9051および9052 を使用するには 、古いポート番号をデフォルトのポート番号9051および9052置き換える必要があります。セクション5.2.1および5.3.1で説明されているように、管理ユーザーとパスワードとともにポート番号9051と9052使用して、パブリケーションサーバーとサブスクリプションサーバーを登録します。シングルマスター複製システムの場合のみ、制御スキーマに保存されているポート番号を古いポート番号から9051および9052に変更する必要があります。まず、セクション7.6.1.2で説明されている手順を実行し、次にセクション5.5.3で説明されている手順を実行します。
解決策: Occurs when registering a publication server or subscription server. Verify the user name and password you enter matches the admin user name and password in the xDB Replication Configuration file on the host you are running the publication server or subscription server. See Section 2.3.1.3 Occurs when registering a publication server or subscription server. Verify the user name and password you enter matches the admin user name and password in the xDB Replication Configuration file on the host you are running the publication server or subscription server. See Section .
解決策: Only one publication database definition can be created for any given database. (Oracle is the exception whereby more than one publication database definition can be created for the same Oracle database if different Oracle user names are specified in each publication database definition.)
解決策: Occurs whenever a Java RMI connection cannot be made to the publication server, the subscription server, or a database server. Can occur when registering a publication or subscription server, adding a publication database or a subscription database, or identifying the publication server for a new subscription. Verify you have entered the correct host IP address and port number of the server. Verify the server is running (see Section 10.3.4.2 Occurs whenever a Java RMI connection cannot be made to the publication server, the subscription server, or a database server. Can occur when registering a publication or subscription server, adding a publication database or a subscription database, or identifying the publication server for a new subscription. Verify you have entered the correct host IP address and port number of the server. Verify the server is running (see Section 10.3.4.2 ). If the server is running on Linux, verify that in the /etc/hosts file, the host name is mapped to the correct network IP address, which matches the IP address returned by the Linux ). If the server is running on Linux, verify that in the file, the host name is mapped to the correct network IP address, which matches the IP address returned by the Linux /sbin/ifconfig command, and also matches the IP address you entered in the Host field of the dialog box. Alternatively, instead of modifying the file, the host name is mapped to the correct network IP address, which matches the IP address returned by the Linux command, and also matches the IP address you entered in the Host field of the dialog box. Alternatively, instead of modifying the /etc/hosts file, set configuration option command, and also matches the IP address you entered in the Host field of the dialog box. Alternatively, instead of modifying the file, set configuration option java.rmi.server.hostname to the IP address of the publication or subscription server (see Section file, set configuration option to the IP address of the publication or subscription server (see Section 10.4.1.7 to the IP address of the publication or subscription server (see Section ). Do not use the loopback address 127. xを ). Do not use the loopback address . x . for this entry. x for this entry.
解決策: Occurs when attempting to save a publication database definition. The publication server cannot connect to the database server network location given in the Add Database dialog box. Verify that the correct IP address and port for the database server are given. Verify that the database server is running and is accessible from the host running the publication server.
解決策: Occurs when attempting a snapshot replication from a publication database configured with the log-based method of synchronization replication (that is, WAL based logical replication), and the additional concurrent connection for logical replication exceeds the current setting, , of the max_wal_senders Occurs when attempting a snapshot replication from a publication database configured with the log-based method of synchronization replication (that is, WAL based logical replication), and the additional concurrent connection for logical replication exceeds the current setting, n Occurs when attempting a snapshot replication from a publication database configured with the log-based method of synchronization replication (that is, WAL based logical replication), and the additional concurrent connection for logical replication exceeds the current setting, , of the max_wal_senders postgresql.conf file. Increase the value of configuration parameter in the file. Increase the value of max_wal_senders in the postgresql.conf file of the database server running the publication database. Restart the database server containing the publication database. See Section 2.2.10 file of the database server running the publication database. Restart the database server containing the publication database. See Section .
解決策: Occurs when attempting to create a subscription. If there are no publications in the specified publication server, then this error message is displayed.
解決策: The metadata database objects from a prior publication already exist in the schema under which the publication server is attempting to create new metadata database objects. Perform the operation described in Section 10.3.4.3 The metadata database objects from a prior publication already exist in the schema under which the publication server is attempting to create new metadata database objects. Perform the operation described in Section .
解決策: Make sure all publications subordinate to the publication database definition have been removed. If no publications appear under the Publication Database node in the xDB Replication Console replication tree and the error persists, there may be a problem with the control schema objects. Perform the operation described in Section 10.3.4.3 Make sure all publications subordinate to the publication database definition have been removed. If no publications appear under the Publication Database node in the xDB Replication Console replication tree and the error persists, there may be a problem with the control schema objects. Perform the operation described in Section .
解決策: The control schema objects under the Oracle publication database user schema or under the Postgres or SQL Server schemas _edb_replicator_pub , _edb_replicator_sub , or _edb_scheduler The control schema objects under the Oracle publication database user schema or under the Postgres or SQL Server schemas cannot be deleted by the publication server. The control schema objects or schemas may have already been deleted. The publication database definition cannot be removed using the xDB Replication Console. Perform the operation described in Section 10.3.4.3 cannot be deleted by the publication server. The control schema objects or schemas may have already been deleted. The publication database definition cannot be removed using the xDB Replication Console. Perform the operation described in Section .
解決策: Occurs when attempting to remove the publication database currently set as the controller database. Select another publication database to be used as the controller database. Use the Set As Controller option in the publication databases' context menu to set this database as the controller database. You can then remove the original publication database. See Section 7.7 Occurs when attempting to remove the publication database currently set as the controller database. Select another publication database to be used as the controller database. Use the Set As Controller option in the publication databases' context menu to set this database as the controller database. You can then remove the original publication database. See Section .
解決策: Occurs when attempting to set a publication database as the controller database and the database is not accessible by the publication server. Verify that the correct IP address and port has been defined in the publication database definition. Verify that the database server is running and is accessible from the host running the publication server.
解決策: Occurs when attempting to save a subscription database definition. The subscription server cannot connect to the database server network location given in the Add Database dialog box. Verify that the correct IP address and port for the database server are given. Verify that the database server is running and is accessible from the host running the subscription server.
Database connection cannot be added. FATAL: no pg_hba.conf entry for host " XXX . XXX . XX . XXX ", user " USER_NAME ", database " DB_NAME ", SSL off
解決策: Occurs when attempting to save a subscription database definition. The subscription server is not permitted to connect to the database at the network location given in the Add Database dialog box. Verify that the database host IP address, port number, database user name, password, and database identifier are correct. Verify there is an entry in the pg_hba.conf file permitting access to the database by the given user name originating from the IP address where the subscription server is running. Occurs when attempting to save a subscription database definition. The subscription server is not permitted to connect to the database at the network location given in the Add Database dialog box. Verify that the database host IP address, port number, database user name, password, and database identifier are correct. Verify there is an entry in the file permitting access to the database by the given user name originating from the IP address where the subscription server is running.
解決策: Occurs when attempting to add a subscription database. Verify that the xDB Replication Configuration file on the host running the subscription server contains an entry for a valid controller database. Verify that a publication database has been defined under the publication server as the controller database and its connection information is recorded in the xDB Replication Configuration file. See Section 2.3.1.3 Occurs when attempting to add a subscription database. Verify that the xDB Replication Configuration file on the host running the subscription server contains an entry for a valid controller database. Verify that a publication database has been defined under the publication server as the controller database and its connection information is recorded in the xDB Replication Configuration file. See Section .
解決策: All database servers in a multi-master replication system must be of the same type – either all PostgreSQL (or Advanced Server installed in PostgreSQL compatible configuration mode); or all Advanced Server installed in Oracle compatible configuration mode. This error message is displayed when attempting to add a master node and the database server type differs from the database server type of the master definition node. See Section 10.1.3.3 All database servers in a multi-master replication system must be of the same type – either all PostgreSQL (or Advanced Server installed in PostgreSQL compatible configuration mode); or all Advanced Server installed in Oracle compatible configuration mode. This error message is displayed when attempting to add a master node and the database server type differs from the database server type of the master definition node. See Section .
解決策: When a master node of a multi-master replication system is deleted using the xDB Replication Console or the xDB Replication Server CLI, the control schema objects that were created in the master node are also dropped. These include schemas _edb_replicator_pub , _edb_replicator_sub , and _edb_scheduler . For the log-based method of synchronization replication there are shadow tables and triggers on the publication tables as well. If any of these control schema objects fail to be dropped, this error message is displayed. See Section for directions on how to remove these control schema objects. . For the log-based method of synchronization replication there are shadow tables and triggers on the publication tables as well. If any of these control schema objects fail to be dropped, this error message is displayed. See Section 10.3.4.3 for directions on how to remove these control schema objects. . For the log-based method of synchronization replication there are shadow tables and triggers on the publication tables as well. If any of these control schema objects fail to be dropped, this error message is displayed. See Section for directions on how to remove these control schema objects.
FATAL: no pg_hba.conf entry for host " XXX . XXX . XX . XXX ", user " USER_NAME ", database " DB_NAME ", SSL off
解決策: Occurs when attempting to save a publication database definition. The publication server is not permitted to connect to the database at the network location given in the Add Database dialog box. Verify that the database host IP address, port number, database user name, password, and database identifier are correct. Verify there is an entry in the pg_hba.conf file permitting access to the database by the given user name originating from the IP address where the publication server is running. Occurs when attempting to save a publication database definition. The publication server is not permitted to connect to the database at the network location given in the Add Database dialog box. Verify that the database host IP address, port number, database user name, password, and database identifier are correct. Verify there is an entry in the file permitting access to the database by the given user name originating from the IP address where the publication server is running.
解決策: Occurs when attempting to define a filter rule on a column with a binary data type in a publication table. Filter rules are not permitted on such columns. See Section 2.2.12.3 Occurs when attempting to define a filter rule on a column with a binary data type in a publication table. Filter rules are not permitted on such columns. See Section .
解決策: When adding a filter rule on a publication table, the same filter name or the same filter clause ( clause) cannot be used more than once on a given table. Modify the duplicate filter name or filter clause so it is unique for the table. When adding a filter rule on a publication table, the same filter name or the same filter clause ( WHERE clause) cannot be used more than once on a given table. Modify the duplicate filter name or filter clause so it is unique for the table.
解決策: A snapshot replication must be performed before the first synchronization replication. Perform an on demand snapshot replication.
解決策: This warning is given when is specified as the host address of a replication system component. If is strongly recommended that all replication system components are identified by their specific IP address on the network. localhost or 127.0.0.1 is specified as the host address of a replication system component. If is strongly recommended that all replication system components are identified by their specific IP address on the network. This warning is given when is specified as the host address of a replication system component. If is strongly recommended that all replication system components are identified by their specific IP address on the network.
解決策: Either the user does not have the trigger creation privilege or there is a database server problem. The database server message is displayed as part of the error.
解決策: A database server of type database_typeの A database server of type cannot be used in a multi-master replication system. Only Advanced Server or PostgreSQL database servers may be used as master nodes in a multi-master replication system.
解決策: When creating a subscription in a single-master replication system or creating a master node other than the master definition node in a multi-master replication system, only one filter may be selected for a given table. Uncheck the additional boxes in the Apply column under the Filter Rules tab if more than one box is selected.
解決策: Occurs when creating an Oracle publication or subscription database definition. Copy the Oracle JDBC driver file ojdbc x .jar to subdirectory of where the publication server or subscription server is installed on the host running the publication server or subscription server. Restart the publication server or subscription server. to subdirectory lib/jdbc of where the publication server or subscription server is installed on the host running the publication server or subscription server. Restart the publication server or subscription server. Occurs when creating an Oracle publication or subscription database definition. Copy the Oracle JDBC driver file of where the publication server or subscription server is installed on the host running the publication server or subscription server. Restart the publication server or subscription server.
解決策: Occurs when attempting to add a second master node to a multi-master replication system, but no publication has been defined under the master definition node. Create a publication under the master definition node, then add the additional master nodes. See Section 6.2.3 Occurs when attempting to add a second master node to a multi-master replication system, but no publication has been defined under the master definition node. Create a publication under the master definition node, then add the additional master nodes. See Section .
解決策: Synchronization replication failed due to the unavailability of a target database. See the publication server log file for details. See Section 10.3.2 Synchronization replication failed due to the unavailability of a target database. See the publication server log file for details. See Section .
解決策: Master nodes are still defined in a multi-master replication system in which an attempt is being made to delete the publication from the master definition node. All master nodes (other than the master definition node) must be deleted first before deleting the publication from the master definition node. Perform this deletion process with the xDB Replication Console or xDB Replication Server CLI.
解決策: Warning issued when you attempt to remove a publication with subscriptions associated with it. You can remove the publication, but the subscriptions are no longer usable and should be removed as well.
解決策: Only one publication is supported in a multi-master replication system and only one such multi-master replication system can exist for an xDB Replication Server installation.
解決策: You cannot perform synchronization replication on a snapshot-only publication. Perform snapshot replication instead.
解決策: Occurs when creating an Oracle or SQL Server publication database definition and the current controller database is not a Postgres database (that is, the controller database is an Oracle or SQL Server database). In order to create an Oracle or SQL Server publication database, create and designate a Postgres publication database as the controller database. See Section 7.7 Occurs when creating an Oracle or SQL Server publication database definition and the current controller database is not a Postgres database (that is, the controller database is an Oracle or SQL Server database). In order to create an Oracle or SQL Server publication database, create and designate a Postgres publication database as the controller database. See Section .
Parent table table_name is not selected when its child tables are part of the publication list.
解決策: Table selected for a publication has a foreign key referencing a parent table that has not been chosen for the publication. This is only a warning that the parent table will not be part of the subscription.
解決策: Occurs when attempting synchronization replication and the controller database is not accessible by the publication server. Verify that the correct IP address and port has been defined in the publication database definition of the controller database. Verify that the database server is running and is accessible from the host running the publication server.
解決策: For a Postgres publication, verify that the publication database user has privilege on the publication database, or the database user is a superuser. CREATE ON DATABASE privilege on the publication database, or the database user is a superuser.
解決策: In Postgres, it is possible to create a table with no columns. A publication is not allowed to include a Postgres table with no columns since the corresponding subscription table cannot be created in Oracle.
Publication cannot be created. Publication publication_name already exists on the publisher server. Please choose a different name and then proceed.
解決策: Publication names must be unique within a publication server. Enter a different publication name.
Publication cannot be created. Table スキーマ . table_name replica identity is set to replica_identity_settingに replica identity is set to ます . To define a Filter, the table replica identity should be set to FULL.
解決策: Occurs when a table filter is attempted to be defined on a publication table used in a log-based replication system. Use the ALTER TABLE statement to change Occurs when a table filter is attempted to be defined on a publication table used in a log-based replication system. Use the REPLICA IDENTITY to FULL statement to change . See Section 2.2.12.3 . See Section .
Publication cannot be created. Table table_nameに does not contain a primary key. Transactional replication is not supported for a non-pk table.
解決策: All tables used for synchronization replication must have primary keys. Create a primary key on the table or add the table to a snapshot-only publication.
解決策: For a Postgres publication that is not for snapshot-only, the publication database user must be able to create triggers on the publication tables. In order to do this, the publication database user must have the privilege to execute the statement on the publication tables and the publication database user must have ALTER TABLE statement on the publication tables and the publication database user must have For a Postgres publication that is not for snapshot-only, the publication database user must be able to create triggers on the publication tables. In order to do this, the publication database user must have the privilege to execute the statement on the publication tables and the publication database user must have privileges on the schema containing the publication tables. Verify that one of the following is true: 1) All the tables in the publication are owned by the publication database user and the user has CREATE and USAGE privileges on the schema containing the publication tables. Verify that one of the following is true: 1) All the tables in the publication are owned by the publication database user and the user has statement on the publication tables and the publication database user must have privileges on the schema containing the publication tables. Verify that one of the following is true: 1) All the tables in the publication are owned by the publication database user and the user has privileges on the publication tables' schemas, or 2) the publication database user is a superuser. CREATE and USAGE privileges on the publication tables' schemas, or 2) the publication database user is a superuser.
Publication cannot be removed. Reason: Publication publication_name cannot be removed. Reason: Error: cannot drop table _edb_replicator_pub.rrst_ because other objects depend on it. cannot be removed. Reason: Error: cannot drop table _edb_replicator_pub.rrst_ schema_table_nameを cannot be removed. Reason: Error: cannot drop table _edb_replicator_pub.rrst_ because other objects depend on it.
解決策: PL/pgSQL custom conflict handler functions may exist in the master definition node that are dependent upon the publication's shadow tables. Drop the custom conflict handler functions before deleting the publication.
Publication cannot be updated. Reason: The parent table スキーマ . table_name is selected for removal while it has one or more child tables in the publication list. Make sure that parent-child dependency holds in the publication tables.
解決策: Choose the child tables for removal as well as the parent table.
解決策: A given publication cannot be used in both a multi-master replication system and a single-master replication system.
解決策: The publication does not exist for a given subscription. The subscription is no longer usable and must be removed.
解決策: Remove the subscription, remove tables from the publication, then add the subscription.
解決策: Occurs when attempting to create the publication database definition and the specified publication database user does not have the privilege to create a schema in database db_nameに Occurs when attempting to create the publication database definition and the specified publication database user does not have the privilege to create a schema in database ます . Grant the CREATE privilege on the database to the publication database user
解決策: Verify that the publication server is running. See Section 10.3.4.2 Verify that the publication server is running. See Section . Verify that the database server hosting the controller database specified in the xDB Replication Configuration file is running and the publication server is connected to it. See Section 2.3.1.3 . Verify that the database server hosting the controller database specified in the xDB Replication Configuration file is running and the publication server is connected to it. See Section .
解決策: May be caused by characters in the publication data that are illegal for the character set of the subscription database. Check the snapshot replication failure log file or the database server log file. See Section 10.4.1.2 May be caused by characters in the publication data that are illegal for the character set of the subscription database. Check the snapshot replication failure log file or the database server log file. See Section .
解決策: for supported database server configurations. Use Oracle products for Oracle to Oracle replication. See Section 10.1.3 for supported database server configurations. Use Oracle products for Oracle to Oracle replication. See Section for supported database server configurations. Use Oracle products for Oracle to Oracle replication.
解像度: Occurs when attempting to add a publication database definition with the log-based method of synchronization replication, and the max_replication_slots configuration parameter in the postgresql.conf file is not set to a large enough value to accommodate the additional database. Increase the value of the max_replication_slots parameter and restart the database server. See Section file is not set to a large enough value to accommodate the additional database. Increase the value of the parameter and restart the database server. See Section 2.2.10 for additional information. parameter and restart the database server. See Section for additional information.
Subscription subscription_name already exists on the subscriber server. Please choose a different name and then proceed.
解決策: Subscription names must be unique within a subscription server. Enter a different subscription name.
Subscription subscription_name cannot be removed. Reason: Publication does not exist on the publication server.
解決策: Warning issued if the subscription you are attempting to remove does not have an associated publication. You can still remove the subscription.
解決策: You cannot remove a subscription database definition if there are subordinate subscriptions. Remove the subscriptions first.
解決策: The Subscription node you are trying to select no longer represents an existing subscription. The subscription may have been removed by a concurrent xDB Replication Console or xDB Replication Server CLI session. Click the Refresh icon in the xDB Replication Console toolbar to display the current replication tree.
解決策: Verify that the subscription server is running. See Section 10.3.4.2 Verify that the subscription server is running. See Section
解決策: Synchronization replication failed to complete for all target databases in the multi-master replication system due to the unavailability of some target database. See the publication server log file for details. See Section 10.3.2 Synchronization replication failed to complete for all target databases in the multi-master replication system due to the unavailability of some target database. See the publication server log file for details. See Section .
解決策: Oracle doesn't log changes for a large object column. Such a column cannot be referenced in the triggers that log changes to the shadow tables. Use snapshot-only replication instead.
解決策: Occurs when testing the connection of a publication or subscription database definition. The publication or subscription server cannot connect to the database server network location given in the Add Database dialog box. Verify that the correct IP address and port for the database server are given. Verify that the database server is running and is accessible from the host running the publication or subscription server.
Database connection information test failed. FATAL: no pg_hba.conf entry for host " XXX . XXX . XX . XXX ", user " USER_NAME ", database " DB_NAME ", SSL off
解決策: Occurs when testing the connection of a publication or subscription database definition. The publication or subscription server is not permitted to connect to the database at the network location given in the Add Database dialog box. Verify that the database host IP address, port number, database user name, password, and database identifier are correct. Verify there is an entry in the pg_hba.conf file permitting access to the database by the given user name originating from the IP address where the publication or subscription server is running. Occurs when testing the connection of a publication or subscription database definition. The publication or subscription server is not permitted to connect to the database at the network location given in the Add Database dialog box. Verify that the database host IP address, port number, database user name, password, and database identifier are correct. Verify there is an entry in the file permitting access to the database by the given user name originating from the IP address where the publication or subscription server is running.
解決策: Verify that the database server is running. For Oracle, verify that the Oracle listener program lsnrctl is running. Verify that the database server is running. For Oracle, verify that the Oracle listener program is running.
解決策: Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and the publication database user is not a superuser or does not have REPLICATION privilege. Grant the publication database user the appropriate privilege or specify a different database user who has the appropriate privilege for logical replication as the publication database user. See Section Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and the publication database user is not a superuser or does not have privilege. Grant the publication database user the appropriate privilege or specify a different database user who has the appropriate privilege for logical replication as the publication database user. See Section 2.2.10 privilege. Grant the publication database user the appropriate privilege or specify a different database user who has the appropriate privilege for logical replication as the publication database user. See Section .
解決策: Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and there is no entry in the file where the DATABASE field is set to replication for file where the DATABASE field is set to Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and there is no entry in the pg_hba.conf file where the DATABASE field is set to Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and there is no entry in the user_name . The file of the target database server must contain a replication entry for the publication database user name specified when creating the publication database definition. See Section . The pg_hba.conf file of the target database server must contain a replication entry for the publication database user name specified when creating the publication database definition. See Section 2.2.10 file of the target database server must contain a replication entry for the publication database user name specified when creating the publication database definition. See Section .
解決策: Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and the additional concurrent connection for logical replication exceeds the current setting, , of the max_wal_senders configuration parameter in the Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and the additional concurrent connection for logical replication exceeds the current setting, n Occurs when attempting to add a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and the additional concurrent connection for logical replication exceeds the current setting, configuration parameter in the postgresql.conf file. Increase the value of max_wal_senders in the postgresql.conf file of the database server running the publication database. Restart the database server containing the publication database. See Section 2.2.10 file of the database server running the publication database. Restart the database server containing the publication database. See Section .
解決策: Occurs when attempting to create a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and the Postgres database server is not version 9.4 or later. Only Postgres database servers of version 9.4 or later support the log-based method of synchronization replication. See Section 2.2.10 Occurs when attempting to create a publication database definition with the log-based method of synchronization replication (that is, WAL based logical replication), and the Postgres database server is not version 9.4 or later. Only Postgres database servers of version 9.4 or later support the log-based method of synchronization replication. See Section .
解決策: The DDL statements in the text file specified for the DDL change replication feature contain syntax errors or are not supported by the DDL change replication feature. See Section 7.8 The DDL statements in the text file specified for the DDL change replication feature contain syntax errors or are not supported by the DDL change replication feature. See Section .
解決策: Occurs when attempting an operation such as performing synchronization replication or creating a schedule on a publication or subscription database that cannot be accessed by the xDB Replication Console. Verify that the publication and/or subscription servers are running. Verify that the database servers of the publication and/or subscription databases are running.
解決策: Occurs when attempting to create an MMR publication database definition and the publication server is unable to create the control schema objects in the new publication database. This typically results when creating a second publication database definition and the publication server is unable to copy by snapshot the control schema objects from the controller database to the new publication database. The publication database user of the new publication database must be a superuser. In addition, in system catalog table pg_catalog.pg_authid , column for this superuser. See Section rolcatupdate , column must be set to true for this superuser. See Section must be set to for this superuser. See Section 10.4.4 for this superuser. See Section .
Unable to create Subscription subscription_name Unable to create Subscription . Reason: Connection rejected: FATAL: no pg_hba.conf entry for host " XXX . XXX . XX . XXX " user " USER_NAME ", database " DB_NAME ", SSL off
解決策: Occurs when creating a subscription. The subscription server running on host xxxで Occurs when creating a subscription. The subscription server running on host . xxx . xx . xxx could not access the controller database. Verify that the file on the controller database server permits access from the subscription server host could not access the controller database. Verify that the pg_hba.conf file on the controller database server permits access from the subscription server host could not access the controller database. Verify that the file on the controller database server permits access from the subscription server host
解決策: Occurs when creating a subscription. The subscription server running on host xxxで Occurs when creating a subscription. The subscription server running on host . xxx . xx . xxx could not access the publication database. Verify that the file on the publication database server permits access from the subscription server host. could not access the publication database. Verify that the pg_hba.conf file on the publication database server permits access from the subscription server host. could not access the publication database. Verify that the file on the publication database server permits access from the subscription server host.
解決策: The subscription database type is not supported for the intended publication database type. See Section for a list of permitted source and target database server configurations. 10.1.3.2 The subscription database type is not supported for the intended publication database type. See Section for a list of permitted source and target database server configurations.
解決策: The subscription server was unable to create a subscription table definition in the intended target schema. Typically, the reason is that a table with the same name already exists in the target schema of the subscription database. This can occur if you create a subscription, then remove it, but fail to drop the table definitions created under the target schema, then try to create the subscription a second time.
解決策: Occurs when attempting to create an SMR publication database definition and the publication server is unable to create the control schema objects in the new publication database. This typically results when creating a second publication database definition and the publication server is unable to copy by snapshot the control schema objects from the controller database to the new publication database. The publication database user of the new publication database must be a superuser. In addition, in system catalog table pg_catalog.pg_authid , column for this superuser. See Section rolcatupdate , column must be set to true for this superuser. See Section must be set to for this superuser. See Section 10.4.4 for this superuser. See Section .
Unable to perform snapshot for subscription ションsubscription_nameの Unable to perform snapshot for subscription . Reason: DB-42501: com.edb.util.PSQLException: ERROR: permission denied for relation pg_class.
解決策: Occurs when attempting a snapshot replication. The database user of the database receiving the snapshot must be a superuser. In addition, in system catalog table pg_catalog.pg_authid , column for this superuser. See Section rolcatupdate , column must be set to true for this superuser. See Section must be set to for this superuser. See Section 10.4.4 for this superuser. See Section .
Unable to perform snapshot for subscription ションsubscription_nameの Unable to perform snapshot for subscription . Reason: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host " XXX . XXX . XX . XXX ", user " USER_NAME ", database " DB_NAME ", SSL off
解決策: Occurs when attempting a snapshot replication. The publication server running on host xxxで Occurs when attempting a snapshot replication. The publication server running on host . xxx . xx . xxx could not access the subscription database. Verify that the file on the subscription database server permits access from the publication server host. could not access the subscription database. Verify that the pg_hba.conf file on the subscription database server permits access from the publication server host. could not access the subscription database. Verify that the file on the subscription database server permits access from the publication server host.
Unable to synchronize. Reason: FATAL: no pg_hba.conf entry for host " XXX . XXX . XX . XXX ", user " USER_NAME ", database " DB_NAME ", SSL off
理由: Occurs during an implicit synchronization following snapshot replication. The publication server running on host xxxで Occurs during an implicit synchronization following snapshot replication. The publication server running on host . xxx . xx . xxx could not access the subscription server's controller database. Verify that the file on the subscription server permits access from the publication server host using network address could not access the subscription server's controller database. Verify that the pg_hba.conf file on the subscription server permits access from the publication server host using network address xxx file on the subscription server permits access from the publication server host using network address could not access the subscription server's controller database. Verify that the file on the subscription server permits access from the publication server host using network address . xxx . xx . xxx .
解決策: The control schema objects in the publication database may have been deleted or corrupted. For an Oracle publication database the control schema objects are located in the publication database user's schema. For a Postgres or SQL Server publication database the metadata database objects are located in schemas _edb_replicator_pub , _edb_replicator_sub , and _edb_scheduler . See Section 10.3.4.3 . See Section .
解決策: An Oracle publication database user must have CONNECT , RESOURCE , and CREATE ANY TRIGGER privileges.
/ var / log / xdb- x 。 x /mtk.log
POSTGRES_HOME \ .enterprisedb \ xdb \ x 。 x \ mtk.log
POSTGRES_HOMEは、Windows postgresアカウント(Oracle互換構成モードでインストールされたAdvanced Serverのenterprisedbアカウント)のホームディレクトリです。 POSTGRES_HOMEの特定の場所は、Windowsのバージョンによって異なります。 xDB Replication Serverのバージョン番号はxで表されます。 x 。
ログファイルオプションの設定の詳細については、セクション 10.4.1.1を参照してください 。
POSTGRES_INSTALL_HOME / data / pg_log
パブリケーションサーバーとサブスクリプションサーバーのログファイル pubserver.log[. n ]およびsubserver.log[.次のディレクトリ内のn ] :
POSTGRES_HOME \ .enterprisedb \ xdb \ x 。 x
[. n ]はオプションの整数接尾辞であり、その存在は10.4.1.1項で説明されているlogging.file.count構成オプションに依存します。
POSTGRES_HOMEは、Windows postgresアカウント(Oracle互換構成モードでインストールされたAdvanced Serverのenterprisedbアカウント)のホームディレクトリです。 POSTGRES_HOMEの特定の場所は、Windowsのバージョンによって異なります。 xDB Replication Serverのバージョン番号はxで表され. x 。
注:これらのファイルに記録されるメッセージの重大度レベルは、構成オプションによって制御できます。セクション10.4.1.1を参照してください。
Linuxの場合のみ:パブリケーションサービスおよびサブスクリプションサービスのスタートアップログファイルedb-xdbpubserver.logおよびedb-xdbsubserver.log 、およびサービススクリプトログファイルedb-xdbpubserver_script.logおよびedb-xdbsubserver_script.logをディレクトリ/var/log/edb/xdbpubserverおよび/var/log/edb/xdbsubserverこれらのログファイルには、パブリケーションサーバーとサブスクリプションサーバーの起動に使用されるスクリプトからの出力が含まれており、通常、パブリケーションサーバーとサブスクリプションサーバーが起動されたポート番号を確認するために使用できます。
注:パブリケーションサービスおよびサブスクリプションサービスの起動ログファイルは、WindowsおよびMac OS Xオペレーティングシステムでは生成されません。
xDBレプリケーション構成ファイルの詳細は、 2.3.1.3 項を参照してください 。
POSTGRES_INSTALL_HOME / data / pg_log
10.3.2.6 Oracle Errors
パラメータ USER_DUMP_DEST 指定されたディレクトリには、ユーザープロセスで指定されたエラーが含まれています。
パラメータ BACKGROUND_DUMP_DEST 指定されたディレクトリには、Oracleバックグラウンドプロセスで指定されたエラーが含まれています。
手順1:パブリケーションデータベースのデータベースサーバー、サブスクリプションデータベースのデータベースサーバー(シングルマスターレプリケーションシステムの場合)、およびマスターノードのデータベースサーバー(マルチマスターレプリケーションシステムの場合)がすべて実行されていることを確認します。
手順2: xDBレプリケーションコンソールで情報を表示する場合、特にレプリケーションシステムの構成を変更した後、ツールバーの[更新]アイコンをクリックして、最新の情報を表示していることを確認します。
手順3:パブリケーションサーバーとサブスクリプションサーバー(シングルマスターレプリケーションシステム用)が実行されていることを確認します。それらが実行されておらず、開始できない場合は、セクション10.3.4.2を参照してください。
ステップ4: Oracleパブリケーションまたはサブスクリプションデータベースを使用している場合、Oracle JDBCドライバーファイルがXDB_HOME /lib/jdbcディレクトリにコピーされていることを確認します。 XDB_HOMEは、xDB Replication Serverをインストールした場所です。
ステップ5:パブリケーションデータベースユーザーに必要な特権が付与されていることを確認します。
•
msdbデータベース、データベースのユーザーがいるパブリケーションデータベースの定義で与えられたSQL Serverログインにマップされていることを確認しEXECUTEとSELECTスキーマに対する権限をdbo 。
•
パブリケーションテーブルを更新するデータベースユーザーについては、これらのデータベースユーザーが xDB Replication Serverメタデータデータベースオブジェクトを含むスキーマに対するEXECUTE 、 SELECT 、およびINSERT特権を持っていることを確認してください 。
手順6:サブスクリプションデータベースユーザーに必要な特権が付与されていることを確認します。
ステップ7(Linuxのみ): /sbin/ifconfigコマンドによって返されるネットワークIPアドレスが/etc/hostsファイルのホスト名に関連付けられたIPアドレスと一致するか(セクション5.1.6.2を参照)、またはパブリケーションおよびサブスクリプションサーバー構成ファイルのjava.rmi.server.hostname構成オプションで指定されたIPアドレス(セクション10.4.1.7を参照)。
注:サブスクリプションサーバーは、シングルマスターレプリケーションシステムにのみ適用されます。
手順1: pubserver.logおよびsubserver.logファイルでエラーを確認します。
手順2:コントローラデータベースを実行しているデータベースサーバーのログファイルでエラーを確認します。
手順3:パブリケーションサーバーとサブスクリプションサーバーを実行しているホスト上のxDBレプリケーション構成ファイルのユーザー名とパスワードが、パブリケーションサーバーとサブスクリプションサーバーが試行しているコントローラーデータベースを実行しているデータベースサーバーのデータベースユーザー名とパスワードと一致することを確認しますアクセスするために。
ステップ4:コントローラーデータベースがPostgresデータベースの場合、そのPostgresデータベースサーバーのpg_hba.confファイルに、ユーザーがパブリケーションサーバーとサブスクリプションサーバーを実行しているホストのIPアドレスからコントローラーデータベースへのアクセスを許可するエントリがあることを確認しますxDBレプリケーション構成ファイルの名前。
次の例では、SMRパブリケーションデータベース edbと3つのMMRマスターノードデータベースmdnnode 、 mmrnode_a 、およびmmrnode_bはすべて、xDBレプリケーション構成ファイルで指定されたコントローラーデータベースに接続する同じパブリケーションサーバーによって管理されます。したがって、すべてのパブリケーションデータベースedb 、 mdnnode 、 mmrnode_a 、およびmmrnode_bは、同じ制御スキーマ情報が含まれている必要があります。
shared_controller_repconsole
前の例では、サブスクリプションデータベース subdbは、コントロールスキーマの削除がパブリケーションデータベースで実行された場合に削除する必要があるコントロールスキーマオブジェクトが含まれています。
この削除プロセスを実行した後、セクション 5.2以降の指示に従って、シングルマスターレプリケーションシステムを再作成する必要があります。セクション6.2以降の指示に従って、マルチマスター複製システムを再作成する必要があります。
ステップ1:公開サーバーを停止します。
ステップ2:サブスクリプションサーバーを停止します。
ステップ3:パブリケーションデータベース内に含まれるコントロールスキーマオブジェクトを探します。このセクションで使用される例では、 pubuserはパブリケーションデータベースのユーザー名です。パブリケーションは、 deptとemp 2つのテーブルで構成されています。
Oracleのみ: Oracleコントロールスキーマオブジェクトのリストについては、セクション5.2.4.1を参照してください。
SQL Serverのみ: SQL Serverコントロールスキーマオブジェクトのリストについては、セクション5.2.4.2を参照してください。
Postgresのみ: Postgresコントロールスキーマオブジェクトのリストについては、セクション5.2.4.3を参照してください。
手順4:コントロールスキーマオブジェクト(Oracleのパブリケーションデータベースユーザー名、または_edb_replicator_pub 、 _edb_replicator_sub 、 _edb_scheduler 、または_edb_replicator_pubと共にSQL Serverパブリケーションデータベースを構成するときに作成または選択したコントロールスキーマオブジェクトを含むことになっているスキーマの場合、 _edb_replicator_sub 、および_edb_scheduler for Postgres)が欠落しているか、制御スキーマの下にデータベースオブジェクトが欠落している場合、残りのすべての制御スキーマオブジェクトを削除するプロセスを完了する必要があります。
ステップ5:シングルマスターレプリケーションシステムの場合、サブスクリプションデータベースには、 rrep_txset_healthという名前のテーブル形式の単一の制御スキーマオブジェクトが含まれます。サブスクリプションデータベースの各タイプのこのコントロールスキーマオブジェクトのリストについては、セクション5.3.4を参照してください。
手順6:この時点で、すべてのコントロールスキーマとコントロールスキーマオブジェクトがすべてのパブリケーションデータベースとすべてのサブスクリプションデータベースにそのまま表示される場合、問題は別の場所にある可能性があります。このセクションのこれ以降の手順は続行しないでください。代わりに、セクション10.3.3のチェックリストを再確認してください。
手順7:すべてのパブリケーションデータベースに対してこの手順を繰り返して、その制御スキーマと制御スキーマオブジェクトを削除します。
Oracleのみ:パブリケーションユーザー名がまだ存在する場合は、SQL * Plusまたは他のOracleデータベース管理ユーティリティにログオンし、パブリケーションユーザーが所有するすべてのコントロールスキーマオブジェクトを削除します。または、カスケードオプションを使用してパブリケーションデータベースユーザーとそのデータベースオブジェクトを削除できますが、レプリケーションシステムを再構築する場合は、パブリケーションデータベースユーザーを再作成し、権限を再割り当てする必要があります。パブリケーションデータベースユーザーの作成方法については、セクション5.1.4を参照してください。次の例は、カスケードオプションの使用方法を示しています。
SQL Serverのみ:手順3にリストされている制御スキーマオブジェクトのいずれかがまだ存在する場合は、SQL Serverコマンドラインプログラム、 sqlcmd 、またはSQL Server Management Studioにログオンし、これらのオブジェクトを削除します。次の例では、いくつかのコントロールスキーマオブジェクトがスキーマpubuser下に作成されたと想定しています。他の制御スキーマオブジェクトは、 _edb_replicator_pub 、 _edb_replicator_sub 、および_edb_scheduler下に作成されます。パブリケーションテーブルは、スキーマedbあるdeptとempです。
_edb_replicator_pubスキーマの下のコントロールスキーマオブジェクトは、次のように削除されます。
SQL Server 2008のみ:パブリケーションデータベースがSQL Server 2008の場合、次のコントロールスキーマオブジェクトを削除します。
SQL Server 2012、2014のみ:パブリケーションデータベースがSQL Server 2012または2014の場合、次のコントロールスキーマオブジェクトを削除します。
ドロップ _edb_replicator_pub制御スキーマを:
_edb_replicator_subスキーマの下のコントロールスキーマオブジェクトとスキーマ自体は、次のように削除されます。
注(SQL Server 2012、2014の場合):パブリケーションデータベースがSQL Server 2012または2014の場合、次のリストの最初のテーブルrrep_common_seqは存在しません。したがって、最初のDROP TABLE _edb_replicator_sub.rrep_common_seqコマンドを発行しないでDROP TABLE _edb_replicator_sub.rrep_common_seq 。
次のように、 _edb_schedulerスキーマの下の制御スキーマオブジェクトとスキーマ自体が削除されます。
pubuserスキーマの下の制御スキーマオブジェクトは、次のように削除されます。
Postgresのみ:スキーマ_edb_replicator_pub 、 _edb_replicator_sub 、または_edb_schedulerいずれかがパブリケーションデータベースにまだ存在する場合、スキーマとそのすべてのデータベースオブジェクトを削除します。次の例は、 psqlでパブリケーションデータベースedb確立された接続を示しています。次に、 DROP SCHEMA CASCADEステートメントを使用してスキーマを削除します。
手順8:サブスクリプションデータベースごとにこの手順を繰り返して、その制御スキーマと制御スキーマオブジェクトを削除します。
すべてのサブスクリプションデータベースでこのテーブルを削除します。 SQL ServerおよびPostgresサブスクリプションデータベースの場合、親スキーマ _edb_replicator_subも削除します 。 Oracleサブスクリプションデータベースの場合、親スキーマはxDB Replication Serverによって生成されないため、親スキーマを保持するか削除するかを決定します。
Oracleの場合のみ: RREP_TXSET_HEALTHテーブルは、サブスクリプションデータベースユーザーのスキーマに作成されます。このテーブルを削除します。
SQL Serverの場合のみ: rrep_txset_healthテーブルは、 _edb_replicator_subという名前のスキーマに作成されます。このテーブルとスキーマを削除します。
Postgresの場合のみ: rrep_txset_healthテーブルは、名前のスキーマに作成され_edb_replicator_sub 。このテーブルとスキーマを削除します。
ステップ9: xDBレプリケーション構成ファイルで、 user 、 password 、 host 、 port 、 database 、およびtypeパラメーターを含む行を削除しdatabase 。
次のパラメーターを使用して行を保持します: admin_user 、 admin_password 、およびlicense_key (存在する場合)。
xDBレプリケーション構成ファイルの詳細は、 2.3.1.3 項を参照してください 。 xDBレプリケーション構成ファイルのファイルシステムの場所については、セクション3.5を参照してください。
ステップ10:パブリケーションサーバーを起動します。
ステップ11:サブスクリプションサーバーを起動します。
手順12:レプリケーションツリーに次のように表示されます。
ステップ13:シングルマスターレプリケーションシステムについては、セクション5.2以降で説明されているように、レプリケーションシステムを再作成する必要があります。マルチマスター複製システムについては、セクション6.2以降を参照してください。
セクション 2.2.10.2で 説明したように、論理レプリケーションスロットは、同期レプリケーションのログベースの方法に使用されます。ログベースの複製システムが使用されている間、これらの複製スロットはPostgresデータベースに接続されたままです。複製システムが削除されると、これらの複製スロットも削除されます。
active列が複製スロットがアクティブであるか否かを示します。
アクティブなレプリケーションスロットを非アクティブにするには、最初にパブリケーションサーバーを停止します。場合は active複製スロットの列が現在表示f偽のために、あなたは、レプリケーションスロットを削除することができます。
以下は 、データベースmmrnode 複製スロット xdb_79910_5が非アクティブ化されたことをmmrnodeています。
•
スナップショットレプリケーションで代替の読み込み方法を使用します。 (これらの特定のオプションの詳細については、 セクション 5.8.1を参照してください。)
•
マルチマスターレプリケーションの特別な構成オプション。 (これらの特定のオプションの詳細については、 セクション 6.12を参照してください。)
•
同期レプリケーションのログベースの方法の特別な構成オプション。 (これらの特定のオプションの詳細については、 セクション 10.4.1.15を参照してください。)
パブリケーションサーバーの構成オプションは、ファイル名がxdb_pubserver.conf パブリケーションサーバー構成ファイルと呼ばれるテキストファイルで設定および渡されます。
サブスクリプションサーバーの構成オプションが設定され、ファイル名がxdb_subserver.conf サブスクリプションサーバー構成ファイルと呼ばれるテキストファイルで渡されます。
これらのファイルのディレクトリの場所については、 セクション 3.5を参照してください 。
手順1:パブリケーションおよびサブスクリプションサーバーの構成ファイルは、xDB Replication Serverのインストール中に作成され、すべての構成オプションがデフォルト設定のコメントとして既に含まれています。
ステップ2:パブリケーションまたはサブスクリプションサーバーを再起動します。
注:このセクションで説明するオプションは、特に指定がない限り、パブリケーションサーバーとサブスクリプションサーバーに適用されます。
パブリケーションおよびサブスクリプションサーバーのログファイルの詳細については、セクション 10.3.2.4を参照してください 。
Migration Toolkitログファイルの詳細については、セクション 10.3.2.2を参照してください 。
logging.levelオプションを設定して、パブリケーションサーバーのログファイルとサブスクリプションサーバーのログファイルに書き込まれるメッセージの重大度を制御します。
デフォルト値は WARNINGです。
logging.file.sizeオプションを設定して 、パブリケーションサーバーログファイルとサブスクリプションサーバーログファイルの最大ファイルサイズ(メガバイト単位)を制御します。
注:場合logging.file.countに設定されている0の設定logging.file.size無視されます。ログファイルは無制限に拡大できます。
デフォルト値は 50メガバイトです。
logging.file.countオプションを設定して 、パブリケーションサーバーのログファイルとサブスクリプションサーバーのログファイルのログファイルローテーション履歴内のファイル数を制御します。
n のデフォルト値は20です。
n ゼロ以外の値は、作成されるログファイルの最大数を指定します。
注:残りの説明では、 pubserver.logという名前のパブリケーションサーバーのログファイルを例として使用します。サブスクリプションサーバーの場合、ログファイルの名前はsubserver.logです。
•
値 0を指定してログファイルのローテーションを無効にし、 pubserver.logという名前の単一の無制限のサイズのログファイルを作成します。このログファイルは、 logging.file.size設定を無視して無制限のサイズに拡大します。
•
値 1を指定してログファイルのローテーションを無効にし、 pubserver.logという名前の単一の制限されたサイズのログファイルを作成します。ログファイルが削除され、ログファイルがlogging.file.size設定されたサイズ制限に達するたびに、新しいログファイルが作成されlogging.file.size 。
•
ログファイルのローテーションを有効にするには、 2以上の値を指定します 。すべてのログファイル名には整数の接尾辞が付いています(たとえば、 pubserver.log.0 、 pubserver.log.1 、 pubserver.log.2 )。
ログファイルのローテーションが有効になり、現在のアクティブなログファイル( pubserver.log.0 )がlogging.file.sizeで指定されたサイズに達すると、次のイベントが発生します。
•
最も古いメッセージが含まれるログファイル( pubserver.log. n -1 )が削除されます。
•
残りの各ログファイルは、次の大きな整数サフィックスと改名されている( pubserver.log. m名前に変更されるpubserver.log. m +1でm変から0までn -2 )。
注:このオプションは、公開サーバーにのみ適用されます。
Migration Toolkitログファイルの最大ファイルサイズ(メガバイト単位)を制御するには、 mtk.logging.file.sizeオプションを設定します。
デフォルト値は 50メガバイトです。
注:このオプションは、公開サーバーにのみ適用されます。
Migration Toolkitログファイルのログファイルローテーション履歴のファイル数を制御するには、 mtk.logging.file.countオプションを設定します。
n のデフォルト値は20です。
n ゼロ以外の値は、作成される履歴ログファイルの最大数を指定します。
•
値 0を指定してログファイルのローテーションを無効にし、 mtk.logという名前の単一の制限サイズのログファイルを作成します。ログファイルが削除され、ログファイルがmtk.logging.file.size設定されたサイズ制限に達するたびに、新しいログファイルが作成されmtk.logging.file.size 。
•
ログファイルのローテーションを有効にするには、 1以上の値を指定します 。すべてのログファイル名には整数の接尾辞が付いています(たとえば、 mtk.log.1 、 mtk.log.2 )。
ログファイル mtk.logは、最新のメッセージを含む現在のアクティブなログファイルです。
現在アクティブなログファイル( mtk.log )がmtk.logging.file.sizeで指定されたサイズに達すると、次のイベントが発生します。
•
最も古いメッセージ(含むログ・ファイル mtk.log. n )削除されます。
•
•
ログファイル mtk.logはmtk.logが変更されmtk.log.1 。
注:このセクションで説明されているオプションは、パブリケーションサーバーにのみ適用されます。
注:このオプションは、Oracle RAWやBLOBデータ型などのバイナリデータ型の列で検出されたNULL文字を変更しません。
charは、ヌル文字の代わりに使用する単一の文字です。たとえば、次の組み合わせは各ヌル文字をハッシュ記号#に置き換えます。
注:このセクションで説明するオプションは、サブスクリプションサーバーにのみ適用されます。
デフォルトでは、パブリケーションテーブルの列 CHECK制約は、サブスクリプションの作成時にサブスクリプションテーブル定義に移行されます。サブスクリプションテーブル定義の一部としてCHECK制約が必要ない場合は、このオプションをtrue設定します。
CHECK制約がパブリケーションデータベースサーバーでサポートされる組み込み関数に基づいており、この組み込み関数がサブスクリプションデータベースサーバーに存在しない場合、 このオプションを true 設定すると便利です。
デフォルト値は falseです。
注:このセクションで説明するオプションは、パブリケーションサーバーとサブスクリプションサーバーの両方で同じ値に設定する必要があります。
注:この機能は、Advanced Serverデータベースのサブスクリプションにのみ適用されます。 PostgreSQLデータベースのサブスクリプションには適用されません。
•
範囲分割。列に定義された値の範囲により、行が格納される表領域が決まります。
•
パーティションのリスト。列に定義された値のリストにより、行が格納される表領域が決まります。
•
ハッシュ分割。列のアルゴリズムによりハッシュキーが生成され、行が格納されるテーブルスペースが決定されます。
注: Advanced Serverを使用している場合、Oracle互換のテーブルパーティション構文を使用したテーブルパーティションは使用可能な機能です。詳細は、 『 Oracle開発者ガイドのデータベースの互換性』の表のパーティション化に関するセクションを参照してください。レプリケーションシステムにPostgresパーティションテーブルを含める方法については、セクション7.10を参照してください。このセクションで説明するimportPartitionAsTableオプションは、Oracleデータベースのテーブルパーティションにのみ適用されます。
importPartitionAsTableオプションは、Oracleパーティションテーブルがパブリケーションの一部である場合の importPartitionAsTable制御します。
デフォルト値は falseです。
Oracleパーティションテーブルタイプと importPartitionAsTableオプションの設定に応じて、次のいずれかが発生する場合があります。
とき importPartitionAsTable=false (デフォルト設定)、次の処理が発生します。
注: Advanced Serverが継承したテーブルのセットとして作成されたサブスクリプションテーブルがある場合は、パブリケーションサーバー構成ファイルのenableConstBeforeDataLoadオプションもtrue設定する必要がありtrue 。セクションを参照してください。 10.4.1.6をについては、 enableConstBeforeDataLoadオプション。
とき importPartitionAsTable=true 、次の処理が行われます。
importPartitionAsTableオプションをtrue 設定すると、より広い範囲のOracleパーティションテーブルタイプを複製できますが、継承を使用してパーティションをシミュレートすることなく、通常のAdvanced Serverテーブルとして複製できます。
注:このセクションで説明するオプションは、パブリケーションサーバーにのみ適用されます。
oraJDBCCustomURL = customURL_string
ドル記号( $ )が前に付いたパラメータは、Oracleパブリケーションデータベースを追加するときに指定された実際の接続値に基づいて動的に置き換えられます(セクション5.2.2を参照)。または、ドル記号が前に付いたパラメーターをURL文字列のハードコードされた値に置き換えることができます。この場合、これらのハードコードされた値は、パブリケーションデータベースを追加するときに指定された値をオーバーライドします。
注:このセクションで説明するオプションは、特に指定がない限り、パブリケーションサーバーにのみ適用されます。
スナップショットレプリケーションでJDBC COPYを使用する場合 、列値間のデータ区切り文字はエスケープされたタブ文字( \t )です。タブ区切り文字をエスケープしたくない場合は、このオプションをfalse設定します。
デフォルト値は trueです。
スナップショットレプリケーションでJDBC COPYを使用する場合 、列値間のデータ区切り文字はエスケープされたタブ文字( \t )です。データ区切り文字を変更するには、このオプションを設定します。
cは、データ区切り文字の単一の置換文字を示します。
デフォルト値は \tです。
enableConstBeforeDataLoadトリガーを含むテーブル制約は、ターゲット表にデータをロードする前に再有効化されているかどうかを制御します。デフォルトのプロセスでは、最初にテーブルがロードされ、その後制約が有効になります。
デフォルト値は falseです。
注:このセクションで説明するオプションは、パブリケーションサーバーとサブスクリプションサーバーに適用されます。
セクション5.1.6.2で説明したように、ホスト名が非ループバックIPアドレスに関連付けられるように /etc/hostsファイルを変更する別の方法は、 java.rmi.server.hostnameオプションを使用してネットワークIPアドレスを指定することです。
java.rmi.server.hostname = xxx 。 xxx 。 xx 。 xxx
たとえば、 /etc/hostsファイルを変更して、ホスト192.168.2.19実行されているパブリケーションまたはサブスクリプションサーバーの次のようになります。
注:このセクションで説明するオプションは、パブリケーションサーバーにのみ適用されます。
注: pgAgentジョブスケジューリングの使用は、Postgresがパブリケーションデータベースである場合にのみ重要です。
注:パブリケーションデータベースが存在するホストにpgAgentをインストールして実行する必要があります。
とき pgdbscheduleオプションがに設定されているtrue 、XDB Replication Serverのではなく、デフォルトのQuartzジョブスケジューラのpgAgentのジョブスケジューラを使用しています。
デフォルト値は falseです。
注:このセクションで説明するオプションは、パブリケーションサーバーにのみ適用されます。
デフォルト値は falseです。
イベント履歴のクリーンアップジョブは毎日午前12時に実行され 、 n日より古い制御スキーマ xdb_events 、 xdb_events_status 、 xdb_pub_replog 、およびxdb_pub_table_replogテーブルから完了、履歴、イベント、およびレプリケーション履歴データを削除するようにスケジュールされています 。デフォルトでは、7日より古い履歴データは削除されます。
値に 0を指定すると、すべての、完了した、イベント履歴とレプリケーション履歴データが、その年齢に関係なくクリーンアップされます。
イベントとレプリケーション履歴のクリーンアップについては、セクション 7.5.4を参照してください 。
デフォルト値は 7日です。
注:このセクションで説明するオプションは、パブリケーションサーバーにのみ適用されます。
DDLの変更を適用する前にテーブルに排他ロックをかけたくない場合は、 ddlChangeTableLockをfalse 設定しfalse 。このオプションは、ターゲットテーブルで予期される書き込みトランザクションがない場合にのみfalseに設定する必要があります。書き込みトランザクションが発生した場合、レプリケーションシステムによって記録されない場合があります。
DDL変更レプリケーションの詳細は、 7.8 項を参照してください 。
デフォルト値は trueです。
注:このセクションで説明するオプションは、パブリケーションサーバーにのみ適用されます。
パブリケーションサーバーの再起動後にレプリケーション履歴でゼロのトランザクションカウントレコードを維持する場合は、 persistZeroTxRepEventをtrue に設定しtrue 。そうしないと、パブリケーションサーバーが再起動されると、ゼロトランザクションカウントレコードが使用できなくなります。
レプリケーション履歴の表示については、セクション 7.4を参照してください 。
デフォルト値は falseです。
注:このオプションは、公開サーバーにのみ適用されます。
とき skipTablePrivilegesに設定されているfalseデフォルト値で、マスター定義ノードにおける出版テーブル上のデータベース・ユーザー権限は、新しく作成された非MDNノードにおける出版テーブル上の同じデータベース・ユーザーに付与されています。
非MDNノードを定義するときに、パブリケーションサーバーがこれらのデータベースユーザー権限を非MDNパブリケーションテーブルおよびシャドウテーブルに付与しないようにするには、 skipTablePrivilegesをtrue に設定しtrue 。この場合、これらのテーブルへの更新アクセスを提供するデータベースユーザーに対して、非MDNノードのパブリケーションテーブルおよび対応するシャドウテーブルに対する権限を明示的に付与する必要があります。必要な特権に関する情報については、セクション5.1.4.3のステップ2を参照してください。
デフォルト値は falseです。
注:このオプションは、サブスクリプションサーバーにのみ適用されます。
注:このオプションは、パブリケーションデータベースとサブスクリプションデータベースの両方がPostgresデータベースである場合にのみ適用されます。
とき skipTablePrivilegesに設定されているtrueデフォルト値である、何のデータベースユーザーの権限は、任意のデータベース・ユーザーにこれらのサブスクリプションテーブルの上に付与されません。デフォルトでは、サブスクリプションデータベース定義の作成時に指定されたサブスクリプションデータベースユーザー(セクション5.3.2を参照)は、サブスクリプションテーブルの所有者です。
ただし、サブスクリプションサーバーで、パブリケーションテーブルへのアクセス権限を既に持っている同じデータベースユーザーのサブスクリプションテーブルにデータベースユーザー権限を付与する場合は、サブスクリプションサーバー構成ファイルでskipTablePrivilegesをfalseに設定します。 (パブリケーションサーバー構成ファイルのskipTablePrivilegesの設定は、シングルマスターレプリケーションシステムのこのプロセスでは無視されます。)
デフォルト値は trueです。
注:このオプションは、公開サーバーにのみ適用されます。
同期レプリケーションのログベースの方法を使用する場合、 walTxSetCreationIntervalオプションはトランザクションセットの作成間の時間間隔を制御します。これはトランザクションセットのサイズ(つまり、バッチサイズ)に影響します。デフォルト設定では、レプリケートされるパブリケーションテーブルへの変更が利用可能であると想定して、5,000ミリ秒(5秒)ごとにトランザクションセットが作成されます。
TPMレートがより高い側にある場合、 walTxSetCreationIntervalオプションは比較的低い値に設定する必要があります。
デフォルト値は 5000ミリ秒です。
walStreamQueueLimitオプションは、ある時点で処理するための保留キューに保持することができるWALエントリ数の上限を規定します。キューがいっぱいになると、WALストリームレシーバーは、トランザクションエントリが処理のためにキューからポップされるため、キュー内のスペースが使用可能になるまで追加をブロックします。
デフォルト値は 10000です。
pendingTxSetThresholdオプションが達したことを保留中のトランザクションセットの数の上限しきい値限度を定義する、WALストリームから取引データの抽出を引き起こし、保留中のトランザクションが処理されるまで、その解析は保留されます。
デフォルト値は 10です。
注:このオプションは、公開サーバーにのみ適用されます。
jdbc.pool.validationQueryTimeout検証クエリがプールから接続を割り当てる時に実行されたときにオプションは、タイムアウトの設定を制御します。これは、接続検証クエリが失敗した場合に例外が返されるまでの秒単位の時間です。
デフォルト値は 30です。
xDBレプリケーション構成ファイルでパスワードを変更する必要がある場合は、最初にパスワードを暗号化する必要があります。 xDB Replication Server CLI の encryptコマンドを使用して、入力ファイルで指定されたプレーンテキスト形式からパスワードの暗号化形式を生成します。
ステップ1:暗号化するパスワードを含むテキストファイルを作成します。パスワードの前後に空白を残さないでください。
次の例は 、入力ファイルpassfile テキスト newpasswordを示しています 。
手順2: edb-repcli.jarファイルを使用して、最初にPATH環境変数にJava binディレクトリを含め、現在の作業ディレクトリをXDB_HOME /binして、 encryptコマンドでxDB Replication Server CLIを実行します。
たとえば、 /usr/binにjava実行可能プログラムが含まれ、xDB Replication ServerがPOSTGRES_INSTALL_HOMEディレクトリにインストールされていると仮定して、次を実行します。
手順3:暗号化されたパスワードをコピーして、xDBレプリケーション構成ファイルに貼り付けます。
cronの式は、日付と時刻のスケジュールを表現するために使用されるテキスト文字列です。 Linux cronツールは、cron式を使用してジョブの実行をスケジュールします。 xDB Replication Serverは、複製のスケジューリングにQuartzジョブスケジューリングシステムを使用します。
ss mi hr dd mm dow [ yyyy ]
0 - 59
0 - 59
時
0 - 23
dd
1 - 31 or ?
Day of the month – if ダウ is given, then must be specified as is given, then dd must be specified as ? must be specified as ?
mm
1 - 12 or JAN - DEC
1 – 7 or SUN – SAT or ?
Day of the week – if dd is given, then must be specified as is given, then dow must be specified as ? (3-letter day of the week abbreviations are not case sensitive)
1970 - 2099
MON,WED,FRI – Every Monday, Wednesday, and Friday
MON-FRI – Every Monday through Friday
0 10 14 * * ? – Every day of every month at 2:10 PM
x / i
0 0/10 * * * ? – Every 10 minutes starting on the hour for every day of every month (eg, 8:00:00, 8:10:00, 8:20:00)
When used in the day of the month ( dd ) field, means the last day of the month When used in the day of the month ( ) field, means the last day of the month
0 30 15 L 8 ? – Every August 31 st at 3:30 PM
30 0 12 ? AUG L – The next Saturday in August at 30 seconds past 12:00 noon 30 0 12 ? AUG L – The next Saturday in August at 30 seconds past 12:00 noon
xxx L
When used in the day of the week field ( dow ) following a day of the week, means the last When used in the day of the week field ( day of the month ) following a day of the week, means the last xxx day of the month ) following a day of the week, means the last
30 0 12 ? AUG 6L – The last Friday in August at 30 seconds past 12:00 noon 30 0 12 ? AUG 6L – The last Friday in August at 30 seconds past 12:00 noon
x W
) following a day of the month, x , to specify the weekday closest to ) following a day of the month, Used in the day of the month field ( dd ) following a day of the month, Used in the day of the month field ( without going over into the next or previous month. , to specify the weekday closest to xに , to specify the weekday closest to without going over into the next or previous month.
1W – The weekday closest to the 1 st of the month. If the 1 st is a Wednesday, the result is Wednesday the 1 st . If the 1 st is a Sunday, the result is Monday the 2 nd . If the 1 st is a Saturday, the result is Monday the 3 rd because the result does not go into the previous or following month.
xxx # n
Used in the day of the week field ( dow ) to specify the Used in the day of the week field ( ) to specify the n th xxx day of the month ) to specify the
2#3 – The third Monday of the month ( 2 = Monday, 3 = third occurrence)
•
Postgresシステムカタログ表 pg_catalog.pg_authid 、 システムカタログ表を更新しようとするスーパーユーザーを識別する行のrolcatupdate列がtrueに設定されます。この要件は、Postgresバージョン9.4以前にのみ適用されます。列rolcatupdateは、Postgres 9.5以降ではもう存在しません。
[ カタログの更新 ] プロパティが [ No ]に設定されている場合は、オブジェクトブラウザーでユーザー名の2番目のマウスボタンをクリックし、メニューから[プロパティ]を選択します。 [ロール特権]タブを選択し、[カタログを直接変更できる]ボックスをオンにして、[OK]ボタンをクリックします。
Aは、 識別子は 、二重引用符で囲まれ、その名前( ")で作成した識別子で引用された 。二重引用符で囲まれたテキストは、アルファベット文字のデフォルトなしの場合の翻訳を与えられたとおりにオブジェクト識別子名として保存されている。引用符で囲まれた識別子は、両方のOracleで発生しますとPostgres。
たとえば、 CREATE TABLE "MyTable" …は、データベースシステムのデータディクショナリにMyTableとして保存されるテーブル名を生成します。このテーブルへの参照は、名前の残りの部分に大文字のM 、大文字のT 、および小文字を使用して行う必要があります。
Oracleでは、デフォルトの大文字と小文字の変換は大文字に変換されます。たとえば、 CREATE TABLE MyTable …は、オブジェクト識別子名MYTABLEます。
Postgresでは、デフォルトの大文字小文字変換は小文字です。たとえば、 CREATE TABLE MyTable …は、オブジェクト識別子名CREATE TABLE MyTableになりmytable 。
SQL_VARIANTその列内の個々の値は、異なるデータ型のものであってもよいように、データ・タイプは、列を定義します。たとえば、同じSQL_VARIANT列には、文字、整数、数値、および日付/時刻として明示的にキャストされた値を格納できます。
ただし、 SQL_VARIANT列を含むテーブルを Postgresデータベースに複製する場合、Postgresの列の使用は、 SQL_VARIANT列のすべての値が暗黙的に変換可能な単一のデータ型に制限されます(つまり、明示的なキャストの使用)。たとえば、整数値は暗黙的にFLOATデータ型に変換できますが、浮動小数点値は暗黙的にINTEGERデータ型に変換できません。
•
複製されるテーブルのSQL_VARIANT列内に格納された値は、Postgresの同じデータ型に暗黙的に変換可能でなければなりません。
•
同じPostgresデータベースに複製されるSQL_VARIANT列を持つテーブルが複数ある場合 、そのようなSQL_VARIANT列にはすべて、Postgresの同じデータ型に暗黙的に変換可能な値が含まれている必要があります。
Postgresサブスクリプションデータベースで、 SQL_VARIANT列のすべての値が暗黙的に変換可能な基になるデータ型にマップされるsql_variantという名前のドメインを定義します 。
次の例は 、異なるデータ型の数値を格納するために使用されるSQL_VARIANTデータ型を含むテーブルのレプリケーションを設定する方法を示しています。
次のクエリは、 SQL_VARIANT_PROPERTY という名前の関数を使用して 、列f2格納されている値とそのデータ型を表示します。
Postgresサブスクリプションデータベースで、SQL Server SQL_VARIANT列に格納されている値と互換性のある基になるデータ型を使用して、 sql_variant という名前のドメインを作成します 。
レプリケーションが発生した後 、パブリケーションテーブルのSQL_VARIANTデータ型の代わりにsql_variantドメインを使用してサブスクリプションテーブルが作成されます。
次のオブジェクトブラウザウィンドウの下部で 、 publicスキーマのDomainsノードの下にsql_variantドメインが存在することに注意してください。