在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的緩存池
因爲我之前已經創過,就直接把所需要的配置給列出來,需要注意的是緩衝池名,頁大小,以及頁數量,如下:
然後選擇表空間,創建一個新的表空間,主要的配置信息如下:
根據以上簡單配置,完成以後,再進行操作數據庫,就沒有問題了。