ワイルドカードが使用されている場合、レプリケーションからPostgreSQLのDML型(INSERT、UPDATE、DELETE)を除外するようにSharePlexを設定できます。
SharePlexを設定することで、ターゲット側のテーブルに操作がレプリケートされないように、任意のタイプのDML操作をフィルタリングすることができます。DMLのフィルタリングは、他のほとんどのSharePlex設定構文と互換性があります。
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 |
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によって行データが正しいターゲット列に適用されるように、設定ファイルで明示的な列のマッピングを指定することができます。
列のマッピングを使用するには、一部のソース名とターゲット名が異なるだけであっても、ソーステーブルのすべての列をターゲットテーブルの列にマッピングする必要があります。一部の列だけがマッピングされ、他の列がマッピングされない場合、エントリは垂直分割レプリケーションの列パーティションとみなされ、リストされていない列のデータ変更はレプリケートされません。
次の構文は列のマッピングを作成します。詳細については、データをレプリケートするための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,...) |
ソース列のリスト。 以下の規則に従って列リストを指定します。
|
(tgt_col,tgt_col,...) |
ターゲット列のリスト。
|
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ソースオブジェクトを指定する設定ファイルの構築を自動化するための以下のスクリプトが用意されています。
Oracle
config.sqlスクリプトを使用すると、データベースの全スキーマのすべてのテーブル、およびオプションで全シーケンスをリストする設定を構築できます。このスクリプトによって、データベース全体を同一のセカンダリデータベースにレプリケートする高可用性レプリケーション戦略やその他のシナリオを確立する際の時間を節約できます。
ソースとターゲットのテーブル名は同じでなければなりません。
config.sqlを実行するには:
SharePlexの変数データディレクトリのconfigサブディレクトリにディレクトリを変更します。config.sqlスクリプトによって現在の作業ディレクトリに設定が置かれます。SharePlexの設定はconfigサブディレクトリになければなりません。
cd /vardir/config
SharePlexの製品ディレクトリのutilディレクトリからフルパスを使用してconfig.sqlを実行します。
@ /proddir/util/config.sql
プロンプトに従う際は以下の表を参照してください。
プロンプト | 入力内容 |
---|---|
Target machine | ターゲットマシンの名前(例: SystemB)。 |
Source database SID | ソース(プライマリ)OracleインスタンスのORACLE_SID(例: oraA)。o.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。 |
Target database SID | ターゲット(デスティネーション)OracleインスタンスのORACLE_SID(例: oraB)。o.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。 |
Replicate sequences | シーケンスを複製する場合はyを、複製しない場合はnを入力します。 |
SharePlex oracle username | ソースデータベースのSharePlexユーザの名前。このエントリはSharePlexスキーマのレプリケーションを妨げるため、レプリケーションの問題を引き起こすことがあります。有効な名前を指定しないと、スクリプトは失敗します。 |
注意: SharePlexにより設定に割り当てられる名前はconfig.fileです。スクリプトを再度実行して別の設定ファイルを作成すると、最初のファイルが上書きされます。元のファイルを保存するには、2つ目のファイルを作成する前にファイル名を変更してください。
次の手順:
大文字と小文字を区別するテーブルや所有者がある場合、sp_ctrlのedit configコマンドで設定ファイルを開き、テキストエディタを使用して、大文字と小文字を区別するテーブル名と所有者名を"scott". "emp"のように二重引用符で囲みます。このスクリプトは、大文字と小文字を区別するためにOracleが必要とする引用符を追加しません。
sp_ctrl> edit config filename
設定が正しい場所にあることを確認するには、list configコマンドを実行します。設定の名前が表示されない場合は、間違ったディレクトリに作成されています。ファイルを見付けて、変数データディレクトリのconfigサブディレクトリに移動します。
sp_ctrl> list config
build_config.sqlスクリプトを使用すると、スキーマ内の複数(またはすべて)のテーブルを含む設定を構築できます。これは、設定の各コンポーネントを尋ねるプロンプトがステップごとに表示されるインタラクティブなスクリプトです。各オブジェクトとルーティングの情報を個別に入力する代わりに、ワイルドカードを使用して特定のテーブルを一度に選択したり、スキーマ内のすべてのテーブルを選択したりすることができます。
build_config.sqlを実行するには:
SharePlexの変数データディレクトリのconfigサブディレクトリにディレクトリを変更します。build_config.sqlスクリプトによって現在の作業ディレクトリに設定が置かれます。SharePlexの設定はconfigサブディレクトリになければなりません。
cd /vardir/config
SharePlexの製品ディレクトリのutilディレクトリからフルパスを使用してbuild_config.sqlを実行します。
@ /proddir/util/build_config.sql
プロンプトに従う際は以下の表を参照してください。
プロンプト | 入力内容 |
---|---|
Target machine | ターゲットマシンの名前(例: SystemB)。 |
Source database SID | ソース(プライマリ)OracleインスタンスのORACLE_SID(例: oraA)。o.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。 |
Target database SID | ターゲット(デスティネーション)OracleインスタンスのORACLE_SID(例: oraB)。o.キーワードは含めないでください。ORACLE_SIDでは大文字と小文字を区別します。 |
Owner of the source database tables | ソーステーブルの所有者。 |
Owner of the target database tables | ターゲットテーブルの所有者。 |
Table name to include (blank for all) |
以下のいずれかを実行します。
|
Name of the output file to create | 設定の名前。このスクリプトは、ファイルに.lstという接尾辞を付けます(例: Scott_config.lst)。 |
次の手順:
大文字と小文字を区別するテーブルや所有者がある場合は、sp_ctrlのedit configコマンドで設定を開き、テキストエディタを使用して、大文字と小文字を区別するテーブル名と所有者名を"scott". "emp"のように二重引用符で囲みます。このスクリプトは、大文字と小文字を区別するためにOracleが必要とする引用符を追加しません。
sp_ctrl> edit config filename
設定が正しい場所にあることを確認するには、list configコマンドを実行します。設定の名前が表示されない場合は、間違ったディレクトリに作成されています。ファイルを見付けて、変数データディレクトリのconfigサブディレクトリに移動します。
sp_ctrl> list config
SharePlexは、Oracleのマルチテナント・コンテナ・データベース(CDB)内のプラガブルデータベース(PDB)との間のレプリケーションをサポートしています。このサポートはUnixおよびLinuxプラットフォームでのみ利用可能です。
© ALL RIGHTS RESERVED. 利用規約 プライバシー Cookie Preference Center