Chat now with support
Chat with Support

SharePlex 8.6.6 - プレインストールチェックリスト

SQL または XML ファイルのターゲットへの複製の設定

概要

SharePlex は、複製した Oracle データを SQL または XML 形式のファイルに post できます。このデータは、ソースで発生した順番で連続した一連の操作として書き込まれます。その後、ターゲットデータベースに順番に post することも、外部のプロセスやプログラムによって使用することもできます。

この章では、このターゲットに対する複製をサポートする、一連の設定プロセスを説明します。

注: SharePlex を使用して SQL または XML ファイルに複製する場合にサポートされているプラットフォーム、データ型、および操作については、『SharePlex リリースノート』を参照してください。

ソースでの SharePlex の設定

ソースで、キャプチャおよびルーティング情報を指定する SharePlex 設定ファイルを作成します。設定ファイル内で必要とされる構造は複製方法に応じて異なりますが、ここでは、データを SQL または XML ファイルにルーティングする場合に必要な構文を示します。

Datasource:o.SID
src_owner.table !file[:tgt_owner.table] host

ここで、

  • SID は、ソース Oracle データベースの Oracle SID です。
  • src_owner.table は、ソーステーブルの所有者名およびテーブル名です。

  • !file は、Post にファイルへの書き込みを指示する必須キーワードです。
  • tgt_owner.table はオプションであり、ターゲットテーブルの所有者と名前を指定します。使用するのは、いずれかのコンポーネントがソーステーブルのコンポーネントと異なる場合です。
  • host はターゲットシステムの名前です。

注: 詳細については、次を参照: 設定ファイルの作成

ソース設定の例

次の例では、スキーマ PROD 内の parts テーブルを Oracle インスタンス ora112 からターゲットシステム sysprod 上のファイルに複製しています。

Datasource:o.ora112

PROD.parts !file sysprod

ターゲットでの SharePlex の設定

データを XML 形式で出力するには

デフォルトでは、SharePlex が XML 形式でファイルに書き込むデータをフォーマット処理します。出力ファイルのプロパティを変更する必要がない限り、ユーザーがターゲットのセットアップを実行する必要はありません(「ターゲット設定の表示および変更」を参照)。

データを SQL 形式で出力するには

  1. sp_cop を開始します。
  2. sp_ctrl を起動します。
  3. 次の必須の target コマンドを発行して、SQL のレコードを出力します。注:すべて小文字を使用してください。 

    target x.file [queue queuename] set format record=sql

    target x.file [queuequeuename] set sql legacy=yes

    ここで、 queue queuename は、指定したキューと関連付けられている SharePlex Post プロセスに対するコマンドのアクションを制限します。

    これらの設定と、ユーザーが設定できるその他のオプションプロパティの説明については、「ターゲット設定の表示および変更」を参照してください。

ターゲット設定の表示および変更

ファイルへの出力について、現在のプロパティ設定を表示するには、次のコマンドを使用します。

target x.file show

設定を変更するには、次の target コマンドを使用します。

target x.file [queue queuename] set [category] property=value

target

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 が変更レコードを受信するとテーブルごとに 1 回、スキーマレコードが再び書き込まれます。

スキーマレコードテンプレート

<?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

キーフラグ(true、false)

 

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 * Oracle トランザクション ID(System Change Number(SCN)から取得)
  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>

ファイルストレージとエージング

Post は一連のファイルに書き込みます。アクティブな作業ファイルには、current_ というラベルが先頭に付加され、変数データディレクトリの opx/current サブディレクトリに保存されます。

出力形式 現在のファイルの名前
SQL

current_legacy.sql

XML

current_prodsys.XML

   

重要: current_ ファイルを開いたり、編集したりしないでください。

Post は、max_recordsmax_size、および max_time パラメータを使用して、新しいアクティブファイルを開始するポイントを決定します。この切り替えが起こると、Post は処理したデータを変数データディレクトリの opx サブディレクトリ内のシーケンスファイルに移動します。このファイル名には、Post キュー名、日時、および増分 ID が含まれています。

SQL ファイル:

/installed/vardir> ls -1 opx

0000000000_20140305130858_legacy.sql

0000000001_20140305131130_legacy.sql

0000000002_20140305131212_legacy.sql

0000000003_20140305133835_legacy.sql

0000000004_20140305134028_legacy.sql

XML ファイル:

/installed/vardir> ls -1 opx

0000000000_20140305130858_prodsys.XML

0000000001_20140305131130_prodsys.XML

0000000002_20140305131212_prodsys.XML

0000000003_20140305133835_prodsys.XML

0000000004_20140305134028_prodsys.XML

ファイル切り替えを強制的に適用するには

Post を停止しなければ、current ファイルは表示することも使用することもできません。current ファイル内のデータにアクセスするには、target コマンドを switch オプション付きで使用して、データをシーケンスファイルに移動します。これで、使用も表示も可能になります。このコマンドを発行した後に、Post が新しいレコードを処理してから、切り替えが起こります。

target x.file [queue queuename] switch

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating