ページの先頭行へ戻る
Symfoware Server V10.0.1 Connection Managerユーザーズガイド(9.x)

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”が返却されます。この時、アプリケーションのコネクションは切断されません。

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

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

ノードの切替え中のアクセス

アプリケーションがトランザクションを開始した時に、ノードの切替え処理を行っている場合、ノードの切替え処理が完了するまで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文を発行した後、要求に応じてトランザクションを再開してください。

ダウンリカバリ中のアクセス

フラッシュトリートメントリカバリ機能を利用する場合、アプリケーションがトランザクションを開始した時に、フラッシュトリートメント閉塞中であるならば、SQLSTATE値に“71410”が返却されます(この時トランザクションはROLLBACKされません)。フラッシュトリートメント閉塞はダウンリカバリが完了すると解除されますので、アプリケーションはROLLBACK文を発行した後、要求に応じてトランザクションを再開してください。

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

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

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

SolarisSolaris(32ビット)の場合

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

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

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

注意

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

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

参照

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