[DB2]トリガーテーブル情報取得手順【リアルタイムレプリケーションツールDBMoto】

正常にミラーリングが出来ないときに、トリガーテーブルの情報が有益な情報となる場合があります。

■DB2におけるトリガーテーブル

DB2(UDB)からDBMotoを使用してミラーリングレプリケーションを行う場合、DB2のトリガーテーブルを参照し、差分をターゲットに転送します。
正常にミラーリングが出来ないときに、トリガーテーブルの情報が有益な情報となる場合があります。

■トリガーテーブル情報について

一例としてDBMotoを使用した取得手順を掲載しますが、実際はお客様側のDB2へのアクセスでご利用いただいているツールで同義の内容を実施いただいた結果をファイルでご提供お願いします。

具体的には下記のテーブルの全件検索結果をファイルにてご提供お願いします。
※( )内は全件結果取得のSQLです。

1. _DBM__TRG_OBJS (select * from SchemaName.”_DBM__TRG_OBJS”)
2. _DBM__MASTERLOG (select * from SchemaName.”_DBM__MASTERLOG”)
3. _DBM__LOG_xx (select * from SchemaName.”_DBM__LOG_xx”)

#3のテーブル名の”xx”の部分はテーブルごとに連番が割り振られています。
どのテーブルが何番に割り振られているかは下記のように#1のテーブルを確認することで確認できます。

※#1″_DBM__TRG_OBJS”の例

上記の場合、テーブル名”TBL_TEST1″のTAGが”1″となっているので、
#3のテーブル名は”_DBM__LOG_1″となります。

■トリガーテーブル情報取得手順(DBMotoを使用した場合の例)

1. DBMoto Enterprise Managerを起動します。

2. ソース設定のスキーマ名を右クリックし、「Select Tables」を選択します。

3. トリガーテーブルにチェックを入れます。

4. それぞれのテーブル名を右クリックし、「Open Table」を選択します。

5. 全件検索結果が表示されるので、Ctrl + A ですべてを選択し、Ctrl + C でコピーし、テキストファイルなどに貼り付けます。

   ↓↓↓

■参考

※#2″_DBM__MASTERLOG”の例

TID (トランザクションID)
SNAME (スキーマ名)
TNAME (テーブル名)
TTS (タイムスタンプ)
TUSER (テーブル更新ユーザ名)

※#3″_DBM__LOG_xx”の例

__TID (トランザクションID)
__OP (I…Insert、B…UpdateBefore、A…UpdateAfter、D…Delete)
NO, NAME, COMMENT (実際のテーブルの値)

——————————————————————-
(注)上記の手順はDB2 UBDを例にしていますが、他のトリガーテーブルを利用するデータベース(Informix, Sybase, 一部MySQL)にも有効です。

コメントする -->

DBMotoを使用してデータベース変更用の監査ログの作成方法【リアルタイムレプリケーションツールDBMoto】

DBMotoを使用してデータベース変更用の監査ログの作成方法について:
Topic ID:KBFAQ1647 (11/18/09)

DBMotoを使用してデータベースへの変更のログ・テーブルを メンテナンスすることは可能です。ソース・テーブルはユーザが監査したいテーブルで、ターゲット・テーブルは起こったすべての変更のログです。レプリケーションはソースとターゲット間で実行されています。しかし変更に関する外部ログをソース・テーブルに保持することを唯一の目的をします。

ターゲット(ログ)テーブルはソース・テーブルのすべてのフィールド、プラス、タイムスタンプとオペレーション(インサート、アップデート、デリート)で起こったタイプの代表される値の追加フィールドを含みます。

● もしレコードがソース・テーブルに追加されると、ターゲット(ログ)テーブルにレコードがインサートされ、そしてタイムスタンプ付きでテーブルのフィールドが設定され、動作のタイプ(インサート)が実行されます。

● もしレコードがソース・テーブルにアップデートされると、ターゲット(ログ)テーブルにレコードがインサートされ、そしてタイムスタンプ付きでテーブルのフィールドが設定され、動作のタイプ(アップデート)が実行されます。

● もしレコードがソース・テーブルに削除されると、ターゲット(ログ)テーブルにレコードがインサートされ、そしてタイムスタンプ付きでテーブルのフィールドが設定され、動作のタイプ(デリート)が実行されます。

下記のサンプルはユーザのソース・テーブルがIBM DB2 for iに、ターゲット(ログ)テーブルがMicrosoft SQL Server 2005に定義されています。レプリケーション・タイプはミラーリングで、テーブルはMicrosoft SQL Server 2005に定義されています。

◎IBM DB2 for i (ソーステーブル)

Create table Testlib.CUSTOMERS
(CustomerID integer,
Name varchar(20),
Address varchar(30),
City varchar(10),
State varchar(5),
Zip integer)

◎Microsoft SQL server 2005 (ターゲットテーブル)
Create table “dbmoto6″.”dbo”.CustLog
(
ID integer identity,
CustomerID int,
NAME varchar(20) NULL ,
ADDRESS varchar(30) NULL ,
CITY varchar(10) NULL ,
STATE varchar(5) NULL ,
ZIP int NULL ,
DateTimeStamp datetime,
Action char
)

■設定方法の詳細は >>> 次のサイトを参照ください。

コメントする -->

SQL Server, IBM DB2 for iで使用するポート番号【リアルタイムレプリケーションツールDBMoto】

Q:DBMotoを稼働させる為にファイヤーウォールのポートをオープンさせる必要があります。DBMotoはどのポートとプロトコールを使用しますか?

A: DBMotoはTCP/IPプロトコールを使用し、Enterprise Manager と the Data Replicator間のコミュニケーション用にTCP/IP経由でポート58360をオープンします。追加のポート番号はレプリケーションに関連するデータベース・タイプに依存します。下記はMicrosoft SQL Server と IBM DB2 for i (iSeries/AS400)用に使用されるポート番号です。

IBM DB2 for i (iSeries/AS400): 8471
SQL Server 2000, 2005:デフォルトは1433です。しかし下記のようにデータベース管理者に確認の上、必要に応じて変更可能です。

SQL Serverのポート番号確認:

SQL Server Configuration Managerで
1. SQL Server 2005 Network Configuration>Protocols for MSSQLSERVERを選択
2. TCP/IPノードを右クリックし、プロパティを選択
3. TCP/IPプロパティ・タブで、IP アドレス・タブを選択
4. IP ALL セクションで, TCP Dynamic Portsを確認するか、 TCP Port fields for the value.

------------------------
KBFAQ 1642 (1/7/09)

コメントする -->

AS/400のプロセッサー・グループの確認方法【リアルタイムレプリケーションツールDBMoto】

IBM System i, iSeries or AS/400のプロセッサー・グループの確認方法は:

1)WRKLICINF CLコマンドを使用します。

2)プロセッサー・グループを表示したWRKLICINF サンプル出力:

AS/400のプロセッサー・グループの確認方法【リアルタイムレプリケーションツールDBMoto】 はコメントを受け付けていません -->

AS/400のジャーナルレシーバーはどこまで削除して問題ないか【リアルタイムレプリケーションツールDBMoto】

ジャーナルレシーバーは、連番で増え続けます。
ジャーナルレシーバは、DBMoto が現在接続しているもの
より前のものであれば削除して問題ありません。 

例えば、ジャーナルレシーバが

DBMR0001
DBMR0002
DBMR0003
DBMR0004

となっていて、DBMoto が DBMR0004 に接続している状態の場合、
DBMR0001, DBMR0002, DBMR0003 を削除することが出来ます。

コメントする -->

ミラーリング時にWarningメッセージが表示される場合【リアルタイムレプリケーションツールDBMoto】

ターゲットテーブルがSQLServerで、ミラーリング処理を行うと下記のWarning
メッセージがログに出力されるケースが存在します。

An UPDATE transaction has updated 2 records. Verify the key setting for the target table.

このWarningは「ターゲットテーブルに重複キーが複数存在するので、複数レコード
を更新しました。」という意味です。

原因は下記のケースが考えられます。

1. ターゲットテーブルに対してDBMotoからキーを設定しており、かつ重複キーが
 存在しレコードを更新している。

 ▼対処法:
 ターゲットテーブルでキーが重複しないようにする。

2. ターゲットテーブルに対してSQLServer側でトリガーを設定しており、
 そのトリガーから同構造他テーブルに対しても更新処理するようになっている。

 ▼対処法
 トリガー内で「SET NOCOUNT ON」をSQLクエリの前に記述する。

 参考サイト:http://msdn.microsoft.com/ja-jp/library/aa259204(SQL.80).aspx

by S.F

コメントする -->

log上のwarningメッセージのdisable方法【リアルタイムレプリケーションツールDBMoto】

下記の方法でDBMotoログ上のWarningメッセージのみをログに書き込むことを止めることができます。

1) metadataを右クリック -> Data Replicator Option

2) Logタブから「Settings」をプレス

3) 「Write a warning on multiple updates /deteles」オプションをアンチェック

コメントする -->

ライブデモ【リアルタイムレプリケーションツールDBMoto】

DBMoto ライブデモ:5パートから構成されています。

● DBMoto ライブデモ:ソースの設定:

● DBMoto ライブデモ:ターゲットの設定

● DBMoto ライブデモ:リフレッシュレプリケーション

● DBMoto ライブデモ:ミラーリングレプリケーション Part1

● DBMoto ライブデモ:ミラーリングレプリケーション Part2

コメントする -->

SQLServerでのトリガー設定方法

トリガーとは、テーブルの更新を契機に何らかの処理を行うための機能です。

例えば、テーブルの更新時に別のテーブルを更新したり、
更新内容が不適切な場合に強制的にロールバックを行う用途にも、
トリガーを使用できます。

SQLServerでは下記の手順でトリガーを設定することができます。

※画面はSQL Server 2005 Express Editionのものですが、他バージョン、Edition
でも操作は同じです。

1. Microsoft SQL Server Management Studio を起動し、接続します。

2. オブジェクトエクスプローラーからトリガーを設定したいテーブルを選択し、
トリガーを右クリックし「新しいトリガ」を選択します。

3. クエリエディタが表示され、ひな形が自動的に作成されますので、ひな形を
ベースにトリガーを記述します。

コメントする -->

シンクロナイゼーションで双方の同じレコードを修正した場合【リアルタイムレプリケーションツールDBMoto】

DBMotoのシンクロナイゼイションはリアルタイムで双方向のデータ複製を
行いますが、もし双方の同じレコードを変更した場合は、デフォルトでは
SourceデータベースがTargetデータベースに複製されます。

これはDBMotoの設定で複製元をSourceからTargetにも変更できます。

コメントする -->

Oracleの設定について【リアルタイムレプリケーションツールDBMoto】

○OracleをソースまたはターゲットDBと使用するときには「Oracle client」をDBMotoがインストールされている同じシステムにインストールする必要があります。

「Oracle client」はOracleのサイトからダウンロード可能です。

DBMotoをOracleがインストールされた同じPCサーバにインストールし、そのOracleに対してレプリケーションを行う時にはOracle clientは必要ありません。

○DBMotoユーザはソースとしてOracleを使用する場合にはOracle LogMiner をリードできる権限が必要になります。

詳細はマニュアルの「Installing DBMoto」を」参照ください。

コメントする -->

AS/400 (iSeries)でのジャーナル設定について【リアルタイムレプリケーションツールDBMoto】

DBMotoでは1ファイルに接続できるジャーナルは1つだけということですが、レシーバーを複数のツール(ミラーリングツールなど)で共有できるのでしょうか?

例えば下記の図は業務アプリケーションでファイルを更新した場合の記載です。

図の中央にあるジャーナルは複数のファイルFile AとBに接続され、ファイルの更新をモニタリングしています。逆にファイルから見ると接続できるジャーナルは1つだけです。

ジャーナル自体は処理を行うだけで、ファイルの更新情報はジャーナルに接続されたレシーバーに蓄積されていきます。レシーバーがいっぱいになると、システムが自動的に新しいレシーバーを作り、ジャーナルと接続します。

Q1. アプリケーションB (ORION)では図の赤矢印の処理を行っておりますが、DB Motoは具体的にどのようにジャーナル、レシーバーを読んで処理を行っているのでしょうか?

A: DBMotoは直接にジャーナル/レシーバーを読みに行くことはありません。
その代わりAS400 DSPJRN コマンドをコールしてジャーナルを読みに行きます。
DBMotoはジャーナル、レシーバーが変更があったときを心配する必要がありません。Orionの場合はAS400をバイパス(許可を得ずに実行する)し、直接ジャーナル、レシーバーを読むのでその心配があります。

Q2 レシーバー自体を読んで処理するツールがDB Moto以外にあることをDB Motoが許可するか? (DB Moto以外に赤矢印の処理を行うツールがあってもよいか?)

A:DBMotoはDBMoto以外の他のツールがジャーナル自体をリード/処理することを
許可します。それはDBMotoはジャーナルをロックしません。

Q3. 以前の回答で1ファイル1ジャーナルとの回答がありましたが、図のように1ジャーナルに複数ファイルを接続することをDB Motoは許可するか?

A:DBMotoはジャーナル/レシーバーをロックしません。
DBMotoは複数ファイルが1ジャーナルに接続することを許可します。

DBMoto利用時のAS/400(Systemi)での設定はこちらの資料を参考にしてください。

コメントする -->

Non Criticalデータの除外について【リアルタイムレプリケーションツールDBMoto】

DBMotoのレプリケーション時、値が常に同じカラムや、
レプリケーションをする必要のないカラム等を除外する事ができます。
これにより、レプリケーションの処理速度の軽減が見込めます。

1)「DBMoto Enterprise Manager」->「Replication」より、 
定義済みのレプリケーションを右クリック -> 「Replication Properties」を
クリックします。

2)「Mapping」ボタンを押下します。

3)「Fields Mapping」ウィンドウで、レプリケーション項目から除外するカラムを選択し、
右クリック ->「Use Non Critical」をクリックします。

4)「Use Non Critical」を指定したカラムがオレンジ色に変わります。
 この指定がされたカラム(下図ではAITEMNAME)に対して、データの変更が
 あった場合、そのカラムのレプリケーションは実行しません。

「Use Non Critical」で指定した、他のカラムの値に変更があった場合は、
「Use Non Critical」のデータを含め、値が変更されます。

コメントする -->

Log と .his ファイルの格納フォルダを指定するには【リアルタイムレプリケーションツールDBMoto】

【質問】DBMoto Log と .his ファイルの格納フォルダをデフォルト以外に指定可能にするにはどうしたらいいでしょうか。

———————————————————————
【回答】
DBMotoのインストールディレクトリ内に「DBMoto.config」というファイルがあります。
こちらをテキストファイル等から開き、タグ内に
DBMoto Logと.hisファイルの格納場所を指定できます。
尚、その際は下記の2点にご注意下さい。

・「DBMoto.config」の設定時、「DBReplicator.exe」が起動中の場合は「DBReplicator.exe」を再起動しなければ設定した値が有効になりませんのでご注意下さい。

・DBMoto Logと.hisファイルは常に同じ場所に保存されます。
 別々の場所指定はできませんのでご注意下さい。

コメントする -->

Drag & Drop 活用法【リアルタイムレプリケーションツールDBMoto】

既存の接続先やテーブルは、Drag & Dropでコピーする事ができます。
例えば、ソース接続の定義を下図の様にコピーできます。

1. 「Oracle」の接続先の定義を「Targets」にDrag & Dropします。

2. ターゲットにコピーするかの確認です。「はい(Y)」をクリックします。

3. 「Oracle」の接続先の定義がターゲット側にコピーされます。

テーブルのDrag & Dropから「Create Taget Table Wizard」を呼び出す事もできます。

コメントする -->