Symfoware/RDBが無応答状態になると、Symfoware/RDBを使用したアプリケーション、またはRDBコマンドが終了できません。
Symfoware/RDBの無応答状態が発生した場合、以下の原因が考えられます。
アプリケーション側の問題で停止していないか
アーカイブログファイル満杯が発生していないか
トランザクションの占有待ちが発生していないか
高負荷状態あるいは大量処理中ではないか
アプリケーション側の問題で停止していないか
Symfoware/RDBにアクセスするアプリケーションが無応答状態の場合は、アプリケーション内、またはSymfoware/RDBのどちらが原因となっているかを特定する必要があります。
原因の特定は、rdbcninfコマンドの出力情報の『Tran』で判断することができます。『INACT』の場合はアプリケーション内で、『ACT』の場合はSymfoware/RDB側で停止しています。
$ rdbcninf -s RDBII rdbcninf DATE:2007/04/14 TIME:11/36/00 Local Connection Status(exec/term/free/total) : 2/ 1/ 29/ 32 Status Idle Tran Type Connection-Info EXEC 00:00 ACT SQL 19660/2 EXEC 10:00 INACT SQL 19660/3 TERM ---- ---- ---- 16997/1 Remote Connection Status(exec/term/free/total) : 1/ 0/ 31/ 32 Status Idle Tran Type Connection-Info EXEC 00:00 ACT TCP/IP 10.124.4.123/19673/3
業務運用中にアーカイブログファイルが満杯になると、Symfoware/RDBはqdg03800iメッセージをコンソール、およびSymfoware/RDBのメッセージログファイルに出力し、空きのアーカイブログファイルに自動的に切り替えます。この切り替え時に、空きのアーカイブログファイルが存在しない(すべてのアーカイブログファイルが満杯になる)と、Symfoware/RDBはqdg03132uメッセージを、コンソールおよびSymfoware/RDBのメッセージログファイルに出力して無応答状態となります。Symfoware/RDBが無応答状態になると、アプリケーションも無応答状態になり業務が停止します。
アーカイブログファイルの状態は、rdblogコマンドの出力情報から確認することができます。アーカイブログファイルが満杯の場合、すべてのアーカイブログに対する『capacity』が100%に、また、『status』がfullになります。
$ rdblog -V -a serial# status total used avail capacity backup-date path 1 full 10M 10M 0 100% ----- /dev/rdsk/c1t1d0s1 2 full 10M 10M 0 100% ----- /dev/rdsk/c1t1d0s3 0 full 10M 10M 0 100% ----- /dev/rdsk/c1t1d0s4
この場合、アーカイブログファイルをバックアップして、Symfoware/RDBの無応答状態を解除します。
空きのアーカイブログファイルが存在しないと、Symfoware/RDBが無応答状態になり、業務が停止するため、上記メッセージを監視する、またはrdblogコマンドでアーカイブログファイルの状態を監視する必要があります。
なお、すべてのアーカイブログファイルが満杯になることが、運用上ありえなければ、アーカイブログファイルの状態を監視する必要はありません。
参照
アーカイブログファイルの状態の監視方法、およびバックアップ方法の詳細は、“RDB運用ガイド”を参照してください。
ポイント
システム、またはアプリケーションの環境設定ファイルで、以下の設定をすることで、アーカイブログファイルが満杯状態になったとき、エラー復帰できます。
ARC_FULL = (RETURN)
詳細は、“アプリケーション開発ガイド(共通編)”の“クライアント用の動作環境ファイル”を参照してください。
アプリケーションがトランザクション実行中状態のまま終了せずに存在し続けると、ほかのアプリケーションで実行されるトランザクションが占有待ち状態になる可能性があります。
業務運用上の手違いなどで、このような状況が発生した場合は、実行中状態のままのトランザクションを終了させて、無応答状態が解除します。
トランザクション(アプリケーション)の占有待ち状態は、rdblkinfコマンドのlオプションで確認することができます。
$ rdblkinf -l -e RDBII rdblkinf DATE: 2007/04/14 TIME:11/35/50 DSI-name : DB0001.DSI0001 Status Uid Pid Sid Type Name Unit Purpose WAIT I4874 23045 2 SQL APL01/CONNECT1 DSI REFER ACTIVE I4874 13254 1 SQL APL05/CONNECT5 DSI UPDATE
参照
rdblkinfコマンドの詳細は、“RDB運用ガイド”および“コマンドリファレンス”を参照してください。
高負荷状態あるいは大量処理中ではないか
Symfoware/RDBの無応答状態が発生しているように見え、実際は処理に時間がかかっているだけで、正常に動作している場合があります。これは、次のような状態の場合に発生する可能性があります。
このような状況が発生しているかどうかは、アプリケーション、およびRDBコマンドの動作状況を調査することで確認できます。アプリケーション、およびRDBコマンドの動作状況は、rdbpsコマンドで出力することができます。10秒程度の間隔で、rdbpsコマンドを数回実行します。出力情報に変化が見られる場合は正常に動作しています。
rdbpsコマンドの実行例
$ rdbps -s -r -ia -e >> /出力先のディレクトリ/rdbpsの結果出力ファイル名
rdbpsコマンド1回当たりの実行時間は数秒です。
参照
rdbpsコマンドの詳細は、“RDB運用ガイド”および“コマンドリファレンス”を参照してください。
高負荷状態、または大量処理中となった原因を究明するには、性能情報を採取して調査する必要があります。この場合、システム全体を調査する必要があります。クライアント、サーバのCPUの状態、メモリの使用状態(実メモリが不足して、スワップ領域を多用したために、処理が遅くなる場合があります)、ディスクのI/Oの状態、およびクライアントサーバ間のネットワークの状態をすべて調べてください。