Troubleshooting
Problem
アプリケーション実行時に SQL0968C エラーが発生した場合の対応方法について記述します。
Symptom
アプリケーションに SQL0968C (-968) が返り、トランザクションが継続できなくなります。
Cause
SQL0968C エラーが発生した場合には、次の原因が考えられます。
以下解決方法のセクションにて、上記のいずれかに該当するかどうかの切り分け方法について解説します。
いずれの原因にも該当しない場合は、速やかにご契約のサポートセンターへご連絡ください。
- システム管理表スペース (SMS 表スペース) のフル
データベース・データ量の増加により、システム管理表スペースに割り当てられている領域が枯渇し、新しいデータを格納できない状態の可能性があります。 - アクティブ・ログ領域 (LOGPATH) とアーカイブ・ログ領域 (アーカイブログ・パス) のフル
Db2 はデータベース毎にトランザクション・ログと呼ばれる復旧用のログを保持しており、ログにはそれぞれアクティブ・ログとアーカイブ・ログの2種類が存在します。
アクティブ・ログとアーカイブ・ログがそれぞれの格納領域を使い果たし、新しいログ (二次ログ等) を作成できない状態での可能性があります。
以下解決方法のセクションにて、上記のいずれかに該当するかどうかの切り分け方法について解説します。
いずれの原因にも該当しない場合は、速やかにご契約のサポートセンターへご連絡ください。
Resolving The Problem
- システム管理表スペース (SMS) のフルの確認方法と解決方法
<確認方法>
- データベースへ接続後、以下の SQL を発行してください。
select substr(a.tbsp_name, 1, 15) as tbsp_name, substr(a.tbsp_id,1,4) as tbsp_id, a.container_name, substr(a.container_id,1,5) as container_id from sysibmadm.snapcontainer a, sysibmadm.tbsp_utilization b where a.tbsp_id = b.tbsp_id and b.tbsp_type = 'SMS'
$ db2 connect to <database_name> $ db2 "select substr(a.tbsp_name, 1, 15) as tbsp_name, substr(a.tbsp_id,1,4) as tbsp_id, a.container_name, substr(a.container_id,1,5) as container_id from sysibmadm.snapcontainer a, sysibmadm.tbsp_utilization b where a.tbsp_id = b.tbsp_id and b.tbsp_type = 'SMS'" TBSP_NAME TBSP_ID CONTAINER_NAME CONTAINER_ID --------------- ------- ------------------------------------------ ------------ SYSCATSPACE 0 /workdsiddb/NODE0000/SQL00001/SQLT0000.0 0 TEMPSPACE1 1 /work/dsiddb/NODE0000/SQL00001/SQLT0001.0 0 USERSPACE1 2 /work/dsiddb/NODE0000/SQL00001/SQLT0002.0 0 3 レコードが選択されました。
- CONTAINER_NAME 列に記載されている領域がフルになっていないかどうか OS 側から確認してください。
- データベースへ接続後、以下の SQL を発行してください。
- アクティブ・ログ領域 (LOGPATH) とアーカイブ・ログ領域 (アーカイブログ・パス) のフルの確認方法と解決方法
<確認方法>
- get db cfg コマンドを使用して問題が発生しているデータベースのアクティブ・ログ領域の値と、ログのアーカイブの設定を取得してください。
以下の例においては、/work/dsiddb/NODE0000/SQL00001/SQLOGDIR/ がアクティブ・ログ領域、/work/archlog/と/work/archlog2/ がアーカイブ・ログ領域です。
実行例)db2 connect to <database_name> db2 get db cfg for <database_name> ログ・ファイルのパス = /work/dsiddb/NODE0000/SQL00001/SQLOGDIR/ 第 1 ログ・アーカイブ・メソッド (LOGARCHMETH1) = DISK:/work/archlog/ 第 2 ログ・アーカイブ・メソッド (LOGARCHMETH2) = DISK:/work/archlog2/
- 確認した領域がフルになっていないかどうか OS 側から確認してください。
<解決方法>
アクティブ・ログ領域とアーカイブ・ログ領域の両方が枯渇している状況が確認できた場合、アーカイブ・ログ領域の枯渇に起因して、アクティブ・ログ領域からログをアーカイブ・ログ領域へアーカイブすることができなくなり、最終的にアクティブ・ログ領域が枯渇した可能性があります。
対応方法として、まず、アーカイブ・ログ領域内のログ・ファイルを他の領域に移動し、アーカイブ・ログ領域に空きを確保してください。
その結果、アクティブ・ログ領域内のアーカイブ・ログが、アーカイブ・ログ領域へ正常にアーカイブされる状態になり、アクティブ・ログ領域に空き容量が確保できるようになります。
注:アクティブなデータベースについては、絶対にアクティブ・ログ領域内のファイルを削除しないでください。 - get db cfg コマンドを使用して問題が発生しているデータベースのアクティブ・ログ領域の値と、ログのアーカイブの設定を取得してください。
関連情報
SQL0968C
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlZAAU","label":"Database Objects-\u003ETablespaces"},{"code":"a8m500000008PmcAAE","label":"Recovery-\u003ELogging"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
02 November 2023
UID
swg21504150