Connection Managerを利用したアプリケーションを作成する場合の注意事項について説明します。
アプリケーション中で、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アプリケーションの場合のノードの切替え中のアクセス例を示します。