Teradataでは、ユーザーDBCの下にスプールとして使用する十分な領域を確保することを強く推奨します。これには、固定領域を確保して未使用状態にしておくか、または空のデータベースを作成して領域を保持するかの2通りの方法があります。スプールに使用する領域をDBCの下に割り当てると、他のシステム ユーザーもその領域を使用できるという利点があります。ただし、この予約領域を保守することを忘れ、気づかずにその領域を他のユーザーやデータベースにPERM領域として割り当ててしまうというリスクもあります。問合わせの処理時にスプール領域が残されていないと、物理的なスプール不足条件を招くことになります。
代わりの方法として、データベースをDBC下に作成し、固定領域を割り当てて未使用状態にし、予約スプール領域を維持します。DBCに永久に未使用を前提とした領域を割り当てることにより、この物理領域がスプール用として確保されます。データベースを作成してスプール領域を確保する方法の利点は、領域が常に確保され、スプール用に使用できることです。
DBCのために領域を確保することが重要である理由の具体的な例には、システム テーブルによりスプール領域が使用されるという点があります。スプール制限は各ユーザーまたはプロファイルに対し割り当てられ、問合わせの処理時には、実際の領域がスプール用として使用可能でなければなりません。ただし、一時ジャーナルなどのシステム テーブルにより、DBC が利用可能な領域以上の領域を使用することがあります。そうした場合、システムは一時的に新規のログオンを禁止し、すべてのデータ定義言語SQL 文を拒否するようになります。ログオンとDDL文には、DBCテーブルへの行の追加が要求されるためです。
このような状況を避けるために、DBCに多くの領域を確保します。アクセス ロギングまたはデータベース問合わせロギングを使用している場合は、生成されるテーブルが大量の領域を使用するため、DBC内での領域確保がより一層必要になります。ロギング機能の領域の使用状況は頻繁かつ定期的に監視してください。
DBCに十分な領域を割り当てる以外に、行を消去したり、後でデータが必要になる場合には行をアーカイブして、定期的に古いテーブルをクリーン アップすることを忘れないでください。
スプール確保データベースを作成するためには、CREATE DATABASE文を実行依頼し、確保する領域の量をPERMパラメータとして指定します。
このデータベースでは、オブジェクトを作成したりデータを保管しないでください。確保データベースが空である限り、PERM割り当てをスプール領域として使用し続けられます。
例えば、DBADMINという管理ユーザーを作成したとします。制御下にあるこのユーザーの領域に、次のようにして、テーブルを含まないspool_Reserve という子データベースを作成することでスプール領域を確保できます 。
- DBCユーザーとしてデータベースにログオンします。
- 以下の文を実行依頼します。
CREATE DATABASE Spool_Reserve FROM DBADMIN AS PERM = n ;
nは、ユーザーが適切であると判断した特定の比率を表わすバイト数です。
- セッションを終了してログオフします。
システムでグローバル領域のアカウント処理を使用している場合は、スキューがゼロのスプール予約データベースを定義します。
スプール領域の割り当てを決定するときの詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>のスプール領域のサイジングを参照してください。固定領域の要件を決定するときの詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>の合計固定領域の要件の計算を参照してください。グローバルなソフト制限、SKEWオプション、グローバルな領域のアカウント処理の詳細については、グローバル領域のアカウント処理についてを参照してください。