IBM Support

[Db2] ファイル・システムがフル (SQL0968C) になった場合の解決方法

Troubleshooting


Problem

アプリケーション実行時に SQL0968C エラーが発生した場合の対応方法について記述します。

Symptom

アプリケーションに SQL0968C (-968) が返り、トランザクションが継続できなくなります。

Cause

SQL0968C エラーが発生した場合には、次の原因が考えられます。
  1. システム管理表スペース (SMS 表スペース) のフル
    データベース・データ量の増加により、システム管理表スペースに割り当てられている領域が枯渇し、新しいデータを格納できない状態の可能性があります。
  2. アクティブ・ログ領域 (LOGPATH) とアーカイブ・ログ領域 (アーカイブログ・パス) のフル
    Db2 はデータベース毎にトランザクション・ログと呼ばれる復旧用のログを保持しており、ログにはそれぞれアクティブ・ログとアーカイブ・ログの2種類が存在します。
    アクティブ・ログとアーカイブ・ログがそれぞれの格納領域を使い果たし、新しいログ (二次ログ等) を作成できない状態での可能性があります。

以下解決方法のセクションにて、上記のいずれかに該当するかどうかの切り分け方法について解説します。
いずれの原因にも該当しない場合は、速やかにご契約のサポートセンターへご連絡ください。

Resolving The Problem

  1. システム管理表スペース (SMS) のフルの確認方法と解決方法
    <確認方法>
    1. データベースへ接続後、以下の 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 レコードが選択されました。
    2. CONTAINER_NAME 列に記載されている領域がフルになっていないかどうか OS 側から確認してください。

    <解決方法>
    確認した領域がフルになっている場合、表スペースがフルになった場合の解決方法を参照して対応してください。
  2. アクティブ・ログ領域 (LOGPATH) とアーカイブ・ログ領域 (アーカイブログ・パス) のフルの確認方法と解決方法
    <確認方法>
    1. 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/
    2. 確認した領域がフルになっていないかどうか OS 側から確認してください。

    <解決方法>
    アクティブ・ログ領域とアーカイブ・ログ領域の両方が枯渇している状況が確認できた場合、アーカイブ・ログ領域の枯渇に起因して、アクティブ・ログ領域からログをアーカイブ・ログ領域へアーカイブすることができなくなり、最終的にアクティブ・ログ領域が枯渇した可能性があります。
    対応方法として、まず、アーカイブ・ログ領域内のログ・ファイルを他の領域に移動し、アーカイブ・ログ領域に空きを確保してください。
    その結果、アクティブ・ログ領域内のアーカイブ・ログが、アーカイブ・ログ領域へ正常にアーカイブされる状態になり、アクティブ・ログ領域に空き容量が確保できるようになります。

    注:アクティブなデータベースについては、絶対にアクティブ・ログ領域内のファイルを削除しないでください。

関連情報
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"}]

Document Information

Modified date:
02 November 2023

UID

swg21504150