Chat now with support
Chat with Support

SharePlex 8.6.6 - 管理ガイド

このガイドについて このガイドで使用されている表記規則 SharePlex の概要 SharePlex の実行 複数の SharePlex インスタンスの実行 sp_ctrl でのコマンドの実行 SharePlex パラメータ 複製のための Oracle 環境の準備 設定ファイルの作成 オープンターゲットのターゲットへの複製の設定 複製方法の設定 分割レプリケーションの設定 名前付きキューの設定 変更履歴ターゲットを維持するための SharePlex の設定 Oracle DDL の複製 エラー処理のセットアップ データの変換 SharePlex セキュリティ機能の設定 実稼動環境での複製のアクティベート SharePlex の監視 複製上の問題の防止および解決方法 非同期データの修復 Oracle の高可用性を維持するための手順 アクティブな複製環境の変更 Oracle アプリケーションのパッチまたはアップグレードの適用 ソースまたはターゲット上の Oracle データのバックアップ Capture プロセスのチューニング Post プロセスのチューニング 付録 A:ピアトゥピアの説明図 付録 B:SharePlex 環境変数

ワイルドカードによる複数のオブジェクトの指定

設定ファイルの作成 > ワイルドカードによる複数のオブジェクトの指定

パーセント(%)およびアンダーライン(_)ワイルドカード記号を使用して、設定ファイルの 1 エントリでスキーマの複数オブジェクトを指定できます。明示的に除外するオブジェクトを除き、SharePlex はワイルドカードを満たすすべてのオブジェクトを複製します。

ワイルドカードサポートの要件および制限

サポートするワイルドカード構文

SharePlex は、次の SQL ワイルドカードをサポートします。

  • パーセント(%)ワイルドカード。文字列を指定します(「」を参照してください)。
  • アンダーライン(_)ワイルドカード。1 文字を指定します。
  • パーセント記号またはアンダーライン文字を含んでいるテーブル名の場合(たとえばemp_salary)、SharePlex は、バックスラッシュ(\)については、文字ををワイルドカードではなくリテラルとして表すエスケープ文字として認識します。

ワイルドカードが含まれる名前を設定ファイルで指定する

このテンプレートを使用すると、ワイルドカードを使用した名前を設定ファイルで指定できます。

ワイルドカードが含まれるオブジェクト名による設定
datasource_specification
expand src_owner.wildcard_name [not (list)]

tgt_owner.wildcard_name

routing_map
構文要素の説明
コンポーネント 説明
expand

展開が必要なワイルドカード文字が指定に含まれていることを示します。SharePlex は expand キーワードを検出すると、そのワイルドカード指定の条件に一致するすべてのオブジェクトに関するクエリをデータベースに対して実行します。この必須キーワードを指定しないと、ワイルドカード文字は明示的なオブジェクト名の一部であると認識され、ワイルドカードの展開は実行されません。

注:expand とソースオブジェクト指定の間のスペースは残してください。

src_owner.wildcard_name
  • src_owner はソースオブジェクトの所有者です。所有者名にはワイルドカードを使用できません。所有者名にワイルドカードを使用した場合、SharePlex はそれを所有者(スキーマ)名の一部であると認識します。
  • wildcard_name はソースオブジェクトのワイルドカードを使用した名前です。

ターゲットオブジェクトの名前はソースオブジェクトの名前と同一である必要がありますが、オブジェクトは異なる所有者に属していてもかまいません。

not (list)

ワイルドカードの展開を省略するオブジェクトを定義する除外リスト。このオプションを使用して、複製しないオブジェクトを除外します。注:この not キーワードは、SQL ワイルドカードの NOT 演算子と意味が異なります。

  • not キーワードとかっこは必須要素です。
  • list は、同じ所有者(ワイルドカードを使用しても明示的に指定してもよい)が所有するテーブルのコンマ区切りリストです。例:not (spo%, gen%, product)

not キーワードの前後のスペースは残してください。リストのコンマの後にはスペースを入れることができます。

注: ワイルドカードを満たすオブジェクトが設定ファイルの他の位置にリストされている場合、そのエントリはワイルドカードを使用したエントリで指定されている処理またはルーティングを上書きします。この場合、not 句は必要ありませんを参照してください。

tgt_owner.wildcard_name
  • tgt_owner はターゲットオブジェクトの所有者です。
  • wildcard_name はターゲットオブジェクトのワイルドカードを使用した名前です。

ターゲットの指定は、「owner.%」の形式にする必要があります。ワイルドカードを使用したターゲット名を一部展開した形式(owner.tab% など)はサポートされていません。

routing_map 有効なルーティングマップ。詳細については、次を参照: 設定ファイルでのルーティング指定

ワイルドカード指定の検証

ワイルドカード指定が、複製する一連のテーブルを正しく示すことを確認するには、設定をアクティベートする前に sp_ctrlverify config コマンドを発行してください。このコマンドは、SharePlex がキャプチャして複製するオブジェクト、および発生した問題のリストを生成します。このコマンドの詳細については、『SharePlex リファレンスガイド』を参照してください。

有効なワイルドカード指定の例

例 1: 次のワイルドカード指定は、テーブル名が prod% に似ているテーブル(ただしテーブル名が %temp% に似ているものを除く)のうち scott が所有するすべてのテーブルをアクティベートするように SharePlex に対して指示します。この記述に一致するすべてのテーブルが、hal スキーマのターゲットで同じ名前のテーブルに複製されます。SharePlex によって、対象に含める名前の範囲が自動的に拡張されます。実際にはテーブル名が「PROD%」に似ていて「%TEMP%」には似ていないすべてのテーブルがアクティベートされます。

Datasource:o.sidA	 	 
expand scott.prod% not (%temp%)    hal.%sysa@o.sidB

例 2: 次の例は、ワイルドカードを使用した指定でテーブルの 1 つ(この例では photo テーブル)に特別な処理を指定する方法を示しています。photo 以外のすべてのテーブルは、デフォルトの post キュー経由でルーティングされます。photo テーブル用の個別エントリは、ワイルドカードを使用したエントリを上書きし、名前付き Post キューを介して photo テーブルを処理します。詳細については、次を参照: 名前付き post キューの設定

Datasource:o.sidA	 	 
cust.%cust.%hostB@o.oraB
cust.photo    cust.photo    hostB:lobQ@o.oraB

有効なワイルドカード指定の他の例を以下に示します。

Datasource:o.sidA	 	 
expand scott.%test%    scott.%sysa@o.sidB
Datasource:o.sidA	 	 
expand scott.%t__t%    fred.%sysa@o.sidB
Datasource:o.sidA	 	 
expand scott.% not (spo%, gen%, prodct)    scott.%sysa@o.sidB
Datasource:o.sidA	 	 
expand scott.prod% not (%temp%)    hal.%sysa@o.sidB

無効なワイルドカード指定の例

以下の例には、ワイルドカードを使用したスキーマが含まれていますが、許可されません。

Datasource:o.sidA	 	 
expand rob%.%test%    scott.%sysa@o.sidB

以下の例には、部分的にワイルドカードを使用したターゲットオブジェクト名が含まれていますが、許可されません。

Datasource:o.sidA	 	 
expand scott.%test%    scott.%obj%    sysa@o.sidB

一意のキーの定義

設定ファイルの作成 > 一意のキーの定義

作成したテーブルにプライマリキーまたは一意のキーがない場合は、設定ファイルにオブジェクトを指定するときにキーとして使用する列を指定できます。SharePlex は WHERE 句で Post するターゲット行を見つける一意のキーとして、指定された列を使用します。

注:

  • プライマリキーまたは一意のキーがないと、SharePlex はテーブルのすべての列(またはカラムパーティションのすべての列)をキーとして使用するため、複製のパフォーマンスが低下します。
  • プライマリキーまたは一意のキーが存在するテーブルに対してキー定義を指定した場合、定義済みのキーはキー定義によって上書きされます。この機能は、SharePlex で既存のキーのいずれも使用しない場合に便利です。

キーとして指定する列は、以下の基準を満たしている必要があります。

  • 列は、LONG または LOB 列であってはなりません。
  • 列は行を一意に識別できなければなりません。でないと、複製が非同期エラーを返したり誤ったターゲット行に post したりする可能性があります。
  • テーブルが垂直分割レプリケーション用に設定されている場合、列はカラムパーティションの一部である必要があります。垂直分割で exclude 列表記を使用している場合は、キー定義で除外された列を使用することはできません。分割レプリケーションの詳細については、「分割レプリケーションの設定」を参照してください。
  • 列をサプリメンタルロググループに含めます。この操作を行わない場合、SharePlex がデータベースに値をクエリする必要があります。
  • ターゲットテーブルにインデックスを作成し、変数データディレクトリにある、インデックスを使用することを Post プロセスに指示する SharePlex ヒントファイルにそのインデックスを追加します。

キー定義の構文

キー定義を作成するには、ソースオブジェクトの後に空白文字を入力し、次の構文(かっこを含む)を使用します。

src_owner.table !key (column_list)

ここで、

  • !key は、必須のキーワードです。
  • column_list は、キーに含める列のリストです。列名はコンマで区切ります。コンマの後の空白文字は随意です。

datasource_specification

   
src_owner.table !key (col_name, col2_name, ...)

tgt_owner.table

host@o.SID

例:

Datasource:o.ora1
scott.tab !key(name,ID)    scott.tab2    sysB@oraB

DML 操作のフィルタ

設定ファイルの作成 > DML 操作のフィルタ

ワイルドカードが使用されたときに複製から以下の DML をフィルタで除外するように SharePlex を設定できます。

  • の DML タイプ(INSERT、UPDATE、DELETE)
  • シーケンス、マテリアライズドビュー、および SQL*Loader ダイレクトパスロードに関連する DML

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:o.ora

 

 

scott.emp !dml(d)

scott.emp

prodsys@o.sysdb

例 2

以下の例では、DELETE と INSERT をフィルタして、UPDATE のみがターゲットテーブルに複製されるようにしています。この例は、DML フィルタと列マッピング指定との間で互換性がどのように確保されるかについても示しています。

Datasource:o.ora

 

 

scott.stock !dml(d,i) (ID, name)

scott.stock (SKU, prod)

sys2@o.sysdb

現在の DML フィルタの表示

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

sp_ctrl> verify config myconfig

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

Filter out >>>>> DELETES

Unique Key :(EMPLOYEE_ID)

制限事項

  • copy および compare コマンドは、指定に DML フィルタリングが含まれるテーブルをサポートしていません。
  • 設定ファイルに 1 つのソーステーブルの指定が複数ある場合、DML フィルタ指定はそのすべてに対して同じである必要があります。複合ルーティングマップを使用せずに複数のターゲットにルーティングする場合(「設定ファイルでのルーティング指定」を参照)、またはフルテーブルレプリケーションと水平分割レプリケーションを組み合わせている場合(「水平分割レプリケーションの設定」を参照)は、同じソーステーブルの指定が複数回発生します。

フィルタを使用して特定の Oracle オブジェクトに関連する DML を複製から除外する

シーケンス、マテリアライズドビュー、および SQL*Loader ダイレクトパスロードを複製しないように SharePlex を設定できます。デフォルトでは、これらのオブジェクトの複製は有効になっています。

フィルタで除外するオブジェクト 設定するパラメータ
シーケンス SP_OCT_REPLICATE_SEQUENCES 0
マテリアライズドビュー SP_OCT_REPLICATE_MVIEW 0
SQL*Loader ダイレクトパスロード SP_OCT_REPLICATE_DLOAD 0

ソース列のターゲット列へのマップ

設定ファイルの作成 > ソース列のターゲット列へのマップ

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

列マッピングの使用に関するガイドライン

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

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

列マッピングの設定

列マップを作成するには、以下の構文を使用します。設定ファイルの詳細については、「設定ファイルの作成」を参照してください。

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,...)

ソース列のリスト。

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

  • 列リストはかっこで囲む必要があります。
  • 列名はコンマで区切ります。コンマの後の空白文字は随意です。
  • 列リストの最大長は 174,820 バイト(設定ファイルで許容される行の最大長)です。
(tgt_col,tgt_col,...)

ターゲット列のリスト。

  • ターゲット列は、対応するソース列と同じ論理順でリストします。SharePlex がオブジェクトキャッシュに正しいマップを作成するためには、テーブルのターゲット列の実際の順序に関係なく、このように指定する必要があります。たとえば、ソースリストの 2 列目への変更はターゲットリストの 2 列目に複製されます。
  • ソースリストの構文規則もターゲットリストに適用されます。
routing_map

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

設定例

Datasourceo.oraA

 

 

sales.prod (ID,name,vendor)

mfg.prod (UPC,product,supplier)

sysB@o.oraB

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating