9. アプリケーション開発時の注意を怠るべからず
9.4. SQL 文処理結果の確認処理の組み込み漏れによる業務異常について
9.4.1. 留意点
【概要】
アプリケーションでは、実行したSQL文ごとに、処理結果を確認する必要があります。
【詳細】
アプリケーションで、実行したSQL文ごとに処理結果を確認していない場合、SQL文の処 理結果の異常を検出せずに、そのまま業務処理を進めることになり、各種の問題を引き起こ すことになります。
発生した問題事例(多いもの)
更新したはずのデータが正しく反映されていない(UPDATE文の処理結果を確 認していないため、UPDATE文の実行異常を検出できず、処理を継続した結果 の事象)
挿入したはずのデータが参照できない(INSERT文の処理結果を確認していない
ため、INSERT文の実行異常を検出できず、処理を継続した結果の事象)
【対処】
埋込みSQLを利用した場合の確認方法を以下に示します。
JDBCドライバ/ODBCドライバ/.NET Data Providerを利用する場合は、「9.4.3. 備考」に 示すマニュアルを参照してください。
状態変数およびメッセージ変数を使用する場合の例
SQL文の実行結果は、SQL文の実行ごとに、状態変数SQLSTATEおよびメッセー
ジ変数SQLMSGに通知されます。
状態変数は、処理結果の状態をアプリケーションに伝えるための変数で、状態コード が設定されます。
状態コードは、処理が正常に完了した、または処理中になんらかの例外条件が発生し たという状態を示します。
メッセージ変数は、処理結果をメッセージとしてアプリケーションに伝えるための変 数です。
Symfoware Server べからず集 [ホスト変数宣言の例(SQL埋込みCプログラム)]
SQLSTATE は、長さ 5 桁の文字列型(char SQLSTATE[6]) の変数であり、埋込み SQL宣言節で宣言します。
SQLMSGは、文字列型の変数であり、長さには、2以上32001以下の値が指定でき
ます。同じく、埋込みSQL宣言節で宣言します。
埋込み例外宣言(WHENEVER文)を使用する場合の例
埋込み例外宣言は、SQL 文が例外条件を生じた場合に実行する処理を指定する SQL 文です。
これにより、SQL文の実行ごとに、処理結果をチェックする必要がなくなります。
[埋込み例外宣言の使用例]
データなし以外のエラーが発生した場合には、ERR001へ進むことを指示します。
9.4.2. 未対処時の影響 (1) 現象分類
アプリケーションの異常 (2) 現象/原因
【現象】
・ 更新したはずのデータが正しく反映されていません
・ 挿入したはずのデータが参照できません
【原因】
アプリケーションにおいて、SQL文の処理結果を確認していないためです。
EXEC SQL WHENEVER SQLERROR GOTO :ERR001;
(1) (2) (1)条件
(2)例外動作
EXEC SQL BEGIN DECLARE SECTION;
short PNO ; long QOH ; short PFLAG ; short QFLAG ; char SQLSTATE[6] ; char SQLMSG[256] ;
EXEC SQL END DECLARE SECTION;
埋込みSQL宣言節
Symfoware Server べからず集
9.4.3. 備考
Symfoware Server アプリケーション開発ガイド(共通編) 第1章 アプリケーションの設計に必要な概念
1.1 トランザクションと排他制御
1.1.5 SQL文の処理結果異常とトランザクション
付録E SQLSTATE値
Symfoware Server アプリケーション開発ガイド(埋込みSQL編) 第3章 アプリケーションの作成
3.1 SQL埋込みCプログラムの作成方法
3.1.4 SQL文の処理結果の確認
3.2 SQL埋込みCOBOLプログラムの作成方法
3.2.4 SQL文の処理結果の確認
Symfoware Server アプリケーション開発ガイド(JDBCドライバ編) 第3章 アプリケーションの作成
3.17 エラー情報の取得
Symfoware Server アプリケーション開発ガイド(ODBCドライバ編) 第4章 アプリケーションの作成および実行
Symfoware Server アプリケーション開発ガイド(.NET Data Provide編) 第3章 アプリケーションの作成
Symfoware Server べからず集
9.5. Connection Manager での通信異常/接続失敗発生時の確認観点
9.5.1. 留意点
【概要】
Connection Managerを使用してコネクションを接続している状態で、通信異常や接続失敗
のエラーが返却された場合は、Connection Managerのapcnetコマンドでデータベースサ ーバ上のRDBシステムとの通信状態を確認してください。
RDBシステムとの通信が、通信不可状態であれば、ネットワーク機器などの通信関連設備 の状態や、データベースサーバ、アプリケーションサーバの運用状態を確認してください。
【詳細】
Connection Managerを使用してコネクションを接続しているとき、以下のような通信異常
や接続失敗のエラーが返却される場合がある。
apc00001e:An error has occurred on the communication line to RDB system 'xxx'.
apc00004e:Failed to connect the communication line with RDB system 'XXX'.
apc01017e Heartbeat connection timed out. IPaddress=s* t*
apc00022e Heartbeat connection closed by foreign host. IPaddress=s*
PortNumber=d* t*
上記のようなエラーが返却された場合は、Connection Managerのapcnetコマンドで、デ ータベースサーバ上のRDBシステムとの通信状態を確認します。
apcnetコマンドで出力された通信状態(Status)がonlineで、システムログにapc00005i のメッセージが出力されている場合は、Connection Managerの機能によりコネクションは 再接続されているため、特別な対処方法は不要です。
apc00005i Successfully connected the communication line with RDB system 's*'.t*
通信状態(Status)がofflineの場合は、ネットワーク環境、データベースサーバやアプリ ケーションサーバに異常が発生していないか確認してください。
【補足】
Symfowareのクライアント用動作環境ファイルでWAIT_TIMEパラメタに 0を指定して
いる場合、またはWAIT_TIMEパラメタを省略している場合、アプリケーションサーバか らデータベースサーバに処理依頼を実行した後、通信状態が回復するまで無応答になります。
この無応答を回避する場合は、WAIT_TIMEパラメタに0以外の値を設定してください。
apcnet DATE:2014/05/28 TIME:13/16/17
System Host Status Cause symfo001 xxx.xxx.xxx.xxx online ‐ (symfo001) ‐ offline CON
Symfoware Server べからず集
9.5.2. 未対処時の影響 (1) 現象分類
オンライン異常 (2) 現象/原因
【現象】
業務アプリケーションを実行すると、以下のエラーが出力されます。
また、以下のエラーが出力された後、実行した業務アプリケーションは無応答状態 になります。
[返却されるエラー]
apc00001e:An error has occurred on the communication line to RDB system 'xxx'.
apc00004e:Failed to connect the communication line with RDB system 'XXX'.
apc01017e Heartbeat connection timed out. IPaddress=s* t*
apc00022e Heartbeat connection closed by foreign host. IPaddress=s*
PortNumber=d* t*
【原因】
ネットワーク環境、データベースサーバやアプリケーションサーバの異常により、
通信切断の状態になっているためです。
また、Symfowareのクライアント用動作環境ファイルでWAIT_TIMEパラメタに
0を指定しているため、通信状態が回復するまで待ち状態になっています。
9.5.3. 備考
Symfoware Server Connection Managerユーザーズガイド 4.1.2 通信異常時の対処
6.1 apcnet
Symfoware Server アプリケーション開発ガイド(埋込みSQL編)
7.4.1 クライアント用の動作環境ファイルによる定義
Symfoware Server アプリケーション開発ガイド(JDBCドライバ編)
5.2.3.4 ctuneparamオプションについて
Symfoware Server アプリケーション開発ガイド(ODBCドライバ編)
4.5 アプリケーションのチューニング
Symfoware Server アプリケーション開発ガイド(.NET編)
B.2 tuneparamキーワード
Symfoware Server べからず集
10. 起動/停止に関する注意事項
本章では、Symfoware の起動と停止に関する注意事項について説明します。
Symfoware Server べからず集