問合わせを実行する場合、システムは一時作業テーブルとして使用するスプール ファイルを自動的に作成し、削除します。スプール ファイルでは、以下の2つの潜在的な問題のうちいずれかが生じる場合があります。
- 残余スプール – 残余スプールは、クエリーの実行完了後にシステムがスプール ファイルを適切に削除できなかった場合に生じます。問合わせが使用したスプールは、セッションがなく停止しているように見えます。これにより、結果的にトランザクションをアボートするエラー2667が発生する場合があります。エラー2667が発生した場合、システムは問合わせを終了しますが、これは問合わせに問題があるからではなく、残余スプール問題が原因であることに注意してください。
- “Phantom”スプール – ファントム スプールは、DBC.DatabaseSpaceテーブルが現在の実際の領域使用状況を反映するように正しく更新されていない場合に起こります。
どちらのタイプのスプールの問題が生じているかをチェックするためには、システムが最も静止している時、およびログオンしているユーザー数が最も少ない時に以下の問合わせを実行します。
SELECT DATABASENAME, VPROC, CURRENTSPOOL FROM DBC.DISKSPACE WHERE DATABASENAME NOT IN (SEL USERNAME FROM DBC.SESSIONINFO) AND CURRENTSPOOL > 0 ORDER BY 1,2 WITH SUM(currentspool);
意図せずスプール領域の問題を生じた問合わせを実行したユーザーがこの問合わせの実行時にログオンした場合には、問合わせはユーザーを検出しません。これは、問合わせがスプール領域を所有しているがログオンしていないユーザーに対してスプールの使用状況を確認するためです。
リクエストで行が返される場合、次のいずれかを実行します。
- Update Spaceユーティリティを実行して、各データベースのDBC.DatabaseSpaceでスプール領域のアカウンティングを更新します。
- FixCurrentSpaceプロシージャを実行します。このプロシージャはUpdateSpaceユーティリティと同じ機能を実行します。詳細については、FixCurrentSpaceプロシージャを参照してください。
スプール領域の問題に関するサポートについては、Teradataサービスに連絡してください。