Question & Answer
Question
SQL ステートメントの実行が SQL1585N でエラー終了します。原因と解決策を教えてください。
SQL1585N ページ・サイズに互換性のある SYSTEM TEMPORARY 表スペースが存在しないため、一時表を作成できませんでした。
Cause
TEMPORARY 表スペースには、ソートや結合などの操作を実行する際にデータベース・マネージャーが必要とする一時データが保持されます。結果セットを処理するために追加のスペースが必要になるためです。
SQL1585N は、次のいずれかの原因が考えられます。
SQL1585N は、次のいずれかの原因が考えられます。
- SYSTEM TEMPORARY 表スペースがオフラインになっている。
- 生成されるシステム一時表の行の長さが、現在「正常」状態になっている SYSTEM TEMPORARY 表スペースに最大ページ・サイズで収容できる長さを上回っている。
- システム一時表に必要な列数が、 データベース内で最大の SYSTEM TEMPORARY 表スペースに適用できる制限を超えた。
Answer
1) MON_GET_TABLESPACE 表関数を使用して、必要なページ・サイズを持つ TEMPORARY 表スペースが存在するか確認します。
※TBSP_CONTENT_TYPE=SYSTEMP が SYSTEM TEMPORARY 表スペースです。
以下の例では、 データベースに一つだけ SYSTEM TEMPORARY スペースがが定義されており、その表スペース (TEMPSPACE1) のページ・サイズは 8KB です。
出力例:
32K SYSTEM TEMPORARY 表スペースを作成する例:
SQL と XML の制限
表 9. データベース・マネージャーのページ・サイズ固有の制限値
3) 必要なページ・サイズを持つ表スペースが存在する場合は、MON_GET_TABLESPACE 表関数の TBSP_STATE 列で正常 (NORMAL) 状態かどうか判別します。
運用上の考慮点
パスポート・アドバンテージによく寄せられる質問
SQL1585N
MON_GET_TABLESPACE 表関数 - 表スペース・メトリックの取得
表スペースの状態
ソート・パフォーマンスのチューニング
お問合せ先
技術的な内容に関して、サービス契約のもと IBM サービス・ラインにお問い合わせください。
IBM サービス・ライン
※TBSP_CONTENT_TYPE=SYSTEMP が SYSTEM TEMPORARY 表スペースです。
以下の例では、 データベースに一つだけ SYSTEM TEMPORARY スペースがが定義されており、その表スペース (TEMPSPACE1) のページ・サイズは 8KB です。
出力例:
- 該当のデータベースへ接続します。
db2 connect to sample
- 以下の SQL を実行して表スペースのリストを確認します。
db2 "select varchar(TBSP_NAME,20)as TBSP_NAME, TBSP_ID, TBSP_CONTENT_TYPE, TBSP_PAGE_SIZE, varchar(TBSP_STATE,30) as TBSP_STATE from table(MON_GET_TABLESPACE(null, null)) as t" TBSP_NAME TBSP_ID TBSP_CONTENT_TYPE TBSP_PAGE_SIZE TBSP_STATE ---------------- ------- ----------------- -------------- ---------- SYSCATSPACE 0 ANY 8192 NORMAL TEMPSPACE1 1 SYSTEMP 8192 NORMAL USERSPACE1 2 LARGE 8192 NORMAL IBMDB2SAMPLEREL 3 LARGE 8192 NORMAL SYSTOOLSPACE 4 LARGE 8192 NORMAL 5 record(s) selected.
32K SYSTEM TEMPORARY 表スペースを作成する例:
- (データベースに存在しない場合) 32K ページ・サイズのバッファープールを作成します。
db2 create bufferpool <新規バッファープール名> pagesize 32K - 32K ページ・サイズの SYSTEM TEMPORARY 表スペースを作成します。
db2 "CREATE SYSTEM TEMPORARY TABLESPACE <一時表スペース名> PAGESIZE 32K BUFFERPOOL <バッファープール名>"
- 例
db2 create bufferpool bp32K pagesize 32K db2 create system temporary tablespace temp32K pagesize 32K bufferpool bp32K
SQL と XML の制限
表 9. データベース・マネージャーのページ・サイズ固有の制限値
説明 | 4K ページ・サイズの制限値 | 8K ページ・サイズの制限値 | 16K ページ・サイズの制限値 | 32K ページ・サイズの制限値 |
選択リスト内のエレメントの最大数 |
5004
|
1012
|
1012
|
1012
|
GROUP BY 節中の列の最大数 |
500
|
1012
|
1012
|
1012
|
GROUP BY 節中の列の合計長の最大値 (バイト単位) |
4005
|
8101
|
16,293
|
32,677
|
3) 必要なページ・サイズを持つ表スペースが存在する場合は、MON_GET_TABLESPACE 表関数の TBSP_STATE 列で正常 (NORMAL) 状態かどうか判別します。
- 表スペースが正常 (NORMAL) ではない場合、表スペースを「正常」状態に移行します。例えば、表スペースをドロップして再作成します。
- 表スペースが正常 (NORMAL) の場合、上記の制限値を超えているため、より大きなページ・サイズの SYSTEM TEMPORARY 表スペース を作成するか、制限値を超えないように SQL の修正が必要です。
運用上の考慮点
- 必要な一時表スペース領域を見積もる方法はありません。一時表を使用している SQL を特定するには以下の FAQ を参照ください。
[Db2] 一時表を使用している SQL やコマンドを特定する方法 - ソートや結合などの操作はアクセス・プランに依存しますが、SQL のコンパイルで SQL1585N が発生している場合は、アクセス・プランを取得できないことがあります。その場合は SQL を分割して describe コマンドを実行することで、目安となる SQL の列数と列の合計長を確認できます。
実行例:- 該当のデータベースへ接続します。
db2 connect to <データベース名>
- 以下の describe を実行して SQL の列数と列の合計長を確認します。
db2 describe output "<select-statement>"
DESCRIBE コマンド
- 該当のデータベースへ接続します。
- 以下のバージョンの特定のフィックス・パック・レベルでは以下の障害が報告されていますのでご注意ください。
IT21735 (V11.1) : QUERY MAY FAIL WITH SQL1585N LOOKING FOR A 4K TEMP TABLESPACE DESPITE OTHER TEMP SPACES ARE AVAILABLE
IC95482 (V10.5) : AN OUTER JOIN ON A UNION ALL VIEW MIGHT RESULT IN SQL1585N ERROR
IC96830 (V10.5) : QUERIES USING ORDER BY CLAUSE MAY FAIL WITH SQL1585N ON THE HADR STANDBY SERVER(READS ON STANDBY ENABLED)
パスポート・アドバンテージによく寄せられる質問
SQL1585N
MON_GET_TABLESPACE 表関数 - 表スペース・メトリックの取得
表スペースの状態
ソート・パフォーマンスのチューニング
お問合せ先
技術的な内容に関して、サービス契約のもと IBM サービス・ラインにお問い合わせください。
IBM サービス・ライン
[{"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"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
14 April 2022
UID
swg22013508