db2中SQLCODE=-1585,SQLSTATE=54048報錯問題的解決

在db2創建庫時,出現以下報錯:

SQL 錯誤 [56098]: An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-1585", SQLSTATE "54048" and message tokens "54048".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.16.53
  An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-1585", SQLSTATE "54048" and message tokens "54048".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.16.53
  An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-1585", SQLSTATE "54048" and message tokens "54048".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.16.53

SQL 錯誤 [54048]: A system temporary table space with sufficient page size does not exist.. SQLCODE=-1585, SQLSTATE=54048, DRIVER=4.16.53
  A system temporary table space with sufficient page size does not exist.. SQLCODE=-1585, SQLSTATE=54048, DRIVER=4.16.53
  A system temporary table space with sufficient page size does not exist.. SQLCODE=-1585, SQLSTATE=54048, DRIVER=4.16.53
    An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-1585", SQLSTATE "54048" and message tokens "54048".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.16.53
    An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-1585", SQLSTATE "54048" and message tokens "54048".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.16.53

分析後可以看到報錯信息:SQLCODE "-1585", SQLSTATE "54048"

第一種:開始出現此報錯信息,通過搜索,得知是因爲沒有足夠臨時表空間,需要創一個比較大的臨時表空間,然後大多數方法是如下

CREATE BUFFERPOOL MYPOOL SIZE 500 PAGESIZE 32K;
CREATE TEMPORARY TABLESPACE TEMPSPACE2 PAGESIZE 32K MANAGED BY DATABASE USING(FILE 'stealth2/temp02' 128000) EXTENTSIZE 80 bufferpool MYPOOL;

我就想,既然是臨時表空間不夠,那麼可以直接將當前臨時表的空間增大,通過該篇博客,通過 db2 ‘alter bufferpool IBMDEFAULTBP immediate size 50000’,直接修改IBMDEFAULTBP的大小,然而經過修改後,並不能解決問題,還是繼續報錯。

最後還是按照第一種方法進行解決,通過修改後,得出符合個人的執行語句:

--創建緩存池
db2 "create bufferpool PAS_PB_32K size 100 pagesize 32k"

--可以通過以下語句查看所有緩衝池
db2 "select * from syscat.bufferpools"

--建立自己的臨時表空間
db2 'CREATE TEMPORARY TABLESPACE "TBS_SYSTMP_32" IN DATABASE PARTITION GROUP "IBMTEMPGROUP"  PAGESIZE 32K MANAGED BY SYSTEM  USING  ('D:/SoftWare/cspas/PAS_DATA/PAS_SPACE_TMP/SYSTMP32' ) EXTENTSIZE 32 PREFETCHSIZE 16  BUFFERPOOL "PAS_PB_32K" OVERHEAD 24.10 TRANSFERRATE 0.90  DROPPED TABLE RECOVERY OFF'

第二種:以上是通過命令行的方式進行的,當然也可以使用 Control Center 工具進行實現,通過電腦左下角所有程序 --> IBM DB2  -->  Control,通過管理員權限打開,出現以下界面

點擊確定後,可以通過左側菜單欄,選擇需要修改的數據庫

選擇好所要創建的數據庫後,首先先創建一個32的緩存池

因爲我之前已經創過,就直接把所需要的配置給列出來,需要注意的是緩衝池名,頁大小,以及頁數量,如下:

然後選擇表空間,創建一個新的表空間,主要的配置信息如下:

根據以上簡單配置,完成以後,再進行操作數據庫,就沒有問題了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章