各DBの権限とmetadataについて【リアルタイムレプリケーションツールDBMoto】

Q1:ソース、ターゲットに指定するDBユーザーに必要な権限は何でしょうか。
 
 ・DB2/AS400
 ・Oracle
 ・MySQL

について教えてください。

A1
▼片方向のミラーリングの場合

ソースの場合は、参照するログへの読み書きの権限、
ターゲットの場合は、対象テーブルへの読み書きの権限
が必要となります。

○DB2/AS400
ソース:ジャーナルの読み書き権限、対象テーブルの読み権限
ターゲット:対象テーブルの読み書き権限

【補足】
CRTUSRPRFを使用してのユーザーを作成する際には
ユーザークラスに”*USER”、援助レベルに”*SYSVAL”
がデフォルトで設定されますので、こちらをそのまま使用してください。

○Oracle
ソース:Redoログの読み書き権限、対象テーブルの読み権限
ターゲット:対象テーブルの読み書き権限

○MySQL
ソース:トリガー又はMySQLログの読み書き権限、対象テーブルの読み権限
ターゲット:対象テーブルの読み書き権限

【補足1】
MySQLではミラーリングの際にトリガーテーブルを作成するか、もしくはMySQL
のバージョンが5.1.5以上の場合はMySQLのログを使用するかの選択が可能です。

【補足2】
MySQLに接続する場合は、MySQLのサーバにリモートアクセスするための権限が
別途必要です。(rootユーザはデフォルトでlocal権限しかありません)

▼シンクロナイゼーション(双方向のミラーリング)の場合

「片方向のミラーリング」のソース・ターゲットの権限が両方必要となります。

○DB2/AS400、Oracle、MySQL
ソース:「片方向のミラーリング」のソース&ターゲットで必要な権限
ターゲット:「片方向のミラーリング」のソース&ターゲットで必要な権限

また、シンクロナイゼーションの場合は、DBMotoのみで使用する専用のユーザ
を作成する必要がある点にご注意ください。

ソースやターゲットの設定で使用するユーザでデータの更新をかけても、
DBMotoはレプリケーションしません。

Q2:metadataで指定するDataProvider、ConnectionPropertiesは、
 何を意味するのでしょうか。
 ソース、ターゲットを作成する際に指定する同項目との依存関係はあるのでしょう
か。

A2: metadataを新規作成する画面では、metadataテーブルの作成先の
DataProvider、ConnectionProperties を意味します。

デフォルトではSQLServerCE(DBMotoインストールディレクトリにあります)
となっており、もちろん他のDBにも作成可能です。(AS400は不可)

ソース・ターゲットの同項目とは別物です。

コメントする -->

スケジュール機能設定例【リアルタイムレプリケーションツールDBMoto】

スケジュール機能は大きく分けて「リフレッシュスケジュール」と「ミラーリングスケジュール」があります。

■リフレッシュスケジュール
リフレッシュを行いたい時間を設定する。

■ミラーリングスケジュール
ミラーリングを停止させたい時間を設定する。

スケジュール機能の設定手順については、スケジュール機能の使い方の記事をご覧ください。

▼リフレッシュスケジュールの例

1時間毎にリフレッシュ

毎日3:00にリフレッシュ

毎週土曜日曜の0:00にリフレッシュ

毎月1日の12:00にリフレッシュ

毎月第1日曜日の12:00にリフレッシュ

毎年1月1日の0:00にリフレッシュ

毎年1月の第1水曜日にリフレッシュ

※上記を組み合わせて複数指定も可能

▼ミラーリングスケジュールの例

毎日18:00から3時間(~21:00まで)ミラーリングを停止

毎週土曜日曜の3:00から3時間(~6:00まで)と15:00から3時間(~18:00まで)ミラーリングを停止

毎月25日の0:00から6時間(~6:00まで)ミラーリングを停止

毎月第4月曜日の0:00から6時間(~6:00まで)ミラーリングを停止

毎年12月31日の0:00から23時間59分59秒(~23:59:59)ミラーリングを停止

毎年1月の第1日曜日の0:00から12時間(~12:00)ミラーリングを停止

※上記を組み合わせて複数指定も可能

コメントする -->

シンクロナイゼーションにおけるコンフリクト回避について【リアルタイムレプリケーションツールDBMoto】

■2015/05/28記事改訂

DBMoto でシンクロナイゼーション(Synchronization)か、双方向のミラーリングを設定しているとき、レプリケーションに関連する両テーブルに変更があり、その変更はそれぞれのテーブルで違っていると仮定してください。

シンクロナイゼーションのゴールは、テーブルAからテーブルBへの変更と、テーブルBからテーブルAへの変更を適応することで、互いに両テーブルを最新に保つことです。

レプリケーション・タイプにシンクロナイゼーションを選択した時は、レプリケーションに関連する両サイドのテーブルの同じレコードで同時に変更が起こる場合にどのように処理するか、設定する必要があります。

例えば同一のレプリケーションインターバル内で、ソースのSQL Server の製品レコードの価格フィールドがアップデートされ、またターゲットのDB2/400で対応するレコードの同じフィールドもアップデートされていた時に、どちらのアップデートを優先するかを決める必要があります。

Replication かMultiple Replications ウィザードを使用してユーザのレプリケーションを定義した後、レプリケーションプロパティ(Replication Properties)ダイアログで優先(Preferences) タブに移行し、どのようにコンフリクトを処理するかを指定します。:

  • SourceServerWins:デフォルト設定。ソース接続に指定されたテーブルに対する変更が、ターゲット接続に指定されたテーブルにも適応されます。ターゲット接続テーブル上の変更はすべて書き換えられます。
  • TargetServerWins:ターゲット接続に指定されたテーブルに対する変更が、ソース接続で定義されたテーブルにも適応されます。ソース接続テーブル上の変更はすべて書き換えられます。
  • FirstComeWins:ソースとターゲットとして指定されたテーブルの2 つの変更のタイムスタンプが準備され、早い方の変更が両テーブルに適応されます。
  • LastComeWins:ソースとターゲットとして指定されたテーブルの2 つの変更のタイムスタンプが準備され、遅い方の変更が両テーブルに適応されます。
  • Use Script:このオプションはReplication_onConflict ファンクションに記述することでイベントを生成することができます。スクリプト・エディタは「一般」のスクリプトボタンからアクセスできます。VB .NETまたはC# を使用してユーザが希望する両テーブルからの値を処理するためのファンクションを書くことができます。

※設定画面
conflict_resolver_option_v8

コメントする -->

レプリケーション設定手順(各DB別)【リアルタイムレプリケーションツールDBMoto】

DBMotoでレプリケーションを設定する方法です。

AS400とOracleを使用した方法を記載しますが、
基本的な手順はどのDBでもほとんど同じです。

また、あらかじめソースとターゲットの設定が済んでいるのが前提となります。

■リフレッシュの場合
ソース、ターゲットDBのログやトリガーからのトランザクションIDの設定は不要です。

■ミラーリングの場合
ソースDBのログやトリガーからのトランザクションIDの設定が必要です。
ターゲットDBのログやトリガーからのトランザクションIDの設定は不要です。

■シンクロナイゼーションの場合
ソース、ターゲット共にログやトリガーからのトランザクションIDの設定が必要です。

▼手順

Replicationsフォルダを右クリックし、「Create New Replication」を選択します。

「Next」を押下します。

◇リフレッシュの場合
Replication Nameに任意の名前を設定し、Replication Modeから「Refresh」を選択します。

◇ミラーリングの場合
Replication Nameに任意の名前を設定し、Replication Modeから「Continuous Mirroring」を選択します。

◇シンクロナイゼーションの場合
Replication Nameに任意の名前を設定し、Replication Modeから「Continuous Mirroring」を選択します。

対象のソース設定とテーブルを選択します。

◇DB2/AS400の場合
「Read」を押下すると、トランザクションIDとトランザクションタイムが設定されます。
また、レシーバが自動生成されるように設定されている場合はここでレシーバも作成されます。
なお、Read Interval値はミラーリングの周期です。
※ミラーリング及びシンクロナイゼーション時のみの設定です。

◇Oracleの場合
「Read」を押下すると、トランザクションIDとトランザクションタイムが設定されます。
※ミラーリング及びシンクロナイゼーション時のみの設定です。

◇DB2/UDBの場合
「Read」を押下すると、トランザクションIDとトランザクションタイムが設定されます。
※ミラーリング及びシンクロナイゼーション時のみの設定です。

◇SQLServer(ディストリビューターを使用)の場合
「Read」を押下すると、トランザクションIDとトランザクションタイムが設定されます。
※ミラーリング及びシンクロナイゼーション時のみの設定です。

◇SQLServer(トリガーを使用)の場合
「Read」を押下すると、トランザクションIDとトランザクションタイムが設定されます。
※ミラーリング及びシンクロナイゼーション時のみの設定です。

◇MySQL(トリガーを使用)の場合
「Read」を押下すると、トランザクションIDとトランザクションタイムが設定されます。
※ミラーリング及びシンクロナイゼーション時のみの設定です。

対象のターゲット設定とテーブルを選択します。

ソースの時と同様に「Read」を押下すると、トランザクションIDとトランザクションタイムが設定されます。
画面はOracleの例です。
※シンクロナイゼーション時のみの設定です。

フィールドのマッピングを確認します。変更も可能です。

スケジュールの設定が可能です。スケジュールが不要であればそのまま「Next」を押下します。

Finishを押下します。

Replicationsフォルダ直下に設定したレプリケーション名が表示されれば設定完了です。

その他詳細手順については、弊社ドキュメントサイトの「03_【DBMoto】レプリケーション設定・実行手順.pdf」の「2.レプリケーション設定手順」をご確認ください。

コメントする -->

ソース・ターゲットの設定手順(各DB別)【リアルタイムレプリケーションツールDBMoto】

DBMotoでソース(複製元)・ターゲット(複製先)を設定する方法です。

ソース・ターゲットでの設定の違いはほとんどありません。
レプリケーションのモードによって、DBのログやトリガーを設定する箇所の手順が変わります。

■リフレッシュの場合
ソース、ターゲット共にログやトリガーを使用しません。

■ミラーリングの場合
ソースはログやトリガーを使用します。
ターゲットはログやトリガーを使用しません。

■シンクロナイゼーションの場合
ソース、ターゲット共にログやトリガーを使用します。

▼手順

Sources又はTargetsフォルダを右クリックし、「Add New Connection」を選択します。

「Next」を押下します。

Nameに任意の名前を設定し、Databaseから該当するDBを選択します。
※画面はDB2/AS400の例です。

Data Source(IPアドレス)、User ID(ユーザID)、Password(パスワード)を設定します。
※画面はDB2/AS400の例です。

◇DB2/AS400の場合:
「Use Transactional Replication」にチェックを入れ、SAVEファイルの配置を行います。
※ミラーリング時のソース、及びシンクロナイゼーション時のソースとターゲットでチェック必須です。
※リフレッシュ時のソースとターゲット、及びミラーリング時のターゲットではチェック不要です。

◇Oracleの場合:
「Use Transactional Replication」にチェックを入れ、Redoログの設定を行います。
※ミラーリング時のソース、及びシンクロナイゼーション時のソースとターゲットでチェック必須です。
※リフレッシュ時のソースとターゲット、及びミラーリング時のターゲットではチェック不要です。

◇DB2/UDBの場合:
「Use Transactional Replication」にチェックを入れ、トリガーの設定を行います。
※ミラーリング時のソース、及びシンクロナイゼーション時のソースとターゲットでチェック必須です。
※リフレッシュ時のソースとターゲット、及びミラーリング時のターゲットではチェック不要です。

◇SQLServer(ディストリビューターを使用)の場合:
「Use Transactional Replication」にチェックを入れ、ディストリビューターログの設定を行います。
※ミラーリング時のソース、及びシンクロナイゼーション時のソースとターゲットでチェック必須です。
※リフレッシュ時のソースとターゲット、及びミラーリング時のターゲットではチェック不要です。

◇SQLServer(トリガーを使用)の場合:
「Use Transactional Replication」にチェックを入れ、トリガーの設定を行います。
※ミラーリング時のソース、及びシンクロナイゼーション時のソースとターゲットでチェック必須です。
※リフレッシュ時のソースとターゲット、及びミラーリング時のターゲットではチェック不要です。

◇MySQL(トリガーを使用)の場合:
「Use Transactional Replication」にチェックを入れ、トリガーの設定を行います。
※ミラーリング時のソース、及びシンクロナイゼーション時のソースとターゲットでチェック必須です。
※リフレッシュ時のソースとターゲット、及びミラーリング時のターゲットではチェック不要です。

対象のテーブルを選択します。
※画面はDB2/AS400の例です。

Finishを押下します。
※画面はDB2/AS400の例です。

Sources又はTargetsフォルダ直下に設定したテーブル名が表示されれば設定完了です。
※画面はDB2/AS400の例です。

その他詳細手順については、弊社ドキュメントサイトの「02_【DBMoto】ソース・ターゲット設定手順.pdf」をご確認ください。

コメントする -->

スケジュール機能の使い方【リアルタイムレプリケーションツールDBMoto】

スケジュール機能を使うことにより、指定の時間にリフレッシュやミラーリングを行うようスケジューリングすることが可能です。

具体的には…

・毎日午前0時にリフレッシュしたい
・毎月1回はリフレッシュしたい
・ミラーリングは昼間のみ行いたい(夜は行わない)
・ミラーリングは平日のみ行いたい(土日は行わない)

といったことが可能となります。

■スケジュール機能の起動

1. 対象のレプリケーション名を右クリックし、プロパティを選択します。

2. 左ペインよりスケジュールを選択します。

 

■リフレッシュスケジュール設定方法

指定の時間にリフレッシュを行うことができます。

1. リフレッシュスケジュールタブを選択し、繰り返し実行にチェックを入れ、追加を押下します。

2. リフレッシュするスケジュールを設定します。下記画面の場合、毎週日曜日の午前0時にリフレッシュするスケジュールとなります。設定完了後、OKを押下します。

3. 手順2で設定したスケジュールが登録されていることを確認し、OKを押下します。

 

■ミラーリングスケジュール設定方法

指定の時間にミラーリングを停止ことができます。

1. ミラーリングスケジュールタブを選択し、除外設定にチェックを入れ、追加を押下します。

2. ミラーリングするスケジュールを設定します。下記画面の場合、毎日18時から3時間(21時まで)ミラーリングを停止するスケジュールとなります。設定完了後、OKを押下します。

3. 手順2で設定したスケジュールが登録されていることを確認し、OKを押下します。

注意点として、0:00を超える停止スケジュール(23:00~9:00など)を指定したい場合、
単独の停止スケジュールではエラーメッセージが出力され設定が行えません。



 

 

 

 

 

 

 

 

 

 

そのような場合には、0:00まで停止するスケジュールを作成した後、
改めて0:00以降の停止スケジュールを作成し、分けて構成する必要があります。





コメントする -->

SQLServerでのDistributorを使用したミラーリングについて【リアルタイムレプリケーションツールDBMoto】

DBMotoにおいて、SQLServerをソース(複製元)データベースとしてミラーリング・レプリケーションを行う場合、SQLServerのDistributor又はトリガーのどちらかを使用します。

Distributorを使用する場合、あらかじめ下記のように「SQLServerレプリケーション」をインストールしておく必要があります。

[拡大表示]

ちなみにSQLServerのExpress版ではDistributorを使用できません。
Express版ではトリガーを使用することになります。

● SQL Serverでのdistributorのマニュアル設定方法についての詳細はマイクロソフトウェア社のサイトを確認ください。

今後、SQLServer、DB2/AS400、Oracle、DB2/UDB、MySQLなどの主要DBからのミラーリング設定手順について、各DBごとにこのブログで紹介いたします。

タグ:

保護中: エラー発生時でのメール送信機能【リアルタイムレプリケーションツールDBMoto】

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

コメントを読むにはパスワードを入力してください。 -->

Oracle/MySQL .NET Data Provider接続【リアルタイムレプリケーションツールDBMoto】

DBMotoからOracleやMySQLに接続する場合、
別途.NETドライバをインストールしておく必要があります。

■Oracle .NET Data Provider接続

DBMotoからOracleに接続する際は、Oracle .NET Data Provider
(Oracle.DataAccess.dll)が必要となります。

ODACまたはOracleクライアントは下記サイトよりダウンロード可能です。
http://www.oracle.com/technology/global/jp/software/tech/windows/odpnet/index.html
http://www.oracle.com/technology/global/jp/software/products/database/index.html

Oracleクライアント9.2以降であれば .NET Data Provider は存在しますが、
それより前のバージョンではサポートされていません。

その場合、Oracle OLEDB provider を使用して接続可能です。

デフォルトでは .NET Data Provider しか選べない仕様なので、
OLEDB provider を使用する場合は、DBMoto Enterprise Manager の
Tools → Options を開き、”Use only default provider”のチェックを外して
ください。

サンプル・パス:
C:oracle10_2clientodp.netbin2.xOracle.DataAccess.dll

■MySQL .NET Data Provider接続

DBMotoからMySQLに接続する際は、MySQL Connector/Netが必要となります。
MySQL Connector/Netは下記サイトよりダウンロード可能です。
http://dev.mysql.com/downloads/connector/net/

コメントする -->

Oracleに接続する際のOracleクライアントの設定について【リアルタイムレプリケーションツールDBMoto】

DBMotoをインストールしているPCからOracleのインストールしているPCに接続する際には
OracleクライアントをDBMotoのインストールしているPCにインストール、設定を行う必要があります。

下記にOracleクライアントのインストール、設定の際の注意点を記載します。
※今回はOracleクライアント のVersion10.2を使用しています。

【インストール時の設定について】

①インストール・タイプは「管理者」を選択します。

※画面サンプル(画像をクリックすると拡大表示されます。)

【インストール後の設定について】

①スタート→Oracle-OraClient10g_home1→コンフィグレーションおよび移行ツール
→Net ConfigurationAssistant を選択します。

②ローカル・ネット・サービス名構成を選択します。
※画面サンプル(画像をクリックすると拡大表示されます。)

③追加をクリックします。

※画面サンプル(画像をクリックすると拡大表示されます。)

④サービス名を入力します。

※画面サンプル(画像をクリックすると拡大表示されます。)

⑤ネットワーク・プロトコルを選択します。

※画面サンプル(画像をクリックすると拡大表示されます。)

⑥OracleをインストールしているPCのIPアドレスを入力します。

※画面サンプル(画像をクリックすると拡大表示されます。)

⑦接続テストを行い動作確認を行います。

※画面サンプル(画像をクリックすると拡大表示されます。)

上記の設定を行うことで「C:oracleproduct10.2.0client_1NETWORKADMIN」
のフォルダにtnsnames.oraが作成されます。

以上の設定を行うことで、Oracleのインストールマシンに接続することが可能です。

※DBMotoを使用して、Oracle Client 10g からOracle Database 11gへ接続する際、「ORA-1017」が発生する場合があります。

この場合は下記のリンクの記事をご参照下さい。

■記事タイトル
【DBMoto】Oracle Error ORA-1017 について(Oracle 11g)

コメントする -->

Oracle Error ORA-1017 について(Oracle 11g)【リアルタイムレプリケーションツールDBMoto】

DBMotoを使用して、Oracle Client 10g からOracle Database 11gへ接続する際、「ORA-1017」が発生する場合があります。

「ORA-1017」はユーザIDとパスワードに問題があるというエラーですが、
ユーザIDとパスワードが正しくてもこのエラーが発生する場合があります。

また、SQLPlusなどでは正常に接続でき、DBMoto経由で接続した場合にのみ発生します。

▼回避法

下記のいずれかの方法で回避できます。

・ODP.NET11.0にアップグレードします。
・Oracle Database 11g側で下記のコマンドを実行し、Password Case Sensitivityがオプションを無効にします。
 ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE

コメントする -->

signed/unsigned版について(Ver6.6)【リアルタイムレプリケーションツールDBMoto】

DBMotoにはsigned/unsigned版の2種類があります。

・signedバージョン
→デジタル署名が付加されます。(マイクロソフトと通信を行います)

・unsignedバージョン
→デジタル署名が付加されません。

DBMotoの6.6では、下記のようにインストールの途中でsigned/unsignedを選択できるようになっております。赤枠で囲ってあるほうがunsignedです。

■signedの問題点
signedでインストールすると、DBMotoのサービスやアプリケーションの起動に時間がかかるケースが発生することがあります。
この場合、unsignedでインストールすることで回避できる場合があります。

■インストーラの問題
インストールの途中でunsignedを選択したのにも関わらず、デジタル署名が付加されるsignedでインストールされることがあります。
この問題を回避するために、100%unsignedでインストール出来る専用のインストーラーを
用意しておりますので、ご希望の方は弊社までご連絡いただければと思います。

コメントする -->

運用でのリカバリ方法(SQLServer)【リアルタイムレプリケーションツールDBMoto】

Q:リカバリ方法として、本番稼動のDBが障害などで使用不可となった場合に、コールドスタンバイしたDBに切り替えをします。そのために本番稼動をしているDBとスタンバイDBを同じ状態(設定、データ)にしておく必要があります。(常に同期をとる必要があります。) 本番DBに障害が発生した場合は、ターゲットDBのデータを参照することとなります。その後、本番DBが復旧後、ターゲットDBのデータを本番DBに戻す作業も必要です。

A:あくまでもターゲットDB(スタンドバイDB)の設定(PK,IDENTITY等)とデータをソースDBと同じようにすることですので、ターゲットテーブルへのデータレプリケーションを正常に行なうために、リフレッシュモード(BulkInsert)でレプリケーションを行なうことになります。

リフレッシュモードでも定期的にレプリケーションを行なうことができます。
方法としては該当するレプリケーションを右クリックして、「Replication Properties >Scheduler>Refresh Schedule」の「Run Recurrently」オプションを選択して、「Add」ボタン押下しますとレプリケーションスケジューラダイアログ(Scheduler Dialog)が表示されます。

スケジューラダイアログでレプリケーションの実行タイミングを設定することができます。

※スケジューラに関しては、図と「DBMoto User’s Guide>Scheduler Dialog」をご参照ください。

コメントする -->

HMVジャパン株式会社(DBMoto事例)

● 会社情報:
会社名: HMVジャパン株式会社 (現:ローソンHMVエンタテイメント)
URL: http://www.hmv.co.jp/
会社の概要: CD、DVD、レコードなど、音楽と映像商品および付帯関連商品 (グッズ・アクセサリー)、ならびに書籍の輸入・販売

● 課題について:
Q:DBMotoを導入する前の問題点等などをお願いします。現状の業務アプリケーションを教えてください。

A:社内データウェアハウス構築にあたり、基幹系システム(IBM iSeries)DBとのつなぎ込みが必要でした。
イントラネット上のアプリケーションで、ODBC接続を利用し運用はしていたのですが、パフォーマンスの問題などあり、リアルタイムで情報を取り込む事が非常に困難でした。

● ソリューションについて:

Q:どのようにしてDBMotoを見つけ、 そしてDBMotoを採用された理由
今後どのように現状の業務アプリケーションにDBMotoを使用されましたか。
そして、DBMotoの利用が御社にどのように利益/効果をもたらしまか。

A: DBMotoのお試し版をインターネット上からダウンロードしたのがきっかけです。
一度DBを構築してしまえば、日々のメンテナンスの必要もなく、なによりリアルタイムな情報がストレスなく取り出せる事が、決定した理由です。

● プラットフォーム(システム環境)について:
Q:御社で現在使用しているデータベースとそのサーバの種類をお願いします。

A: DB2/400(iSeries) × 6
MS SQLServer(Windows Server2003)複数台

● Q:御社でDBMotoを使用してデータをレプリケーションする必要があったアプリケーションは具体的にはどのようなアプリケーションでしょうか?

A:各店舗、およびEコマースの在庫データを結合しました。
ほぼリアルタイムな在庫をみることができるため、基幹系、イントラネット、KIOSK上の在庫関連のアプリケーションで利用しています。

● Q:DBMotoが取り扱うデータ量はどのくらいでしょうか?

A:レコード件数 : 約1400万レコード

● DBMotoの長所はどのような点にあるとお考えでしょうか?

・分散されたテーブルをあたかも1つのテーブルのように扱える。
・プラットホームの違うシステムでも、意識することなくDBにアクセスする事ができる。
・DBMOTOの自体の設定も簡単

● 今後の予定をお願いします。

A:今後は、お客様向けのシステム(KIOSK)にも利用していきたいと考えております。

タグ:

IBM DB2 for i と MySQL Enterpriseとの統合ホワイトペーパー【リアルタイムレプリケーションDBMoto】

このホワイトペーパーはDBMotoを使用してIBM i (AS/400)-MySQLデータベース間 のデータ統合の施行に関しての説明をしています。

正式なタイトルは「Improving Information Delivery and Reducing Cost of Ownership in an IBM Data Environment:
A Guide to Integration between IBM DB2 for i and MySQL Enterprise」です。

⇒ダウンロード申し込み先:

コメントする -->