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

SharePlex 11.4 - 管理者ガイド

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

PostgreSQLデータベースのDML操作のフィルタリング

ワイルドカードが使用されている場合、レプリケーションからPostgreSQLのDML型INSERT、UPDATE、DELETEを除外するようにSharePlexを設定できます。

DML型のフィルタリング

SharePlexを設定することで、ターゲット側のテーブルに操作がレプリケートされないように、任意のタイプのDML操作をフィルタリングすることができます。DMLのフィルタリングは、他のほとんどのSharePlex設定構文と互換性があります。

DMLフィルタの設定

DMLフィルタを設定するには、ソーステーブルの指定に以下の構文を追加します。テーブルの指定とフィルタの指定の間にはスペースを空けます。複数の操作のタイプをフィルタリングの対象として指定することができます。列リストやキー定義など、他の機能の追加の構文は、DMLのフィルタの指定に従わなければなりません。

!dml(DML_type[,DML_type][,...])

ここで、DML_typeは以下のいずれかです。

DML_typeの入力 操作のタイプ
i INSERT
d DELETE
u UPDATE

例1

以下の例では、DELETE操作がターゲット側のテーブルにレプリケートされないようにフィルタリングしています。

Datasource:r.dbname

 

 

scott.emp !dml(d)

scott.emp

prodsys@r.dbname

例2

以下の例では、UPDATEのみがターゲット側のテーブルにレプリケートされるように、DELETEとINSERTをフィルタリングしています。この例は、DMLフィルタが列のマッピングの指定と互換性があることも示しています。

Datasource:r.dbname

 

 

scott.stock !dml(d,i) !key (EMPLOYEE_ID)

scott.stock

sys2@r.dbname

現在のDMLフィルタの表示

verify configコマンドを使用すると、設定ファイルの各テーブルでフィルタリングされているDMLを表示できます。このコマンドは、アクティブまたは非アクティブな設定ファイルに使用できます。

sp_ctrl> verify config myconfig detail

7: "SCOTT"."EMP" "SCOTT"."EMP" prodsys@o.proddb

Filter out >>>>> DELETES INSERTS

Unique Key : (EMPLOYEE_ID)

制限

設定ファイル内にソース側のテーブルの指定が複数ある場合は、そのテーブルの最後の行で指定されたDMLフィルタの指定が考慮されます。

ソース列のターゲット列へのマッピング

ソース列とターゲット列のマッピング

ソース列とターゲット列の名前が異なる場合は、Postによって行データが正しいターゲット列に適用されるように、設定ファイルで明示的な列のマッピングを指定することができます。

列のマッピングを使用する際のガイドライン

  • 列のマッピングを使用するには、一部のソース名とターゲット名が異なるだけであっても、ソーステーブルのすべての列をターゲットテーブルの列にマッピングする必要があります。一部の列だけがマッピングされ、他の列がマッピングされない場合、エントリは垂直分割レプリケーションの列パーティションとみなされ、リストされていない列のデータ変更はレプリケートされません。

  • ソース列名とターゲット列名で大文字と小文字が異なる場合は、引用符で囲みます。
  • 同じソーステーブルに対して水平分割レプリケーションと列のマッピングを併用することはできますが、列のマッピングと垂直分割レプリケーションを組み合わせることはできません。
  • ターゲットテーブルはソーステーブルよりも多くの列を持つことができますが、少なくともすべてのソース列に対応するターゲット列が存在する必要があります。
  • 列のマッピングが設定されているテーブルに列を追加するALTER TABLEはサポートされていません。

列のマッピングの設定

次の構文は列のマッピングを作成します。詳細については、データをレプリケートするためのSharePlexの設定を参照してください。

datasource_specification    
src_owner.table (src_col,src_col,...) tgt_owner.table (tgt_col,tgt_col,...) routing_map
設定のコンポーネント 説明
datasource_specification

データソース指定。詳細については、設定ファイル内のデータベース指定を参照してください。

src_owner.tableおよびtgt_owner.table ソース側のテーブルとターゲット側のテーブルのそれぞれの指定。詳細については、設定ファイルの作成を参照してください。

(src_col,src_col,...)

ソース列のリスト。

以下の規則に従って列リストを指定します。

  • 列リストは括弧で囲まなければなりません。
  • 各列名はカンマで区切ります。コンマの後のスペースは任意です。
  • 列リストの最大長は174820バイト設定ファイルで許可される行の最大長です。
(tgt_col,tgt_col,...)

ターゲット列のリスト。

  • ターゲット側の列を、対応するソース側の列と同じ論理順序でリストします。この操作は、SharePlexがオブジェクトキャッシュ内で正しいマップを構築するために、テーブル内のターゲット側の列の実際の順序にかかわらず必要です。例えば、ソース側のリストの2番目の列への変更は、ターゲット側のリストの2番目の列にレプリケートされます。
  • ソースリストの構文規則は、ターゲットリストにも適用されます。
routing_map

ルーティングマップ。詳細については、設定ファイル内のルーティング指定を参照してください。

設定例

この例には、大文字と小文字を区別する列は含まれていません。

Datasource o.oraA

 

 

sales.prod (ID,name,vendor)

mfg.prod (UPC,product,supplier)

sysB@o.oraB

 

この例には、大文字と小文字を区別する列が含まれています。

Datasource o.oraA

 

 

sales.prod (ID,"name",vendor)

mfg.prod (UPC,"product",supplier)

sysB@o.oraB

スクリプトを使った設定ファイルの作成

SharePlexには、Oracleソースオブジェクトを指定する設定ファイルの構築を自動化するための以下のスクリプトが用意されています。

  • config.sql: データベース内のすべてのテーブルと、オプションですべてのシーケンスを設定します。
  • build_config.sql: スキーマ内の複数の、またはすべてのテーブルを構成します。

サポート対象データベース

Oracle

config.sqlの使用

config.sqlスクリプトを使用すると、データベースの全スキーマのすべてのテーブル、およびオプションで全シーケンスをリストする設定を構築できます。このスクリプトによって、データベース全体を同一のセカンダリデータベースにレプリケートする高可用性レプリケーション戦略やその他のシナリオを確立する際の時間を節約できます。

config.sqlの使用条件
  • ソースとターゲットのテーブル名は同じでなければなりません。

  • このスクリプトでは、SYS、SYSTEM、およびSharePlexスキーマ内のオブジェクトは構成されません。これらのスキーマはシステムやインスタンスに固有であるため、複製することはできません。
  • このスクリプトは、分割レプリケーションをサポートしていません。copy configコマンドを使用して、スクリプトにより構築される設定ファイルをコピーし、edit configコマンドを使用して、分割レプリケーションを使用するテーブルのエントリを追加できます。元のファイルではなく新しい設定ファイルをアクティベーションします。
  • edit configコマンドを使用して、設定が構築された後、必要に応じてその他の変更を加えることができます。

config.sqlを実行するには:

  1. SharePlexの変数データディレクトリのconfigサブディレクトリにディレクトリを変更します。config.sqlスクリプトによって現在の作業ディレクトリに設定が置かれます。SharePlexの設定はconfigサブディレクトリになければなりません。

    cd /vardir/config

  2. SYSTEMとしてSQL*Plusにログオンします。
  3. SharePlexの製品ディレクトリのutilディレクトリからフルパスを使用してconfig.sqlを実行します。

    @ /proddir/util/config.sql

プロンプトに従う際は以下の表を参照してください。

プロンプト 入力内容
Target machine ターゲットマシンの名前例: SystemB
Source database SID ソースプライマリOracleインスタンスのORACLE_SID例: oraAo.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。
Target database SID ターゲットデスティネーションOracleインスタンスのORACLE_SID例: oraBo.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。
Replicate sequences シーケンスを複製する場合はyを、複製しない場合はnを入力します。
SharePlex oracle username ソースデータベースのSharePlexユーザの名前。このエントリはSharePlexスキーマのレプリケーションを妨げるため、レプリケーションの問題を引き起こすことがあります。有効な名前を指定しないと、スクリプトは失敗します。

注意: SharePlexにより設定に割り当てられる名前はconfig.fileです。スクリプトを再度実行して別の設定ファイルを作成すると、最初のファイルが上書きされます。元のファイルを保存するには、2つ目のファイルを作成する前にファイル名を変更してください。

次の手順:

  • 大文字と小文字を区別するテーブルや所有者がある場合、sp_ctrledit configコマンドで設定ファイルを開き、テキストエディタを使用して、大文字と小文字を区別するテーブル名と所有者名を"scott". "emp"のように二重引用符で囲みます。このスクリプトは、大文字と小文字を区別するためにOracleが必要とする引用符を追加しません。

    sp_ctrl> edit config filename

  • 設定が正しい場所にあることを確認するには、list configコマンドを実行します。設定の名前が表示されない場合は、間違ったディレクトリに作成されています。ファイルを見付けて、変数データディレクトリのconfigサブディレクトリに移動します。

    sp_ctrl> list config

build_config.sqlの使用

build_config.sqlスクリプトを使用すると、スキーマ内の複数またはすべてのテーブルを含む設定を構築できます。これは、設定の各コンポーネントを尋ねるプロンプトがステップごとに表示されるインタラクティブなスクリプトです。各オブジェクトとルーティングの情報を個別に入力する代わりに、ワイルドカードを使用して特定のテーブルを一度に選択したり、スキーマ内のすべてのテーブルを選択したりすることができます。

build_config.sqlの使用条件
  • ソースとターゲットのテーブル名は同じでなければなりません。
  • このスクリプトではシーケンスはサポートされていません。スクリプトが構築する設定をアクティベーションする前に、sp_ctrledit configコマンドを使用して、シーケンスのエントリを追加することができます。
  • このスクリプトは、分割レプリケーションをサポートしていません。copy configコマンドを使用して、スクリプトにより構築される設定をコピーし、edit configコマンドを使用して、分割レプリケーションを使用するテーブルのエントリを追加できます。元の設定ではなく新しい設定をアクティベーションします。
  • このスクリプトでは、SYS、SYSTEM、およびSharePlexスキーマ内のオブジェクトは構成されません。これらのスキーマはシステムやインスタンスに固有であるため、複製することはできません。
  • build_config.sqlを異なるスキーマに対して実行し、テキストエディタを使用してそれらの設定を1つの設定に結合することができます。ファイルの最初の非コメント行であるDatasource:o.SIDの1行を除き、すべてを削除します。configサブディレクトリからファイルを移動しないでください。
  • edit configコマンドを使用して、設定が構築された後、必要に応じてその他の変更を加えることができます。

build_config.sqlを実行するには:

  1. SharePlexの変数データディレクトリのconfigサブディレクトリにディレクトリを変更します。build_config.sqlスクリプトによって現在の作業ディレクトリに設定が置かれます。SharePlexの設定はconfigサブディレクトリになければなりません。

    cd /vardir/config

  2. SYSTEMとしてSQL*Plusにログオンします。
  3. SharePlexの製品ディレクトリのutilディレクトリからフルパスを使用してbuild_config.sqlを実行します。

    @ /proddir/util/build_config.sql

プロンプトに従う際は以下の表を参照してください。

プロンプト 入力内容
Target machine ターゲットマシンの名前例: SystemB
Source database SID ソースプライマリOracleインスタンスのORACLE_SID例: oraAo.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。
Target database SID ターゲットデスティネーションOracleインスタンスのORACLE_SID例: oraBo.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。
Owner of the source database tables ソーステーブルの所有者。
Owner of the target database tables ターゲットテーブルの所有者。
Table name to include (blank for all)

以下のいずれかを実行します。

  • Enterを押してデフォルトを受け入れます。ソース所有者に属するすべてのテーブルを選択します。
  • ワイルドカード%文字と文字列を入力して、特定のテーブルを選択します例: %e_salary%
  • 個別のテーブル名を入力します。
Name of the output file to create 設定の名前。このスクリプトは、ファイルに.lstという接尾辞を付けます例: Scott_config.lst

次の手順:

  • 大文字と小文字を区別するテーブルや所有者がある場合は、sp_ctrledit configコマンドで設定を開き、テキストエディタを使用して、大文字と小文字を区別するテーブル名と所有者名を"scott". "emp"のように二重引用符で囲みます。このスクリプトは、大文字と小文字を区別するためにOracleが必要とする引用符を追加しません。

    sp_ctrl> edit config filename

  • 設定が正しい場所にあることを確認するには、list configコマンドを実行します。設定の名前が表示されない場合は、間違ったディレクトリに作成されています。ファイルを見付けて、変数データディレクトリのconfigサブディレクトリに移動します。

    sp_ctrl> list config

コンテナデータベースとの間のレプリケーションの設定

SharePlexは、Oracleのマルチテナント・コンテナ・データベースCDB内のプラガブルデータベースPDBとの間のレプリケーションをサポートしています。このサポートはUnixおよびLinuxプラットフォームでのみ利用可能です。

内容
関連ドキュメント

The document was helpful.

評価を選択

I easily found the information I needed.

評価を選択