Mobile Link は、Linux、UNIX、Windows 用の IBM DB2 LUW をサポートしています。
設定スクリプトを実行する前に、次の要件を確認してください。
設定スクリプトを実行するデータベースユーザーは、同期中に Mobile Link システムテーブルを更新するユーザーと同じである必要があります。このユーザーを使用して Mobile Link サーバーを起動したり、Mobile Link アプリケーションを設定したりします。 必要なパーミッションを参照してください。
Mobile Link サーバーを統合データベースに接続するために使用される RDBMS ユーザーは、Mobile Link システムテーブル、プロシージャーなどを修飾子なしで使用できる必要があります (SELECT * from ml_user など)。 Mobile Link サーバーのシステムテーブルを参照してください。
IBM DB2 を Mobile Link 統合データベースとして動作するよう設定するには、設定プロシージャーを実行して、Mobile Link 同期に必要な Mobile Link システムテーブル、ストアドプロシージャー、トリガー、ビューを追加する必要があります。次のような方法で実行できます。
\MobiLink\setup にある syncdb2.sql 設定スクリプトを実行します。スクリプトを実行する前に、別のロケーションにコピーして変更してください。手順については後述します。
Sybase Central で Mobile Link のシステム設定を確認し、更新します。Mobile Link システム設定を参照してください。
設定スクリプトを使用して Mobile Link システムテーブルをインストールするには、目的の IBM DB2 LUW テーブル領域は最低でも 8 KB ページを使用します。テーブル領域が 8 KB ページを使用しない場合は、次の手順を実行します。
1 つ以上のバッファープールに 8 KB ページがあることを確認します。ない場合は、8 KB ページのバッファープールを作成してください。
8 KB ページのバッファープールを使用する、新しいテーブル領域とテンポラリテーブル領域を作成します。
詳細については、IBM DB2 LUW のマニュアルを参照してください。
使用する接続情報を含むように、syncdb2.sql をカスタマイズします。
syncdb2.sql を変更と保存を行う新しいロケーションにコピーします。
syncdb2.sql スクリプトには、デフォルトの接続文 connect to DB2Database
が含まれています。IBM DB2 データベースに接続するようにこの行を変更します。次の構文を使用します。
connect to DB2Database user userid using password ~ |
ここでは、DB2Database、userid、password に適切な名前を指定します。(syncdb2.sql スクリプトでは、チルダ (~) をコマンドデリミタとして使用します。)
syncdb2.sql を実行します。
db2 -c -ec -td~ +s -v -f syncdb2.sql |
IBM DB2 データベースで提供されている ODBC ドライバーを使用して、IBM DB2 統合データベース用の ODBC DSN を設定してください。次の項を参照してください。
ロックのエスカレーション Mobile Link サーバーでは、統合データベースとリモートデータベースのデータ間の整合性を維持するために、すべての同期フェーズでリモート ID をロックするために、ml_lock_rid ストアドプロシージャーを介して次のクエリを発行します。
SELECT sync_key into p_sync_key FROM ml_database WHERE rid = a_given_remote_id WITH RR USE AND KEEP EXCLUSIVE LOCKS; |
このクエリにより、同じリモート ID を使用する同時同期が発生しないよう、リモート ID は排他的にロックされます。
同じリモート ID を使用する同時同期がないにもかかわらず Mobile Link のリモート ID のロックエラーが発生する場合は (たとえば、Mobile Link サーバーのログに Mobile Link エラーコード -10341 がある場合)、DB2 の maxlocks と locklist 設定パラメーターを調整してロックのエスカレーションを回避する必要があります。詳細については、DB2 のマニュアルを参照してください。
データ型マッピング カラムのデータ型は、統合データベースとリモートデータベース間で完全に一致する必要があります。 詳細については、IBM DB2 LUW データのマッピングを参照してください。
CHAR カラム IBM DB2 LUW では、CHAR データ型は固定長で、文字列の長さに合わせてブランクが埋め込まれています。Mobile Link リモートデータベース (SQL Anywhere または Ultra Light) では、CHAR は VARCHAR と同じで、固定幅に合わせて値にブランクが埋め込まれることはありません。統合データベースで CHAR の代わりに VARCHAR を使用することを強くおすすめします。CHAR を使用する必要がある場合は、mlsrv12 -b コマンドラインオプションを使用すると、同期中に文字列から後続ブランクを削除できます。このオプションは、重複を検出するとき文字列を比較時する際に重要です。
-b mlsrv12 オプションを参照してください。
テーブル領域の容量 IBM DB2 LUW データベースを統合データベースとして使用する場合のテーブル領域とテンポラリテーブル領域は、最低でも 8 KB ページを使用します。
また、LONG テーブル領域が必要なカラムもあります。次の例のように、デフォルトの LONG テーブル領域がない場合は、これらのカラムを含むテーブルの作成文を正しく設定します。
CREATE TABLE ... ( ... ) IN tablespace LONG IN long-tablespace |
サンプルアプリケーションの使用例については、Mobile Link の CustDB サンプルを参照してください。
セッション全体の変数 バージョン 8 より前の IBM DB2 LUW では、セッション全体の変数はサポートされていません。これを解決する便利な方法としては、Mobile Link ユーザー名と他のセッションデータ用のカラムがあるベーステーブルを使用します。ベーステーブルには、同時同期を表すローが含まれます。
ユーザー定義のプロシージャー バージョン 8.2 より前の IBM DB2 LUW では、SQL プロシージャーを実行可能ライブラリ (DLL など) にコンパイルする必要があります。作成された DLL/共有ライブラリは、サーバー上の特別なディレクトリにコピーする必要があります。C/C++ や Java など、さまざまな言語を使用してプロシージャーを記述できることに注意してください。
Java と .NET の同期スクリプトの詳細については、以下の項目を参照してください。
システムプロシージャーコール内の引用符を 2 つにする
Mobile Link システムプロシージャーを使用して、スクリプトを IBM DB2 統合データベースに追加する場合は、引用符を 2 つにする必要があります。たとえば、ml_add_table_script を使用して追加するスクリプトに、他の統合データベースに対する
SET "DELETED"=''Y''
という行が含まれている場合、IBM DB2 では、これを SET "DELETED" = ''''Y''''
と記述する必要があります。
Mobile Link 独立性レベル を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |