DB2 關於臨時表不足 報錯 1585 解決辦法

2021-09-24 23:10:56 字數 828 閱讀 2223

服務上產看錶空間:db2 list tablespaces show detail

通過sql命令:selcect *from syscat.tablespaces

1.問題描述

在生產上,**執行sql,是兩個表聯查的,可能字段比較多。導致查詢時候報錯-1585(但是有坑,因為把sql語句直接拿出來去在服務上執行,是通過的)

3.產生原因

**在開發,測試環境都已經執行過,可以通過。原因是在測試環境上有自己建立的臨時表空間,但是居然在生產上沒有,真的難受(據說是,資料庫是有dba專門維護的,我們沒有許可權建立。)

2.解決辦法

1)減少不必要的字段的查詢:

在以後寫sql時候盡量寫自己需要的字段,不需要的字段就不要寫了。然後盡量也不要寫select  * from table_name欄位全查尤其是在多表聯查的時候。(當然這個解決辦法,要該**,重新上線,還是比較麻煩的。)

2)建立乙個臨時表空間

一般出現這種問題,很可能在建庫時候,沒有建立自己的臨時表空間, 使用的是預設的臨時表空間。所以我們可以建立乙個大的臨時表空間:db2 "create system temporary tablespace 臨時表空間名 pagesize 32k managed by system using ('臨時表空間路徑') extentsize 64 prefetchsize 64 bufferpool bufferpool的名稱"(bufferpool的名稱,可以通過bufferpoolid select * from syscat.bufferpools; )

4.總結

在建庫時候如果覺得後續會需要,最好先建立乙個大一點的臨時表空間,以免後續的沒必要的問題產生

DB2之臨時表

db2支援session臨時表.該錶只能存在於某一session或某一交易上下文中,對其他使用者不可見.db2 v8增加了對臨時表的索引的支援,這對於提公升查詢速度比較有意義 下面舉例子來說明session臨時表的使用 1.在建立session臨時表前,您必須建立臨時表空間 create user ...

DB2建立臨時表時的錯誤

db2cmd下執行下面建立臨時表 declare global temporary table results recid varchar 32 xxly varchar 100 lxdh varchar 32 fkrq date on commit preserve rows with repla...

DB2報錯的整理

db221061e 未初始化環境行命令 解決 執行db2cmd,然後在新彈出的視窗輸入命令 sql1032n 未發出啟動資料庫管理器的命令 sqlstate 57019 解決 沒有啟動例項,執行db2start 其他情況 sql1052n 資料庫路徑 d data 不存在 情況說明 用db2 cre...