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

SharePlex 11.4 - リファレンス・ガイド

このガイドについて このガイドで使用される表記規則 Oracle用SharePlexコマンド SharePlexパラメーター PostgreSQL用SharePlexコマンド PostgreSQL用SharePlexパラメーター 一般SharePlexユーティリティ Oracleクラウドインフラストラクチャ SharePlex環境変数

stop

stopコマンドは、SharePlexレプリケーションプロセスを正常に停止し、関連するキューからの読み取りまたはキューへの書き込みを終了させるために使用します。レプリケーションプロセスが停止すると、データがキューに安全に蓄積されます。

stopコマンドで中断されたプロセスは、SharePlexをシャットダウンして再起動しても、停止したままになります。このプロセスは、startコマンドでのみ開始できます。プロセスが再び開始されると、停止した時点から処理が再開されるため、データは同期された状態を維持します。

注意: stopコマンドはabort serviceコマンドとは異なり、プロセスが関連するキューからの読み取りまたは書き込みを終了した後にレプリケーションプロセスを停止します。abort serviceコマンドは、プロセスがデータ処理中であるか否かにかかわらず、即座にプロセスを終了します。

Captureプロセスの停止

Captureプロセスを停止するときは注意してください。

以下のような場合に、ソースとターゲットのデータが同期しなくなる可能性があります。

  • Captureが停止している間にユーザがソースデータの変更を続けた場合

    および…

  • OracleのREDOログがその間にラップされた場合

    および…

  • アーカイブログが利用できなくなった場合

特定の時点でのPostの停止

Postプロセスの停止のタイミングを制御するには、いずれかの[at sourcetime]オプションを使用します。これらのいずれかのオプションは、指定された時刻または日時のスタンプが付いた最初のメッセージを受信すると、自動的にPostを停止します。それ以降のメッセージは、Postが再開されるまでpostキューに蓄積されます。

[at sourcetime]オプションは、ジョブがソースシステムでスケジューリングされているときに、その操作が、ターゲットデータベースへの適用前にソースシステムで成功したことを確認する場合に使用できます。Postを停止するオプションは、ジョブの実行直前に設定します。

このオプションは、ターゲットシステム上でレポートを実行しているときに、Post操作の競合によりオーバーヘッドが発生しないようにする場合にも使用できます。

SharePlexは同期していないため、ターゲットシステム上でPostが実際に停止する時刻は、おそらく操作のタイムスタンプよりも後になります。このタイミングは、先行するメッセージをキューにポストするために必要な時間に左右されます。

用途

サポート対象のソース: Oracle
サポート対象のターゲット: すべて
認証レベル: オペレーター2、Captureの停止に必要な管理者1
発行対象:
  • Capture、Read、およびExportのstopは、ソースシステムに対して発行されます。
  • ImportおよびPostのstopは、ターゲットシステムに対して発行されます。
関連コマンド: abort service、start

構文

基本コマンド コマンドオプション リモートオプション
stop service

[to host]

[from host]

[for datasource]

[for datasource-datadest]

[queue queuename]

[at sourcetime hh:mm:ss]

[at sourcetime mm/dd/yyyy hh:mm:ss]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

構文の説明
コンポーネント 説明
service

停止するSharePlexプロセス。有効な値:

  • Capture
  • Read
  • Export
  • Import
  • Post

:

sp_ctrl(sysA)> stop export

to host

このオプションは、指定したターゲットシステムへのExportを停止しますが、他のシステムへのExportは続行されます。

  • toは構文の必須部分です。
  • hostはターゲットシステムの名前です。

:

sp_ctrl(sysA)> stop export to sysB

この例では、sysAからsysBへのExportは停止されますが、sysAから他のターゲットシステムへのExportは続行されます。

from host

このオプションは、指定したシステムからのImportを停止しますが、他のシステムからのImportは続行されます。

  • fromは構文の必須部分です。
  • hostはソースシステムの名前です。

:

sp_ctrl(sysD)> stop import from sysC

この例では、sysDのsys CからのImportは停止されますが、sysDの他のシステムからのImportは続行されます。

for datasource

このオプションは、指定されたデータソースのCaptureまたはReadを停止します。

  • forは構文の必須部分です。
  • datasourceo.SIDと表します。ここで、SIDはORACLE_SIDです。

:

sp_ctrl(sysA)> stop read for o.oraA

この例では、sysAのインスタンスoraAに対するReadは停止されますが、sysAの他のインスタンスに対する他のReadプロセスは続行されます。

for datasource-datadest

このオプションは、指定されたソース-ターゲット・データ・ストリームのPostを停止します。

  • forは構文の必須部分です。
  • datasourceo.SIDと表します。ここで、SIDはORACLE_SIDです。

  • datadestoSIDまたはr.databaseと表します。ここで、SIDはORACLE_SID、databaseはOpen Targetデータベースの名前です。

:

sp_ctrl(sysC)> stop post for o.oraA-o.oraC

この例では、インスタンスoraAからoraCへのレプリケートに対するsysCのPostが停止されますが、sysC上の他のPostプロセスは続行されます。

queue queuename

このオプションは、名前付きキューに関連付けられたExport、ImportまたはPostプロセスを停止します。他の名前付きキューによるレプリケーションは、影響を受けずに続行されます。

  • queueは構文の必須部分です。
  • queuenameは、設定ファイルに記載されているキューのユーザ定義名です。

:

sp_ctrl(sysA)> stop export queue QA

この例では、sysAでの名前付きexportキューQAを介したデータのExportは停止されますが、それ以外のすべての名前付きキューに割り当てられたデータのExportは続行されます。

at sourcetime hh:mm:ss

このオプションは、指定された時刻のスタンプが付いた最初のメッセージを受信するとPost処理を停止します。それ以降のメッセージは、Postが再開されるまでpostキューに蓄積されます。

  • at sourcetimeは構文の必須部分です。
  • hh:mm:ssはPostが停止するタイムスタンプで、24時間制で指定する必要があります。1桁のコンポーネントはゼロ0で埋めます。空白は許可されません。

:

sp_ctrl(sysC)> stop post at sourcetime 24:00:00

この例では、午前0時のタイムスタンプが付いた最初のメッセージを受信したときに、PostがsysC上で停止します。

at sourcetime mm/dd/yyyy hh:mm:ss

このオプションは、指定された日時のスタンプが付いた最初のメッセージを受信するとPost処理を停止します。このオプションの目的と機能はstop post at sourcetime hh:mm:ssと同じですが、日付オプションが追加されています。

  • at sourcetimeは構文の必須部分です。
  • mm/dd/yyyyは、Postを停止させたい指定の日付です。構文上、日付の要素は時刻の要素より前になければなりません。年号には4桁すべての数字を含めなければなりません。1桁のコンポーネントはゼロ0で埋めます。空白は許可されません。このコンポーネントと時刻のコンポーネントはスペースで区切ります。
  • hh:mm:ssはPostが停止するタイムスタンプで、24時間制で指定する必要があります。1桁のコンポーネントはゼロ0で埋めます。

:

sp_ctrl(sysC)> stop post at sourcetime 01/31/2002 24:00:00

この例では、2002年1月31日午前0時のスタンプが付いた最初のメッセージを受信したときに、PostがsysC上で停止します。

リモートオプション

これらのオプションにより、リモートマシンにコマンドを発行したり、ログイン名、パスワード、ポート番号、またはそれらの組み合わせを含むコマンドをスクリプト化したりすることができます。

オプション 説明
on host

リモートシステム現在のsp_ctrlセッションが実行されているシステム以外でコマンドを実行します。リモートシステムのログイン認証情報の入力を求めるプロンプトが表示されます。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on SysA

on host:portnumber

リモートログインとポート番号を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on SysA:8304

on login/password@host

リモートログイン、パスワード、ホスト名を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例:sp_ctrl(sysB)>status on john/spot5489@SysA

on login/password@host:portnumber

リモートログイン、パスワード、ホスト名、ポート番号を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on john/spot5489@SysA:8304

target

Targetターゲット

targetコマンドは、Postが特定のタイプのターゲットをサポートするよう設定するために使用します。これはターゲットの設定と呼ばれます。ターゲット設定に保存されているプロパティは、Postがレプリケートされたデータをどのように処理して、フォーマットし、出力するかを制御します。

targetコマンドは、ターゲットの設定をリセットしたり表示したりするオプションも提供します。

targetコマンドは、グローバルレベルでも、またqueueオプションが使用されている場合にはプロセスごとのレベルでも、ターゲット設定を制御するために使用することができます。

重要: このコマンドを使用した後は、必ずPostプロセスを停止してから再度開始してください。

用途

サポート対象のソース: Oracle
サポート対象のターゲット: すべて
認証レベル: オペレーター2
発行場所: ターゲットシステム
関連コマンド: connection

構文

基本コマンド コマンドオプション リモートオプション

target {o. | r. | x. | c.}target

[queue queuename]

{command_option}

{

{ set category property |

reset [category [property] ] |

show [category ] } |

switch

}

利用不可

構文の説明
コンポーネント 説明
{o. | r. | x. | c.}target

Postを設定するターゲット。ターゲット名の前の文字は、Oracleデータベース、Open Targetデータベース、JMS、Kafkaブローカー、ファイル、変更履歴ターゲットなど、ターゲットの種類を示します。

考えられるターゲットは以下の通りです。

o.SID

ここで、SIDはOracleデータベースのORACLE_SIDです。

r.database

ここで、databaseはOpen Targetデータベースの名前ですDSNではない。*

x.jms

ここで、jmsはJava Message ServiceJMSのキューまたはトピックです。

x.kafka

ここで、kafkaはApache Kafkaブローカーです。

x.file

ここで、fileは、サポートされている形式のいずれかのデータを含む構造化ファイルですformatカテゴリ」を参照

c.SID

ここで、SIDは、変更履歴ターゲットとして構成されているターゲットOracleデータベースのORACLE_SIDです。

* 注意: SharePlexがサポートするデータストアのタイプ、データ型、および操作は『SharePlexリリースノート』に記載されています。
queue queuename

コマンドの動作を、指定されたキューに関連付けられているSharePlex Postプロセスに制約します。この動作は、設定しているターゲットプロパティのグローバル設定をオーバーライドします。queueオプションがない場合、targetコマンドは、ローカルのSharePlexインスタンス内のすべてのPostプロセスに影響を与えます。

例: 以下は、myjms1キューに関連付けられているPostプロセスのメタデータプロパティを設定します。

target x.jms queue myjms1 set metadata time, userid, trans, size

{

set category property |

reset [category [property]] |

show [category] |

switch

}

  • setは、設定プロパティをターゲット設定に適用します。
  • resetは、設定をデフォルトに戻します存在する場合。特定のカテゴリと、該当する場合は特定のプロパティに限定することができます。

注意: resetは、あるプロパティ値を別のプロパティ値にリセットすることはありません。その場合は、別のsetコマンドを使用します。

  • showは設定を表示します。
  • categoryは、設定プロパティの任意のカテゴリです。プロパティは、コマンドによる効率的な管理のためにカテゴリごとにグループ化されています。「カテゴリの説明」を参照してください。
  • propertyは、設定、リセット、または表示する設定プロパティです。カテゴリごとに異なる特性があります。
  • switchは、ファイルターゲットx.file にのみ適用されます。このオプションは、新しいアクティブな出力ファイルを作成し、古い順にシリアル番号を付けたファイルとして現在のファイルを保存するために使用します。このコマンドの発行後、Postが新しいレコードを処理した後に切り替わります。このオプションは入力を必要とせず、いかなる設定カテゴリとも関連はありません。
カテゴリの説明
カテゴリ 説明
cdc

特定のテーブルのSP_OPO_TRACK_PREIMAGEパラメーターで設定されている、Oracle変更履歴ターゲットのグローバル設定をオーバーライドします。「CDCカテゴリ」を参照してください。

characterset

Open Targetターゲットデータベースにポストする前に、レプリケートされたデータを指定された文字セットに変換するようPostプロセスに指示します。「charactersetカテゴリ」を参照してください。

file

ファイルターゲットのプロパティを設定します。詳細については、「fileカテゴリ」を参照してください。

format

ターゲットに書き込むデータの形式を設定します。詳細については、「formatカテゴリ」を参照してください。

json

format record=jsonのときのJSON出力のプロパティを設定します。詳細については、「JSONカテゴリ」を参照してください。

jms

JMSターゲットのプロパティを設定します。詳細については、「JMSカテゴリ」を参照してください。

kafka

Kafkaターゲットのプロパティを設定します。詳細については、「kafkaカテゴリ」を参照してください。

metadata

SharePlexによってレプリケートされるデータにメタデータプロパティを追加します。詳細については、「metadataカテゴリ」を参照してください。

resources

ターゲットシステムのリソースに影響を与えるパラメーターを設定します。「resourceカテゴリ」を参照してください。

rule | filter

Oracleの変更履歴ターゲットの特定のテーブルに追跡ルールまたはフィルターを適用する条件文を指定します。「rule | filterカテゴリ」を参照してください。

source

Oracle変更履歴ターゲットのソース識別子プロパティを設定します。詳細については、「sourceカテゴリ」を参照してください。

SQL

format record=sqlのときのSQL出力のプロパティを設定します。詳細については、「SQLカテゴリ」を参照してください。

CDCカテゴリ

サポート対象のターゲット

Oracle変更履歴ターゲット

コマンドオプション

target c.SID [queue queuename]

table tablename

{

set cdc preimage={yes | no}

reset cdc

show cdc

}

用途

特定のテーブルのSP_OPO_TRACK_PREIMAGEパラメーターで設定されている更新のグローバル設定をオーバーライドします。これは、更新操作の更新前イメージを履歴テーブルで追跡するかどうかを制御します。有効な値は、更新前イメージを追跡する場合はyes、更新前イメージを除外する場合はnoです。

charactersetカテゴリ

サポート対象のターゲット

Open Targetデータベース

コマンドオプション

target r.database [queue queuename]

{

set characterset character_set |

reset characterset character_set |

show characterset character_set

}

用途

ターゲットデータベースにポストする前に、レプリケートされたデータをローカルのOracleクライアントに送信し、指定された文字セットに変換するようPostプロセスに指示します。指定された文字セットは、Open Targetターゲットに文字データを投稿するときにPostで使用されるUnicodeのデフォルトの文字セットをオーバーライドします。

UTF8からUTF8の絵文字のレプリケーションは、OracleからOpen Posterでは問題なく機能します。ただし、UTF8形式ではないCESU8などOracleソースデータベースに絵文字を挿入する場合、このようなシナリオでは、非Oracleターゲットに絵文字をレプリケートするためにターゲットSharePlexインスタンスに以下の設定を適用する必要があります。

  1. データ変換のターゲットにOracleクライアントをインストールします。

  2. SP_OPX_NLS_CONVERSIONパラメーターを1デフォルトに設定します。

  3. ターゲットDBに必要な有効なUTF8バイトシーケンスにデータを変換するために、targetコマンドを使用してターゲット文字セットをAL32UTF8に設定します。

注意: このオプションを使用するには、ターゲットシステム上にOracleクライアントが存在しなければなりません。詳細については、SharePlexインストールおよびセットアップガイドの「Open Targetのチェックリスト」のセクションを参照してください。

プロパティ 入力値 デフォルト
character_set

ターゲットの文字セットに相当するOracleの文字セットそのOracle名で指定

Unicode

GB2312文字セットのデータをターゲットにポストするには、OracleのZHS16GBK文字セットを指定します。

target r.mymss set characterset ZHS16GBK

fileカテゴリ

サポート対象のターゲット

ファイル

コマンドオプション

target x.file [queue queuename]

{

set file property=value |

reset file [property] |

show file

}

用途

ファイルターゲットのプロパティを設定します。

プロパティ 入力値 デフォルト

location=pathname

ファイルを作成するSharePlex変数データディレクトリのパス名

opx

max_records=number

ファイルを切り替える前の、レコード数で測定されるアクティブファイルの最大サイズ

50,000

max_size=megabytes

ファイルを切り替える前のファイルの最大サイズメガバイト単位

50

max_time=seconds

ファイルを切り替えるまでの最大待機時間

300

record_length=number

レコードの最大サイズ文字数

132

target x.file set file max_size=320

formatカテゴリ

サポート対象のターゲット

ファイル

kafka

コマンドオプション

target x.{file | kafka} [queue queuename]

{

set format property=value |

reset format [property] |

show format

}

用途

ターゲットに書き込むデータの形式を設定します。

プロパティ 入力値 デフォルト

date=format

日付形式

yyyy-MM-dd HH:mm:ss

decimal=character

10進数文字

.ピリオド

enotation=notation

指数表記

14

record=record_format

出力レコードの形式。有効な値は、sqlxml、またはjsonです。

xml

timestamp=format

タイムスタンプの形式

yyyy-MM-ddTHH:mm:ss.ffffffffff

target x.file set format record=sql

target x.kafka set format record=json

出力形式の説明

以下は、format record=record_formatが提供する出力形式の説明です。

SQLレコードの形式

SQL形式のファイルの各トランザクションは、SQLファイル内のトランザクションシーケンスと一意のトランザクションIDを含むコメントで始まります。SQLファイルの末尾にあるコメント行にはファイル内の行数が表示されます。例えば、以下は1つのトランザクションを持つSQLファイルです。この例では、トランザクションIDは2-113319です。ファイルには9つの行があります。

/installed/vardir> cat opx/0000000010_20140305140820_legacy.sql

-- 0000000001 2-113319 03052014140813 03052014140813

DELETE FROM "ROBIN"."TEST_TYPES" WHERE ORA_NUMBER = '22345' AND ROWNUM = 1;

INSERT INTO "ROBIN"."TEST_TYPES" (ORA_NUMBER, ORA_DATE, ORA_RAW, ORA_ROWID,

ORA_FLOAT, ORA_CHAR, ORA_VARCHAR2, ORA_TIMESTAMP, ORA_TIMESTAMP_TZ,

ORA_TIMESTAMP_LTZ) VALUES('22345', '08132066000000', '0123456789ABCDEF'

, 'AAAAAAAAAAAAAAAAAA', '12350', 'Character ', 'Variable data'

, '10201998021300.22000', '06172002080000.00000', '06172002160000.00000');

COMMIT;

-- EOF 0000000009

XMLレコードの形式

XMLフォーマットは操作とスキーマの「型」に分けられ、より簡単に利用できるようになっています。XSDの観点から見ると、これらは実際には同じであり、別個の型ではありません。テンプレートXMLは、すべての可能な属性と要素を表します。個のXMLは、サポートされている各操作の最小限の出力を表します。

起動後、Postが初めて任意のテーブルの変更レコードを書き込む場合は、まずそのテーブルのスキーマレコードを書き込みます。各スキーマレコードには、テーブル名と各列の詳細が含まれています。スキーマレコードは、スキーマに変更がない限り、Postの実行中に各テーブルに対して1回だけ書き込まれ、その後は新しいスキーマレコードが書き込まれます。Postが停止し、開始すると、Postが各テーブルの変更レコードを受信するたびに、スキーマレコードが再度書き込まれます。

スキーマレコードのテンプレート
<?xml version="1.0" encoding="UTF-8" ?>  
<?opentarget version="1.0" ?>  
<opentarget>  
    <txn  
        id="xs:integer"  
        oracleTxnId="xs:string"   
        commitTime="xs:dateTimeStamp" />  
    <tbl  
        name="xs:string"  
        utcOffset="xs:integer"
        <cmd ops="schema">  
            <schema>  
                <col  
                    name="xs:string"  
                    xmlType="xs:string"  
                    key="xs:boolean"  
                    nullable="xs:boolean"  
                    length="xs:integer"  
                  />  
            </schema>  
        </cmd>  
    </tbl>  
</opentarget>

表1: スキーマテンプレートの説明* =オプション

要素 属性 説明

txn

 

トランザクションメタデータ

 

id

現在のトランザクションのID

 

oracleTxnId *

OracleのトランザクションID

 

commitTime*

トランザクションのコミットタイムスタンプ

tbl

 

テーブルメタデータ

 

name

テーブルの完全修飾名

 

utcOffset

ログのUTCオフセット

cmd

 

操作のメタデータスキーマの場合は操作なし

 

ops

このテーブルについて生成されるレコードのタイプ。スキーマの場合、値はschemaです。

schema   列のメタデータ
col   列のメタデータテーブルのレコードごとにこれらの要素の1つが表示される

 

name

列名

 

xmlType

XMLデータ型

 

key

キーフラグ真、偽

 

nullable

NULL許容フラグ

 

length

列の長さ

操作レコードテンプレート
<?xml version="1.0" encoding="UTF-8" ?>
<?opentarget version="1.1" ?>
<opentarget>
    <txn
        id="xs:integer" 
        msgIdx="xs:integer" 
        msgTot="xs:integer" 
        oracleTxnId="xs:string"
        commitTime="xs:dateTimeStamp"
        userId="xs:string" />
    <tbl 
        name="xs:string"
        <cmd ops="xs:string">
            <row id="xs:string">
                <col name="xs:string"></col>
                <lkup>
                    <col name="xs:string"></col>
                </lkup>
            </row>
        </cmd>
    </tbl>
</opentarget>

表2: 操作テンプレートの説明* =オプション

要素 属性 説明
txn   操作のトランザクションメタデータ
  id 現在のトランザクションのID
  msgIdx トランザクション内の現在のレコードのインデックス
  msgTot* トランザクション内のメッセージ総数
  oracleTxnId * システム変更番号SCNから取得したOracleのトランザクションID
  commitTime* トランザクションのコミットタイムスタンプ
  userId * 操作を実行したユーザID
tble   テーブルメタデータ
  name 完全修飾テーブル名
cmd  

操作のメタデータ

  ops 操作のタイプ挿入、アップデート、削除、トランケート
row   操作で変更された行のメタデータ
  id Oracle ROWID
col   列のデータを変更操作で変更された列ごとに、これらの要素の1つが表示される
  name 列名とその列の変更後の値
lkup   アップデートおよび削除操作で使用する変更前イメージ
col   列の変更前イメージ操作で変更された列ごとに、これらの要素の1つが表示される
  name 列名と、その列の変更前の値またはキー値操作によって異なる

注意: idおよびmsgIdx属性を組み合わせて操作を一意に識別します。

サポートされているデータ型

Oracleのデータ型をXMLに変換する方法を示すチャートについては、『SharePlexリリースノート』を参照してください。

サンプルXMLレコード
ソーステーブル

これはサンプル操作が生成されるテーブルです。

SQL> desc products

Name

Null?

Type

PRODUCT_ID

NOT NULL

NUMBER

DESCRIPTION

 

VARCHAR2(600)

PRICE

 

NUMBER

ソースDML操作
insert into products values (230117, ‘Hamsberry vintage tee, cherry’, 4099);
commit;
update products set price=3599 where product_id=230117 and price=4099;
commit;
delete products where product_id=230117;
commit;
truncate table products;
スキーマレコード
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218316945" commitTime="2014-10-10T13:18:43" userId="85" oracleTxnId="3.10.1339425" />
<tbl name="MFG.PRODUCTS" utcOffset="-5:00">
<cmd ops="schema">
<schema>
<col name="PRODUCT_ID" xmlType="decimal" key="true" nullable="false" length="22" />
<col name="DESCRIPTION" xmlType="string" key="false" nullable="true" length="600" />
<col name="PRICE" xmlType="decimal" key="false" nullable="true" length="22" />
</schema>
</cmd>
</tbl>
</opentarget>
挿入レコード
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218316945" msgIdx="1" msgTot="1" commitTime="2014-10-10T13:18:43" userId="85" oracleTxnId="3.10.1339425" />
<tbl name="MFG.PRODUCTS">
<cmd ops="ins">
<row id="AAAmDbAAEAAApRrAAA">
<col name="PRODUCT_ID">230117</col>
<col name="DESCRIPTION">Hamsberry vintage tee, cherry</col>
<col name="PRICE">4099</col>
</row>
</cmd>
</tbl>
</opentarget>
更新レコード
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218318728" msgIdx="1" msgTot="1" commitTime="2014-10-10T13:19:12" userId="85" oracleTxnId="1.17.970754" />
<tbl name="MFG.PRODUCTS">
<cmd ops="upd">
<row id="AAAmDbAAEAAApRrAAA">
<col name="PRICE">3599</col>
<lkup>
<col name="PRODUCT_ID">230117</col>
<col name="PRICE">4099</col>
</lkup>
</row>
</cmd>
</tbl>
</opentarget>
削除レコード
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218319446" msgIdx="1" msgTot="1" commitTime="2014-10-10T13:19:25" userId="85" oracleTxnId="5.23.1391276" />
<tbl name="MFG.PRODUCTS">
<cmd ops="del">
<row id="AAAmDbAAEAAApRrAAA">
<lkup>
<col name="PRODUCT_ID">230117</col>
</lkup>
</row>
</cmd>
</tbl>
</opentarget>
トランケートレコード
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218319938" commitTime="1988-01-01T00:00:00" userId="85" oracleTxnId="11.4.939801" />
<tbl name="MFG.PRODUCTS">
<cmd ops="trunc" />
</tbl>
</opentarget>

JSONレコードの形式

注意: これは、出力を読みやすくするために使用したtarget x.kafka set json indent=2を除き、デフォルトの出力です。

これはサンプル操作が生成されるテーブルです。

SQL> desc products

Name

Null?

Type

PRODUCT_ID

NOT NULL

NUMBER

DESCRIPTION

 

VARCHAR2(600)

PRICE

 

NUMBER

ソースDMLの操作
insert into products values (230117, ‘Hamsberry vintage tee, cherry’, 4099); 
commit;
update products set price=3599 where product_id=230117 and price=4099;
commit;
delete products where product_id=230117;
commit;
truncate table products;
スキーマレコード
{
  "meta":{
    "op":"schema",
    "table":""
  },
  "schema":{
    "name":"BILL.PRODUCTS",
    "utcOffset":"-7:00",
    "PRODUCT_ID":{
      "jsonType":"decimal",
      "num":1,
      "key":1,
      "nullable":1,
      "length":22,
      "precision":0,
      "scale":0,
      "src_name":"PRODUCT_ID"
    },
    "DESCRIPTION":{
      "jsonType":"string",
      "num":2,
      "key":1,
      "nullable":1,
      "length":600,
      "precision":0,
      "scale":0,
      "src_name":"DESCRIPTION"
    },
    "PRICE":{
      "jsonType":"decimal",
      "num":3,
      "key":1,
      "nullable":1,
      "length":22,
      "precision":0,
      "scale":0,
      "src_name":"PRICE"
    }
  }
}
レコードの挿入
{
  "meta":{
    "op":"ins",
    "table":"BILL.PRODUCTS"
  },
  "data":{
    "PRODUCT_ID":230117,
    "DESCRIPTION":"Hamsberry vintage tee, cherry",
    "PRICE":4099
  }
}
レコードの更新
{
  "meta":{
    "op":"upd",
    "table":"BILL.PRODUCTS"
  },
  "data":{
    "PRICE":3599
  },
  "key":{
    "PRODUCT_ID":230117,
    "DESCRIPTION":"Hamsberry vintage tee, cherry",
    "PRICE":4099
  }
}
レコードの削除
{
  "meta":{
    "op":"del",
    "table":"BILL.PRODUCTS"
  },
  "data":{
    "PRODUCT_ID":230117,
    "DESCRIPTION":"Hamsberry vintage tee, cherry",
    "PRICE":3599
  }
}
レコードの切り捨て
{
  "meta":{
    "op":"truncate",
    "table":"BILL.PRODUCTS"
  }
}

JMSカテゴリ

サポート対象のターゲット

JMS

コマンドオプション

target x.jms [queue queuename]

{

set jms property=value |

reset jms [property] |

show jms

}

用途

JMSターゲットのプロパティを設定します。

プロパティ 入力値 デフォルト

factory_class=factory_class

必須。ファクトリクラスの完全修飾クラス名。JNDI環境プロパティjava.naming.factory.initialを設定して、プロバイダの初期コンテキストファクトリのクラス名を指定します。

None

provider_url=url

必須。オブジェクト名コンポーネントを持たないRMI URL。これは、JNDI環境プロパティjava.naming.provider.urlを設定し、初期コンテキストとして使用されるレジストリの場所を指定します。

JMSプロバイダとURLのタイプに応じて正しいフォーマットを使用してください。例えばLDAPを使用する場合、URLは以下のようになります。

ldap://hostname.company.com/contextName

JMSプロバイダのURLについては、JMSプロバイダ管理者にお尋ねください。

None

lib_location=path

必須。クライアント・ライブラリ・ファイルをインストールしたディレクトリへのパス。

None

destination={queue | topic}

メッセージングドメイン。有効な値は、queueポート間またはtopicパブリッシャ・サブスクライバ・モデルです。

キュー

factory_name=factory_name

JNDI接続ファクトリの検索名。カンマ区切りリストで複数の名前を指定することができます例: jndi.name1, jndi.name2

None

user=user

JMSに接続しているユーザ名。認証が不要な場合は、このオプションとpasswordオプションを省略します。

None

password=password

JMSユーザのパスワード。

None

queuename=JMS_topic_queuename

JMSキューまたはトピックの名前。

OpenTarget

persistent={yes | no}

yesは、送信操作の一部として、メッセージをディスクストレージにログ記録します。

noは、ログが記録されなくなります。

yes
session_transacted ={yes | no}

noは、複製された各メッセージに対してJMSコミットを発行するようPostに指示し、各メッセージを即座に可視化して使用可能にします。これがデフォルトです。

yesは、トランザクション方式で動作するようにPostに指示します。このモードでPostは、以下に基づく間隔で、メッセージを可視化して使用可能にするJMSコミットを発行します。

  • SP_OPX_READRELEASE_INTERVALパラメーターに設定された値によって制御されるように、データがPostキューから読み取られてリリースされる前にコミットを発行します。
  • SP_OPX_CHECKPOINT_FREQパラメーターに設定された値によって制御されるように、SP_OPX_READRELEASE_INTERVALに達するまで、JMSの書き込みごとにコミットを発行します。

no
properties

使用しているJMSプロバイダが、SharePlexによって提供されるプロパティのデフォルトセットを含むメッセージを消費できない場合、このオプションを使用します。このオプションではプロパティを削除または追加することができます。プロパティをカンマ区切りリストで指定します。

  • プロパティを追加するには、name=valueと指定します。
  • SharePlexプロパティを削除するには、名前の前にダッシュを付けます。例えば、この文字列は2つのSharePlexプロパティを削除します。-JMSXDeliveryCount, -JMSXGroupSeq
None
client_id 使用しているJMSプロバイダが、デフォルトのSharePlexクライアントIDを含むメッセージを使用できない場合は、このオプションを使用します。この値は、プロバイダが受け付けるクライアントIDを設定します。 None
commit_frequency

このオプションは、Postがトランザクション方式でJMSサーバにポストするように設定されている場合に使用しますsession_transactedプロパティで指示されるようにすべてのメッセージの後ではなく、一定間隔でJMSコミットを発行。このパラメーターはJMSコミットの間隔を指定します。SP_OPX_READRELEASE_INTERVALパラメーターと連動して動作します。有効な値は1から任意の正の整数です。

1,500

target x.jms set jms queuename=SharePlexJMS

JSONカテゴリ

サポート対象のターゲット

ファイルformat record=json

Kafkaformat record=json

コマンドオプション

target x. {file | kafka } [queue queuename]

{

set json property=value |

reset json [property] |

show json

}

用途

format record =jsonのときのJSON出力のプロパティを設定します。

プロパティ 入力値 デフォルト

before

  • yesに設定すると、行の変更前イメージが含まれます。
    変更前イメージが行末にある、以下のようなレコードが作成されます。

    {"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C2":"Bye"},
    "key":{"C1":"1","C2":"Hello"}}
    {"meta":{"op":"upd","table":"BILL.JSON"},
    "data":{"C1":"2"},"key":{"C1":"1"}}
    
  • noに設定すると、行の変更前イメージが除外されます。以下のようなレコードが作成されます。

    {"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C2":"Bye"}}
    {"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C1":"2"}}
    

    ただし、Update操作の場合、更新されたレコードのキーを表示するには、「before」を「yes」に設定する必要があります。

yes

commit

  • yesに設定すると、コミットレコードが含まれます。以下のようなレコードが作成されます。

    {"meta":{"op":"commit","table":""}}
  • noに設定すると、コミットレコードは省略されます。

重要!commityesに設定されている場合、対象となるトピックは1つだけです。

yes

ddl
  • yesに設定すると、ALTER TABLEコマンドが含まれます。以下のようなレコードが作成されます。

    {"meta":{"op":"ddl","table":"BILL.JSON"},
    "sql":{"ddl":"alter table \"BILL\".\"JSON\""}
    
  • Noに設定すると、ALTER TABLEコマンドは省略されます。

yes

eol

yesに設定すると、JSONドキュメントの最後に行末文字が含まれます。

noに設定すると、行末文字が除外されます。

yes

indent

レコードのインデントのレベルを制御します。

  • 0に設定すると、以下のようにレコード全体が1行に配置されます。

    {"meta":{"op":"ins","table":"BILL.JSON"},
    "data":{"C1":"1","C2":"Hello ",
    "C3":"There","C4":"2017-03-20T09:46:34",
    "C5":"2017-03-20T09:46:34.735370000"}}

  • 1以上に設定すると、メタデータ含まれている場合とデータ行が、指定した文字数だけ字下げされます。
    以下の例のように、レコードが論理的に複数の行に分割されますindent= 4

    {
        "meta":{
            "op":"ins",
            "table":"BILL.JSON"
        },
        "data":{
            "C1":"1",
            "C2":"Hello",
            "C3":"There",
            "C4":"2017-03-20T10:02:37",
            "C5":"2017-03-20T10:02:37.456949000"
        }
    }
    

0

meta
  • yesに設定すると、JSONレコードのメタデータセクションが含まれます。以下のようなレコードが作成されます。

    {"meta":{"op":"ins","table":"BILL.JSON"},
    "data":{"C1":"1","C2":"Hello","C3":"There",
    "C4":"2017-03-20T10:04:44",
    "C5":"2017-03-20T10:04:44.957758000"}}
    {"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C2":"Bye"}}
    {"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C1":"2"}}
    {"meta":{"op":"del","table":"BILL.JSON"},"data":{"C1":"2"}}
    {"meta":{"op":"commit","table":""}}
    
  • noに設定すると、メタデータセクションは省略され、以下のようなレコードが作成されます。

    {"data":{"C1":"1","C2":"Hello","C3":"There",
    "C4":"2017-03-20T10:05:09",
    "C5":"2017-03-20T10:05:09.268094000"}}
    {"data":{"C2":"Bye"}}
    {"data":{"C1":"2"}}
    {"data":{"C1":"2"}}
    {}

注意: レコードに表示するメタデータフィールドを指定するには、set metadata propertyコマンドを使用します。「metadataカテゴリ」を参照してください。

例:

target x.kafka set metadata time,userid,op,scn

yes

schema
  • yesに設定すると、スキーマレコードが含まれます。
  • noに設定すると、スキーマレコードが省略されます。

    レプリケーション中のオブジェクトのスキーマレコードは、新しいSharePlex
    設定がアクティベーションされたとき、またはテーブルでDDLの変更があったときに作成されます。
    yesの値indent=4に設定すると、以下のようなレコードが作成されます。

    {
        "meta":{
            "op":"schema",
            "table":""
        },
        "schema":{
            "name":"BILL.JSON",
            "utcOffset":"-7:00",
            "C1":{
                "jsonType":"decimal",
                "num":1,
                "key":1,
                "nullable":0,
                "length":22,
                "precision":0,
                "scale":0,
                "src_name":"C1"
            },
            "C2":{
                "jsonType":"string",
                "num":2,
                "key":0,
                "nullable":1,
                "length":10,
                "precision":0,
                "scale":0,
                "src_name":"C2"
            },
            "C3":{
                "jsonType":"string",
                "num":3,
                "key":0,
                "nullable":1,
                "length":10,
                "precision":0,
                "scale":0,
                "src_name":"C3"
            }
      }
    }

yes

target x.kafka set json meta=no

kafkaカテゴリ

サポート対象のターゲット

kafka

コマンドオプション

target x.kafka [queue queuename]

{

set kafka property=value |

reset kafka [property] |

show kafka

}

用途

Kafkaターゲットのプロパティを設定します。

プロパティ 入力値 デフォルト
broker=broker

必須。Kafkaブローカーのホストおよびポート番号、または複数のブローカーのコンマ区切りリスト。このリストがKafkaクラスタへのブートストラップとなります。これらのブローカーのいずれかに接続できれば、Postはクラスタ内の他のブローカーを検出します。

localhost:9092
client_id=ID

オプション。呼び出しの追跡に役立つようにPostが各リクエストで送信するユーザ定義の文字列。

None
compression.code={none, gzip, snappy} オプション。Kafkaでデータを圧縮するかどうかを制御します。オプションはnonegzip、またはsnappyです。 None
partition={number | rotate | rotate trans| messagekey}

必須。次のいずれか:

  • 固定のパーティション番号: 指定されたパーティション番号にのみメッセージをポストするようにPostに指示します。例えば0に設定すると、Postはパーティション0にのみポストするようになります。このオプションは、テストでの使用や、同じKafkaトピックにポストするデータの複数のチャンネルがターゲットにある場合の用途に適しています。
  • キーワードrotate: トピックのすべてのパーティションにラウンドロビン方式でメッセージを適用するようにPostに指示します。パーティションは、メッセージが新しくなるたびに変わります。例えば、あるトピックに3つのパーティションがある場合、メッセージはパーティション0、1、2、0、1、2…の順番にポストされます。
  • キーワードrotate trans: これはrotateオプションと似ていますが、パーティションの番号が、メッセージごとではなくトランザクションごとに大きくなる点が異なります。例えば、あるトピックに3つのパーティションがある場合、コミットまではパーティション0に、コミットまではパーティション1にといった順番でメッセージがポストされます。このオプションは、複数のテーブルを1つのトピックに複製する場合に適しています。これにより、複数のパーティションにデータを分散させながら、トランザクションのすべての操作を単一のパーティションにまとめて保持することができます。その結果、単一のパーティションから読み取るコンシューマーは、完全なトランザクションのストリームを受け取ることができます。
  • キーワードmessagekey: パーティションへのメッセージのポストをPostに指示します。Kafkaのトピックはいくつかのパーティションに分かれています。これらのパーティションは、デフォルトのパーティションハッシュ関数に基づいて選択されます。ハッシュ値はmessagekeyに基づいて計算されます。messagekeyパーティションを使用して、同じキー値を持つすべてのメッセージを同じパーティションに入れます。

注意:

  • LOB列とCLOB列はKafkaパーティションキーとは見なされません。

  • プライマリキー、一意キー、複合キー、または一意のインデックスを持たないテーブルでは、すべての列LOB列とCLOB列を除くがキー列と見なされます。このようなテーブルに対してalterクエリを実行すると、DDLステートメントはすべてのパーティションに複製され、後続のDMLステートメントは既存の列に基づいて特定のパーティションに送信されます。

  • レプリケーションテーブルにキーが定義されていない場合、SharePlexはすべてのテーブル列をKafkaメッセージキーと見なします。キー以外のテーブルでは、SharePlexのユーザ定義キーを使用することをお勧めします。詳細については、『SharePlex管理者ガイド』の「Define a Unique Key: PostgreSQL to PostgreSQL一意キーの定義: PostgreSQLからPostgreSQLへ」のセクションを参照してください。

  • 複数のテーブルがレプリケーションに関与しているときに、特定のテーブルに異なるパーティションタイプを指定し、残りのテーブルをメッセージキーに基づいてパーティション化する場合、これらの特定のテーブルに名前付きpostキューを定義することができます。

例:

target x.kafka queue <queue_name> set kafka partition={number/rotate/rotate trans}

残りのテーブルには以下のコマンドを使用します。

target x.kafka set kafka partition=messagekey

重要:

パーティション化がメッセージキーに基づいて行われる場合、キー情報を含まないメッセージはKafka内部のハッシュ関数に従ってマッピングされます。これらのメッセージには、コミット、スキーマ、ロールバック、セーブポイント、およびDDLステートメントが含まれることがあります。

レプリケーション中にパーティション数が増えると、キーからパーティションへの既存のマッピングは無効になります。

いくつかの列がインデックスとして機能し、他の制約が定義されていないテーブルの場合、SharePlex設定ファイルで一意キーとしてこれらのインデックスを使用します。

例えば、以下のテーブルでは2つの列IDとNAMEに一意のインデックスが定義されています。

create table mytable(ID NUMBER(25,2),NAME CHAR(200),COL_VARCHAR2 VARCHAR2(400),COL_RAW RAW(1000));

CREATE INDEX indx_mytable ON mytable(ID,NAME);

SharePlex設定ファイルで、インデックス列を一意キーとして定義します。

datasource:o.SID
src.mytable !key(ID,NAME) host

詳細については、『SharePlex管理者ガイド』の「Define a Unique Key: Oracle to Oracle一意キーの定義: OracleからOracleへ」のセクションを参照してください。

制約やインデックスが定義されていないテーブルについては、SharePlexでの設定中に一意キーを定義することができます。

複合キーを持つテーブルの場合、キー値のいずれかが変更されると、その変更メッセージは現在のパーティションに置かれます。それ以降のメッセージは同じパーティションに割り当てられることもあれば、割り当てられないこともあります。

0
request.required.acks=value

オプション。これはKafkaクライアントのパラメーターです。デフォルトでは-1に設定されており、allを意味します。実際にはallall in-sync replicasを意味するため、これについてはKafkaのドキュメントを参照してください。このパラメーターは、min.insync.replicas brokerパラメーターと併用することで、可用性とデータの一貫性の関係を調整することができます。

重要: これらの設定によっては、Kafkaプロデューサーこの場合はSharePlex とKafkaクラスタの間でデータが失われる可能性があります。

-1
topic=topic_name

必須。ターゲットのKafkaトピックの名前。

この文字列には特殊なシーケンス%oまたは%tを含めることができます。%oのシーケンスは、複製されるテーブルの所有者名に置き換えられます。%tのシーケンスは、複製されるテーブルのテーブル名に置き換えられます。この機能は、Kafkaサーバの設定auto.create.topics.enabledが「true」に設定されている場合に使用できます。また、トピックが自動的に生成されるときのデフォルトとして使用されるため、default.replication.factornum.partitionsのサーバ設定も確認してください。

重要! 複数のトピックを使用する場合は、targetコマンドで以下のプロパティも設定する必要があります。
  • 出力はJSONでなければなりません。formatカテゴリのrecordプロパティをjsonに設定します。

    target x.kafka set format record=json

  • コミットは無効にしなければなりません。jsonカテゴリのcommitプロパティをnoに設定します。

    target x.kafka set json commit=no

shareplex

*レイテンシを避けるために、Postはそれ以上着信メッセージがないことを検知すると、しきい値が満たされるのを待たずにKafkaに即座にパケットを送信します。

sp_ctrl> target x.kafka set kafka broker=host1:9092,host2:9092,host3:9092

sp_ctrl> target x.kafka set kafka topic=shareplex

metadataカテゴリ

サポート対象のターゲット

Oracleレプリケーションターゲット

Oracle変更履歴ターゲット

HANAレプリケーションターゲット

ファイル

JMS

kafka

コマンドオプション

target {o.SID | c.SID | r.database | x.file | x.jms | x.kafka} [queue queuename]

{

set metadata [colname:]property[, ...] |

reset metadata |

show metadata

}

用途

set metadataを指定してtargetコマンドを使用すると、データベースターゲット、XMLまたはJSONファイルターゲット、JMSターゲット、Kafkaターゲットに設定されているデフォルトのメタデータプロパティをオーバーライドできます。これらのターゲットタイプはすべて、Postの出力にメタデータを提供します。

  • OracleおよびHANAレプリケーションターゲット: メタデータをOracleおよびHANAレプリケーションターゲットに設定できます。メタデータの列はターゲット上に存在していなければなりません。SharePlexはメタデータ列を追加しません。
  • Oracle変更履歴ターゲット: targetの指定がない場合、Postはデフォルトのメタデータ列を更新します。デフォルトのメタデータ列は、レプリケーションを開始する前にデフォルトの名前で存在していなければなりません。以下のテーブルでは、プロパティがデフォルトで変更履歴ターゲットに含まれている場合、デフォルトの列名がリストされます。set metadataを使用するのは、メタデータを追加したり、列にカスタム名を割り当てる場合のみですcolnameオプションを使用
  • XML入力をサポートするターゲットJMS、Kafka、ファイルの場合、メタデータはXMLスキーマに従ってフォーマットされます。以下の表に示すように、特定のメタデータはデフォルトで出力に含まれます。set metadataを使う必要はありません。set metadataは、メタデータを追加する場合にのみ使用します。
  • JSON入力をサポートするターゲットの場合Kafkajson meta=noを設定しない限り、opおよびtableプロパティがデフォルトで含まれます。

変更履歴ターゲットデータベースをサポートするためのSharePlexの設定については、『SharePlex管理者ガイド』を参照してください。

複数のメタデータプロパティを設定するには、カンマ区切りリストとして指定します。

プロパティ Postにより挿入される値 以下について有効
time

ソースに操作が適用された時刻Oracleにより提供

重要! Oracleバージョン11g以降では、時刻はトランザクションの開始など、トランザクションの境界レコードにのみ表示されます。OracleのREDOログの線形設計と、SharePlexがトランザクションの順序で操作をレプリケートする方法の両方に基づいて、SharePlexは、異なるタイムスタンプを持つレコードが見つかるまで、元のレコードに含まれるタイムスタンプを後続のレコードに適用します。

デフォルトの列名: SHAREPLEX_SOURCE_TIME

データ型: TIMESTAMP

このプロパティは、XML出力と変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSONおよびXML出力

userid

操作を実行したユーザID

デフォルトの列名: SHAREPLEX_SOURCE_USERID

データ型: NUMBER

このプロパティは、XML出力と変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSONおよびXML出力

op

操作の種類INSERT、UPDATE、DELETE、TRUNCATE、DROP COLUMN、UPDATE BEFORE、UPDATE AFTER。JMSの実装の場合、このフィールドは、常にSPOpsという名前のフィールドとしてXML出力に追加されます。これをJMSプロパティに追加するには、opオプションを指定して明示的にtargetコマンドを発行します。

デフォルトの列名: SHAREPLEX_SOURCE_OPERATION

データ型: VARCHAR2

このプロパティは、XMLおよびJSON出力と変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSONおよびXML出力

scn

操作が適用されたときのソースSCN

デフォルトの列名: SHAREPLEX_SOURCE_SCN

データ型: NUMBER

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

HANAレプリケーションターゲット

JSON出力

rowid

変更された行のROWID

デフォルトの列名: SHAREPLEX_SOURCE_ROWID

データ型: ROWID

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSON出力

trans

操作のトランザクションID。JMSの実装の場合、このフィールドは、SPTxnIdという名前のフィールドとしてXML出力とJMSプロパティの両方に追加されます。

デフォルトの列名: SHAREPLEX_SOURCE_TRANS

データ型: VARCHAR2

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSON出力

seq

トランザクション内での操作の順序

デフォルトの列名: SHAREPLEX_OPERATION_SEQ

データ型: NUMBER

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSON出力

host

ソースホストの名前またはIPアドレス

デフォルトの列名: SHAREPLEX_SOURCE_HOST

データ型: VARCHAR2

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSON出力

posttime 操作がターゲットにポストされた時刻 JSON出力
queue

SharePlexキューの名前

デフォルトの列名: SHAREPLEX_QUEUENAME

データ型: VARCHAR2

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSON出力

source

targetset sourceオプションで設定されたユーザ定義のソース識別子。「sourceカテゴリ」を参照してください。

デフォルトの列名: SHAREPLEX_SOURCE_ID

データ型: VARCHAR2

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

JSON出力

changeid

操作のユニークな連続ID

デフォルトの列名: SHAREPLEX_CHANGE_ID

データ型: NUMBER

このプロパティは、変更履歴テーブルにデフォルトで含まれます。

Oracleレプリケーションターゲット

変更履歴ターゲット

size

トランザクション内の操作数

 

JSON出力

kafka

table

ターゲットテーブルの名前。ターゲットテーブルの名前は、SPTblNameという名前のフィールドとしてJMSプロパティに追加されます。

このプロパティは、JSON出力にデフォルトで含まれます。

JMS

JSONおよびXML出力

idx トランザクション内のこの操作のインデックス。これは、SPMsgIdxという名前のフィールドとしてJMSプロパティに追加されます。JMSプロパティではm/nの形式になります。ここで、nはトランザクション内の操作の総数、mはトランザクション内の操作番号です。

JMS

JMSとKafkaのset metadataの例

以下では、ソースのIPアドレスまたはホスト名、SharePlexキューの名前、およびトランザクションの操作数をJMSターゲットの出力に追加するように、すべてのPostプロセスを設定しています。

target x.jms set metadata host, queue, size

または...

target x.kafka set metadata host, queue, size

Oracleのset metadataの例

以下の例では、操作の時刻とそれを実行したユーザIDをTimestampおよびUser列に追加するように、myqueue1キューに関連付けられたPostプロセスを設定しています。これらの列は、いずれも大文字と小文字が区別されるユーザ定義の名前です。

target c.targSID queue myqueue1 set metadata time:"Timestamp", userid:"User"

resourceカテゴリ

サポート対象のターゲット

すべてのターゲット

コマンドオプション

target {o. | r. | x. | c.} target [queue queuename]

{

set resources property=value |

reset resources [property] |

show resources [for datastore]

}

用途

ターゲットシステムのリソースに影響を与えるパラメーターを設定します。

プロパティ 入力値 デフォルト

commit_frequency=number_of_operations

Postがコミットを発行するまでの操作の最大回数を指定します。2以上の任意の整数に設定できます。大きなトランザクションを、指定されたnumber_of_operations以下の操作をそれぞれが含む2つ以上の小さなトランザクションに分割するために使用できます。このオプションでは、トランザクションごとに許可される行ロックの数など、大規模なトランザクションに影響するリソース制限を回避することができます。

注意: 「commit_frequency」プロパティは、JMSターゲットでのみサポートされています。

50000

max_active_statements=number_of_cursors 1つのセッションでPostがターゲットデータベースに対して同時に処理できるアクティブなSQLステートメントの数を指定します。データベースまたはクライアントドライバで許可されるアクティブなステートメントの最大数を上限とする任意の整数を指定できます。これは、SP_OPX_SQL_CACHE_DISABLEパラメーターが0有効に設定されている場合にのみPostで使用されます。

16

target r.mydb queue q1 set resources commit_frequency=10000

target r.mydb queue q1 set resources max_active_statements=10

rule | filterカテゴリ

サポート対象のターゲット

Oracle変更履歴ターゲット

コマンドオプション

target c.SID [queue queuename]

table tablename

{

set {rule | filter} { 'column_condition' | !filename }

reset {rule | filter}

show {rule | filter}

}

用途

特定のテーブルに追跡ルールやフィルターを適用する条件文を指定します。UPDATE操作に適用されます。追跡するデータをターゲットテーブルに限定し、関心のないデータは除外する条件付きロジックを適用します。1つのターゲットテーブルごとに1つのruleまたはfilterだけを指定できますが、括弧を使用した入れ子にした式や、AND、OR、およびNOTの論理結合子と組み合わせてさまざまな条件を作成することができます。

構文要素 説明
rule | filter
  • ruleは、UPDATE操作がcolumn_conditionに一致する場合にのみ、行を挿入するようPostに指示します。UPDATEが列条件に一致しない場合、その行は破棄されます。
  • filterは、UPDATEがcolumn_conditionに一致しない場合にのみ、行を挿入するようPostに指示します。UPDATEが列条件に一致した場合、その行は破棄されます。
table tablename ルールまたはフィルターを設定するターゲットテーブルの名前。

column_condition

UPDATE操作により満たす必要のある条件付きロジック。column_conditionは条件文全体を表し、一重引用符で囲む必要があります。列の条件は、以下の1つの式、または任意の組み合わせにすることができますそれぞれを括弧で囲む

(column is changed)

(column is not changed)

([column1, column2, ...] matches change_list)

([column1, column2, ...] contains change_list)

 

ここで:

  • columnはターゲット列の名前です。リスト内の列名の区切りにはカンマを使い、リストは括弧で囲みます。
  • is changedは、指定された列がUPDATE操作で変更されることを意味します。
  • is not changedは、指定された列がUPDATE操作で変更されないことを意味します。
  • change_listは、変更されるソース列の論理表現です。
  • matches change_listが満たされるのは、条件が変更リストと完全に一致する場合です変更リストより少ない、または多い列は対象とならない、同じ名前のみ
  • contains change_listは、変更リストのすべての列が条件に含まれる場合に満たされます。変更リストは条件の列のサブセットにすることができますが、変更リストより多くの列を含めることはできません。名前は一致していなければなりません。
!filename 大きな列の条件をテキストファイルに保存し、targetコマンドを実行する際に列条件の構文全体ではなく、そのファイルを指定できるようにします。

注意: rule/filter機能では、バッチおよび直接ロード操作はサポートされていません。

これらのコマンドは、式を組み合わせてさまざまなルールを設定する方法の例を示しています。

target c.mySIDtable mytable set rule '(col3 is not changed) and (col5 is not changed)'

target c.mySIDtable mytable set rule '([col1, col3] matches change_list)'

target c.mySIDtable mytable set rule 'not ([col2, col5] contains change_list)'

 

次の表は、行を含めたり破棄したりするためにrulefilterを機能させるさまざまな方法を示しています。

ルール 更新された列 列が挿入されたかどうか
rule = '(c2 is not changed)' c2 no
rule = '(c2 is not changed)' c3 yes
rule = '(c2 is changed)' c2 yes
rule = '(c2 is changed or c4 is changed)' c1 no
rule = '(c2 is changed or c4 is changed)' c1,c3,c5 no
rule = '(c2 is changed or c4 is changed)' c2 yes
rule = '(c2 is changed or c4 is changed)' c3,c4,c5 yes
rule = '([c3,c6,c7,c8] matches change_list)' c3,c6,c7,c8 yes
rule = '([c3,c6] matches change_list)' c3,c6,c7 no
rule = '([c3,c6,c7] contains change_list)' c3,c6 yes
rule = '([c3,c6] contains change_list)' c3,c8 no
     
フィルタ 更新された列 列が挿入されたかどうか
filter = '(c2 is not changed)' c2 yes
filter = '(c2 is not changed)' c3 no
filter = '(c3 is changed and c4 is changed)' c1 yes
filter = '(c3 is changed and c4 is changed)' c3,c4 no
filter = '(c3 is changed and c4 is changed)' c1,c2,c3 yes
filter = '([c3,c6,c7] matches change_list)' c3,c6 yes
filter = '([c3,c6,c7] matches change_list)' c3,c6,c7 no
filter = '([c3,c6] contains change_list)' c3,c6 no
filter = '([c3,c6,c7] contains change_list)' c3,c8 yes

sourceカテゴリ

サポート対象のターゲット

Oracle変更履歴ターゲット

コマンドオプション

target c.SID [queue queuename]

{

set source sourceID |

reset source |

show source

}

用途

SHAREPLEX_SOURCE_IDメタデータ列のユーザ定義のソース識別子を設定します。set metadata sourceオプションを指定してtargetを使用し、この列を入力するようにPostを設定します。任意の英数字文字列を1つ指定します。

以下に、set sourceを使用して、複数のソースデータベースのデータを同じターゲットデータベースにレプリケートする設定をサポートするための方法を示します。このターゲットの設定により、各Postプロセスは、ターゲットデータベース内のデータを区別するために、ソースデータベースに応じて異なるソースIDでSHAREPLEX_SOURCE_ID列を更新します。この例では4つのPostプロセスを使用しています。

target c.target1 queue source718 set source east

target c.target1 queue source92 set source south

target c.target1 queue source101 set source west

target c.target1 queue source75 set source north

キュー「source718」のPostプロセスは、ストリーム内のテーブルへの挿入または更新のたびに、列SHAREPLEX_SOURCE_IDを値「east」で更新します。キュー「source92」のPostプロセスは、列SHAREPLEX_SOURCE_IDを値「south」で更新します。

SQLカテゴリ

サポート対象のターゲット

ファイルformat record=sql

コマンドオプション

target x.file [queue queuename]

{

set sql property=value |

reset sql [property] |

show sql

}

用途

formatrecord=sqlのときのSQL出力のプロパティを設定します。

プロパティ 入力値 デフォルト

add_rownum={yes | no}

行番号を含めるにはyesに、除外するにはnoに設定します。

yes

begin_transaction={yes | no}

開始トランザクションレコードを含めるにはyesに、除外するにはnoに設定します。

no

comment=character

コメントを示す文字

--

concatenate=character

文字列を連結する文字

||

end_transaction={yes | no}

終了トランザクションレコードを含めるにはyesに、除外するにはnoに設定します。

no

legacy={yes | no}

SharePlex 8.6で必要です。レガシーSQLの日付とタイムスタンプの形式を使用します。

MMDDYYYYHH24MISSおよびMMDDYYYYHH24MISS.FFFFFF(yes/no)

no

name_delimiter=character

SID、テーブル、オーナー、列名を区切る文字。この値は、PostがODBCドライバにSQL_DELIMITERの設定を問い合わせたときに返される値をオーバーライドします。

なし

record_terminator=character

SQLを終了する文字

;

target x.file set sql comment=#

trace capture

trace captureコマンドは、Captureによる処理とパフォーマンスの統計情報をトレースファイルに出力するために使用します。

Captureのトレースには以下が含まれます。

  • トレース自体の詳細
  • Captureが、さまざまなタスク全体とスレッドごとに費やした時間

用途

サポート対象のソース: Oracle
サポート対象のターゲット: すべて
認証レベル: オペレーター2
発行対象: ソースシステム
関連コマンド: trace readtrace post

構文

基本コマンド コマンドオプション リモートオプション
trace capture

[minutes]

[for datasource]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

構文の説明
コンポーネント 説明
minutes

トレースを実行する時間。デフォルトは15分です。

for datasource Captureのトレースを実行するデータソース。同じSharePlexインスタンスで複数のCaptureを実行する場合にのみ必要です。使用する場合は、minutesに従う必要があります。
リモートオプション

これらのオプションにより、リモートマシンにコマンドを発行したり、ログイン名、パスワード、ポート番号、またはそれらの組み合わせを含むコマンドをスクリプト化したりすることができます。

オプション 説明
on host

リモートシステム現在のsp_ctrlセッションが実行されているシステム以外でコマンドを実行します。リモートシステムのログイン認証情報の入力を求めるプロンプトが表示されます。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on SysA

on host:portnumber

リモートログインとポート番号を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on SysA:8304

on login/password@host

リモートログイン、パスワード、ホスト名を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例:sp_ctrl(sysB)>status on john/spot5489@SysA

on login/password@host:portnumber

リモートログイン、パスワード、ホスト名、ポート番号を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on john/spot5489@SysA:8304

出力

トレースが完了すると、プロセスは、変数データディレクトリのlogサブディレクトリにあるファイルにトレースデータを以下の形式で書き込みます。

process_id_trace_time

例:

orcl_ocap_trace_Sep30_15_24_2014

ここで、orclはデータソース、ocapはCaptureプロセスの名前です。

以下のコマンドは、データソースmyoraのトレースを1分間実行します。

trace capture 1 for myora

このコマンドは、以下のようなトレース出力を生成します。

 

trace post

trace postコマンドは、Postによる処理とパフォーマンスの統計情報をトレースファイルに出力するために使用します。

Postのトレースには以下が含まれます。

  • トレース自体の詳細
  • トランザクション活動に関する統計情報
  • 操作タイプごとの詳細な統計情報

用途

サポート対象のソース: Oracle
サポート対象のターゲット: すべて
認証レベル: オペレーター2
発行対象: ターゲットシステム
関連コマンド: trace capturetrace read

構文

基本コマンド コマンドオプション リモートオプション
trace post

[minutes]

[for datasource-datadest]

[queue queuename]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

構文の説明
コンポーネント 説明
minutes

トレースを実行する時間。デフォルトは15分です。

for datasource-datadest

ソースデータストアとターゲットデータストアで指定される特定のPostプロセスにトレースを限定します。

  • 同じSharePlexインスタンスで複数のPostプロセスを実行する場合異なるソースからのレプリケーション、または異なるターゲットデータベースに複数のPostプロセスを実行する場合に必要です。使用する場合は、minutesに従う必要があります。
  • datasourceo.SIDと表します。ここで、SIDはORACLE_SIDです。

  • datadestは、ターゲットによって以下のいずれかで表されます。

    o.ORACLE_SID

    r.database_name

    x.kafka

    x.jms

    x.file

queue queuename

指定された名前付きキューに関連付けられているPostプロセスにトレースを制約します。

リモートオプション

これらのオプションにより、リモートマシンにコマンドを発行したり、ログイン名、パスワード、ポート番号、またはそれらの組み合わせを含むコマンドをスクリプト化したりすることができます。

オプション 説明
on host

リモートシステム現在のsp_ctrlセッションが実行されているシステム以外でコマンドを実行します。リモートシステムのログイン認証情報の入力を求めるプロンプトが表示されます。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on SysA

on host:portnumber

リモートログインとポート番号を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on SysA:8304

on login/password@host

リモートログイン、パスワード、ホスト名を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例:sp_ctrl(sysB)>status on john/spot5489@SysA

on login/password@host:portnumber

リモートログイン、パスワード、ホスト名、ポート番号を指定する必要がある場合は、リモートシステムでコマンドを実行します。使用する場合は、コマンド構文の最後の構成要素でなければなりません。

例: sp_ctrl(sysB)>status on john/spot5489@SysA:8304

出力

トレースが完了すると、プロセスは、変数データディレクトリのlogサブディレクトリにあるファイルにトレースデータを以下の形式で書き込みます。

process_id_trace_time

例:

orcl_orcl2_opo_trace_Feb_5_17_24_2014

ここで、orclはソースデータソース、orcl2はターゲットデータソース、opoはPostプロセスの名前です。

以下のコマンドは、データソースmyoramyora2のトレースを1分間実行します。

trace post 1 for myora-myora2

このコマンドは、以下のようなトレース出力を生成します。

 

関連ドキュメント

The document was helpful.

評価を選択

I easily found the information I needed.

評価を選択