ページの先頭行へ戻る
Symfoware Server V12.1.0 Connection Managerユーザーズガイド
FUJITSU Software

5.2 アプリケーション作成時の注意事項

Connection Managerを利用したアプリケーションを作成する場合の注意事項について説明します。

返却されるSQLSTATE値

アプリケーション中で、SQL文の実行結果は状態変数のSQLSTATEに通知されます。したがって、アプリケーションは、SQL文を実行するたびにSQLSTATE値をチェックして、RDBの処理結果を確認しながら処理を進めることができます。待ち時間オーバやノードダウンによってコネクションが切断されるSQLSTATE値を以下に示します。

C/COBOLアプリケーション、Javaアプリケーション、ODBCアプリケーションのいずれの場合も、以下のSQLSTATE値が通知されます。

SQLSTATE値

意味

40003

文終了不明(処理時間オーバまたは強制終了)

40703

アクセス中のノードダウン

これらのSQLSTATE値が返却された場合、Connection Managerを使用していなければ、アプリケーションはコネクションの再接続処理を行う必要があります。ただし、Connection Managerを使用しているならば、アプリケーションでコネクションの再接続処理を行う必要はありません。

そのため、アプリケーションは、コネクションの処理とトランザクションの処理を完全に分離することが可能になり、アプリケーションの処理構造を単純化することが容易となります。

また、Connection Managerのプロセスが強制終了した場合、以下のSQLSTATE値が通知されます。

SQLSTATE値

意味

40705

Connection Managerの強制終了

このSQLSTATE値が返却された場合、コネクションは切断されます。また、Connection Managerが終了しているため、コネクションの再接続処理は行われません。

ノードダウンを検知した場合の注意

運用ノードまたは引継ぎ元ノードのノードダウンが発生した場合、アプリケーションにはSQLSTATE値に“40703”が返却されます。この時、アプリケーションのコネクションは切断されません。

アプリケーションはコネクションの再接続を行う必要はなく、トランザクションを最初から実行し直します。接続先データベースサーバは、待機ノードまたは引継ぎ先ノードに切り替わり、トランザクションが実行されます。

接続先データベースサーバがフェイルオーバ運用を行っている場合の例を、以下に示します。

また、実際に運用ノードまたは引継ぎ元ノードのノードダウンが発生した場合に、アプリケーションのトランザクションを再開する時に、以下の点に注意してください。

ノードの切替え中または縮退中のアクセス

アプリケーションがトランザクションを開始した時に、ノードの切替え処理または縮退処理を行っている場合、Connection Managerはノードの切替え処理または縮退処理が完了するまでSQL文の実行要求を待機します。

この処理待ち時間は、以下のパラメタを指定することで、制御可能です。

C/COBOLアプリケーションの場合は、動作環境ファイルのWAIT_TIMEパラメタを指定します。

Javaアプリケーションの場合は、JDBCデータソース登録ツールの[JDBCデータソースオプション設定]画面で、[その他パラメタ]にCLI_WAIT_TIMEパラメタを指定します。指定方法は以下のとおりです。

ctuneparam='CLI_WAIT_TIME=(待ち時間)'

参照

JDBCデータソース登録ツールの詳細については、“アプリケーション開発ガイド(JDBCドライバ編)”を参照してください。

ODBCアプリケーションの場合は、ODOSのODBCデータソースを設定する[Symfoware/RDBオプション設定]画面で、[その他パラメタ]にCLI_WAIT_TIMEパラメタを指定します。指定方法は以下のとおりです。

CLI_WAIT_TIME=(待ち時間)

参照

ODBCデータソース設定の詳細については、“アプリケーション開発ガイド(ODBCドライバ編)”を参照してください。


なお、上記パラメタに指定した時間内に処理が完了しなかった場合、タイムアウトとなり、SQLSTATE値に“40003”が返却されますが、コネクションは切断されません。要求に応じて再度トランザクションを再開してください。

接続先データベースサーバがフェイルオーバ運用を行っている場合、かつ、C/COBOLアプリケーションの場合のノードの切替え中のアクセス例を、以下に示します。

資源偏在先のノードがダウンしている場合のアクセス

コネクション接続先のノードは稼動しているが、資源偏在先のノードがダウンしている場合は、SQLSTATE値に“71003”が返却されます(この時トランザクションはROLLBACKされません)。アプリケーションはROLLBACK文を発行した後、要求に応じてトランザクションを再開してください。

RDBシステムの組込み行う場合の注意

データベースサーバでRDBシステムの組込みを行う場合は、業務を停止してから行ってください。RDBシステムを組み込むことにより、RDBシステムの起動とユーザロググループの切り戻しが自動的に行われます。
業務を停止しない場合、アプリケーションの振る舞いは以下になります。

なお、いずれの場合でもコネクションは切断されません。

また、業務を実行中に切り戻しが行われた場合、以下の SQLSTATEが発生する場合があります。この場合は、“ノードダウン時の対処”と同様の対処を行ってください。

アプリケーションがマルチスレッド環境で動作する場合の注意

マルチスレッド環境で動作するアプリケーションがConnection Managerを利用する場合、以下のOSでは、アプリケーションの1プロセスあたりの最大コネクション数がSymfoware/RDBの定量制限とは異なります。

以下のOS以外は、Symfoware/RDBの定量制限の値に従います。

SolarisSolaris(32ビットの場合)

アプリケーションの1プロセスあたりの最大コネクション数は341となります。

Solaris(64ビットの場合)

アプリケーションの1プロセスあたりの最大コネクション数は21845となります。

LinuxLinux(32ビット/64ビットの場合)

アプリケーションの1プロセスあたりの最大コネクション数は21845となります。

注意

上記の最大コネクション数はアプリケーションがコネクション以外にファイルディスクリプタを使用していない場合の最大値です。アプリケーションが他にファイルディスクリプタを使用している場合、最大コネクション数は以下となります。

  • SolarisSolaris(32ビットの場合)

    最大コネクション数 = (1023 - 他に使用しているファイルディスクリプタ数) / 3
  • SolarisLinuxSolaris(64ビットの場合)/Linux(32ビット/64ビットの場合)

    最大コネクション数 = (65535 - 他に使用しているファイルディスクリプタ数) / 3

参照

Symfoware/RDBの定量制限の詳細については、“セットアップガイド”を参照してください。