no more extents
このエラーを見たことのある人はそれほど多くないと思います。
IBMのサポート情報メール ( My notification )に、このエラーが発生しやすい特定のケースについての解説が紹介されていました。
複数のDB領域から構成される、いわゆるフラグメント化された表から特定のパーティション(フラグメント)をデタッチする際に、その表に制約(Constraint)が複数定義されていると、このエラーが発生する可能性が高まるのだそうです。制約を定義すると、データベースサーバーはその制約に必要なインデックス(例えば一意制約ならば、いわゆる Unique Index.. など )があらかじめユーザーによって作られていないか調べ、なければ、必要なインデックスを自動的に生成します。ユーザーが作成するインデックスと違い、システムが自動生成するインデックスはCREATE DATABASE文で指定したDB領域に配置されます。DETACH操作などで、このインデックスを作成しなおすような状況で、この種のインデックスが複数ある、すなわち制約が複数定義されていると、それぞれのインデックスのエクステントが互い違いに配置され、結果としてエクステント数が無駄に増えてしまう、という結果になるようです。エクステントが無駄に増えてしまう状況は、表とインデックスを同じDB領域に作成し、かつその時にエクステントサイズをデフォルトのまま(サイズを何も指定しない)にしておいて、データのロード(挿入)を延々繰り返したりすると再現できます。
My Notificationメールでは、純粋な障害情報だけではなく、運用中に問題発生の原因となりやすい、今回のような注意事項や、問題発生時の対処方法など、有用な情報が多数紹介されています。以前は、My Supportという名前で運営されていましたが、最近機能拡張とともに、現在の名前に変更されています。
こちらから購読の設定ができます。例によってIBMIDが必要ですが、お勧めです。
関連記事