アプリケーション開発の手引き

複数サイト更新に関する考慮事項

この節では、アプリケーションがどのようにしてリモート・データベースを作動させるか、またそれがどのようにして一度に複数のデータベースを作動させるかを説明します。主な点を次に示します。

DB2 では、BACKUP、RESTORE、DROP DATABASE、CREATE DATABASE などのリモート・サーバー関数を、ローカル・アプリケーションであるかのように実行することができます。これらの関数をリモートに使用することの詳細については、 管理の手引き を参照してください。

リモート作業単位

作業単位とは、単一の論理トランザクションのことです。これは、すべての処理の実行が成功するか、または全体としては不成功と考えられる一連の SQL ステートメントから成り立っています。

リモート作業単位により、ユーザーまたはアプリケーション・プログラムは、作業単位あたり 1 つのロケーションでデータの読み取りまたは更新が行えます。これは、作業単位内での 1 つのデータベースへのアクセスをサポートします。アプリケーション・プログラムは複数のリモート・データベースにアクセスできますが、作業単位内では 1 つのデータベースにしかアクセスできません。

リモート作業単位には次の特徴があります。

複数サイト更新

複数サイト更新は、分散作業単位 (DUOW) および 2 フェーズ・コミットとしても知られています。これは、アプリケーションが、複数のリモート・データベース・サーバーにあるデータを、保全性を確実にしながら更新できるようにする関数です。複数サイト更新のよい例として、銀行でのトランザクションを挙げることができます。このトランザクションでは、ある口座の預金が別のデータベース・サーバーの口座に移されます。このようなトランザクションでは、1 つの口座での借り方の更新のコミットが、別の口座への貸し方の更新の処理がコミットされる時点で実行されることが重要です。複数サイト更新の考慮事項は、これらの口座によって表されるデータが 2 つの異なるデータベース・サーバーによって管理される状況に適用されます。

複数サイト更新を使用すれば、 1 つの作業単位内で複数の DB2 ユニバーサル・データベースのデータベースの読み取りおよび更新を行えます。 DB2 コネクトをインストールしているか、 DB2 ユニバーサル・データベース エンタープライズ・エディションで提供されている DB2 コネクト機能を使用している場合、ホストまたは AS/400 データベース・サーバー (DB2 ユニバーサル・データベース (OS/390 版) および DB2 ユニバーサル・データベース (AS/400 版) など) とともに、複数サイト更新を使用することもできます。複数サイト更新を他のデータベース・サーバーとともに使用する場合は、 DB2 コネクトでの複数サイト更新で説明しているように特定の制限があります。

トランザクション・マネージャーは、複数のデータベース間でのコミットを調整します。 TxSeries CICS のようなトランザクション処理 (TP) モニター環境では、 TP モニターは独自のトランザクション・マネージャーを使用します。そうでない場合は、DB2 とともに供給されるトランザクション・マネージャーが使用されます。 DB2 ユニバーサル・データベース (OS/2 版)、UNIX、および Windows 32 ビット オペレーティング・システムは、 XA (拡張アーキテクチャー) 準拠の資源管理プログラムです。 DB2 コネクトを使ってアクセスするホストおよび AS/400 データベース・サーバーは、 XA 準拠の資源管理プログラムです。また、DB2 ユニバーサル・データベース・トランザクション・マネージャーは、 XA 準拠トランザクション・マネージャーではない こと、すなわちトランザクション・マネージャーが調整できるのは DB2 データベースだけであることに注意してください。

複数サイト更新の詳細については、管理の手引き を参照してください。

複数サイト更新をいつ使用するか

複数サイト更新は、複数のデータベースで処理を行い、データ保全を保持したい場合に最も有効です。たとえば、銀行の各支店がそれぞれのデータベースを持っていた場合、現金転送アプリケーションは、次のことを行います。

1 つの作業単位でこれを行うことにより、両方のデータベースが更新されているか、またはいずれも更新されないようにできます。

複数サイト更新アプリケーションの SQL のコーディング

表 26 は、複数サイト更新の SQL ステートメントのコーディング方法を説明しています。左の列は、複数サイト更新を使用しない SQL ステートメントを示し、右の列は、複数サイト更新と類似したステートメントを示しています。

表 26. RUOW および複数サイト更新 SQL ステートメント
RUOW ステートメント 複数サイト更新ステートメント
CONNECT TO D1
  SELECT
  UPDATE
  COMMIT
  
CONNECT TO D2
  INSERT
  COMMIT
  
CONNECT TO D1
  SELECT
  COMMIT
CONNECT RESET

CONNECT TO D1
  SELECT
  UPDATE
  
CONNECT TO D2
  INSERT
  RELEASE CURRENT
  
SET CONNECTION D1
  SELECT
  RELEASE D1
  COMMIT

左列の SQL ステートメントは、各作業単位あたり 1 つのデータベースのみにアクセスします。これがリモート作業単位 (RUOW) アプリケーションです。

右列の SQL ステートメントは、1 つの作業単位内で複数のデータベースにアクセスします。これは複数サイト更新アプリケーションです。

SQL ステートメントの中には、複数サイト更新アプリケーションにおいて異なったコーディングおよび解釈をされるものもあります。

複数サイト更新アプリケーションのプリコンパイル

複数サイト更新アプリケーションをプリコンパイルするときには、 CLP 接続をタイプ 1 接続に設定する必要があります。そのように設定しないと、アプリケーションのプリコンパイルを試行したときに、 SQLCODE 30090 (SQLSTATE 25000) を受け取ります。接続タイプの設定について詳しくは、 コマンド解説書 を参照してください。以下のプリコンパイラー・オプションは、複数サイト更新を使用するアプリケーションをプリコンパイルするときに使用します。

CONNECT (1 | 2)
このアプリケーションが 複数サイト更新アプリケーションの SQL のコーディングで説明されるように、複数サイト更新アプリケーションで SQL 構文を使用することを示すには、 CONNECT 2 を指定してください。省略時の設定の CONNECT 1 は、SQL 構文の通常の (RUOW) 規則がアプリケーションに適用されることを意味します。

SYNCPOINT (ONEPHASE | TWOPHASE | NONE)
SYNCPOINT TWOPHASE および DB2 がトランザクションを調整するように指定する場合、 DB2 にはトランザクションの状態情報を管理するデータベースが必要です。アプリケーションを配置するときには、データベース・マネージャー構成パラメーター TM_DATABASE を構成して、このデータベースを定義する必要があります。 TM_DATABASE データベース・マネージャー構成パラメーターについて詳しくは、 管理の手引き を参照してください。これらの SYNCPOINT オプションがプログラムの処理にどのような影響を与えるかについては、 SQL 解説書 の概念についての節を参照してください。

SQLRULES (DB2 | STD)
ISO/ANSI SQL92 を基にした DB2 規則または標準 (STD) 規則が複数サイト更新アプリケーションで使用されるべきかどうかを指定します。 DB2 規則では、休止データベースに CONNECT ステートメントを出すことができます。 STD 規則ではできません。

DISCONNECT (EXPLICIT | CONDITIONAL | AUTOMATIC)
RELEASE ステートメントで解放とマークされたデータベースのみ (EXPLICIT)、オープンされている WITH HOLD カーソルがないすべてのデータベース (CONDITIONAL)、またはすべての接続 (AUTOMATIC) のいずれのデータベース接続が COMMIT 時に切断されるかを指定します。

上記のプリコンパイラー・オプションの詳細については、 コマンド解説書 を参照してください。

複数サイト更新プリコンパイラー・オプションは、最初のデータベース接続時に有効になります。 SET CLIENT API を使用することにより、接続がない場合に (接続が確立される前、またはすべての接続切断後)、接続の設定を置き換えることができます。 QUERY CLIENT API を使用することにより、アプリケーション・プロセスの現行接続の設定を照会することができます。

バインド・プログラムは、アプリケーション・プログラムで参照されるオブジェクトが存在しないと失敗します。複数サイト更新アプリケーションに対処する方法は 3 つあります。

複数サイト更新アプリケーションの構成パラメーターの指定

ホストまたは AS/400 データベースに接続した XA トランザクション・マネージャーが調整する複数サイト更新の実行について詳しくは、 DB2 コネクト 使用者の手引き を参照してください。

以下の構成パラメーターは、複数サイト更新を実行するアプリケーションに影響を与えます。構成パラメーターは、LOCKTIMEOUT 以外は、データベース・マネージャー構成パラメーターです。 LOCKTIMEOUT は、データベース構成パラメーターです。

TM_DATABASE
2 フェーズ・コミット・トランザクションで、どのデータベースがトランザクション・マネージャーとして動作するか指定します。

RESYNC_INTERVAL
未確定トランザクションを再び同期させるまでのシステムの待ち時間 (秒) を指定します。 (未確定トランザクションとは、2 フェーズ・コミットの第 1 段階まで成功し、第 2 段階で失敗するようなトランザクションのことです。)

LOCKTIMEOUT
ロックの待ち時間がタイムアウトになり、指定したデータベースの現行のトランザクションをロールバックするまでの秒数を指定します。アプリケーションは、明示的に ROLLBACK を発行して、複数サイト更新に関与しているすべてのデータベースをロールバックする必要があります。 LOCKTIMEOUT は、データベース構成パラメーターです。

TP_MON_NAME
TP モニターがある場合その名前を指定します。

SPM_RESYNC_AGENT_LIMIT
SNA を使用して AS/400 サーバーと再同期操作を実行できる、同時エージェントの数を指定します。

SPM_NAME

注:ホストまたは AS/400 データベース・サーバーを使った環境での複数サイト更新には、SPM が必要です。詳細については、DB2 コネクト 使用者の手引き を参照してください。

SPM_LOG_SIZE
現在の接続状態など接続に関する情報を記録するため、 SPM が使用する 1 次および 2 次ログ・ファイルの各ページ数 (4K バイト単位)。

上記の構成パラメーターの詳細については、 管理の手引き を参照してください。

複数サイト更新に関する制限

次の制限が DB2 の複数サイト更新に適用されます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]