DB2的長欄位解決辦法

2022-02-02 12:57:16 字數 2100 閱讀 6421

**:

在db2中,有時候需要建立如下種類的表:

t_1(id varchar(50),data varchar(8000))

因此需要執行create table t_1(id varchar(50),data varchar(8000));

通常情況下,這個語句不會執行成功的.

如下:

c:\documents and settings\administrator>db2 create table t_1(id varchar(50),data varchar(8000))

db21034e  該命令被當作 sql

語句來處理,因為它不是有效的「命令列處理器」命令。在 sql 處理期間,它返回:

sql0286n  找不到頁大小至少為 "8192"、許可使用授權標識 "vm" 的預設表空間。

顧名思義,db2預設的頁大小是4k,這樣的表的字段太長,接近8k.一條記錄不能跨頁儲存.

所以我們需要建立乙個頁長為8k的表空間.

首先,建立8k的緩衝池:

create bufferpool ibmdefault8k immediate  size 5000 pagesize 8 k ;

然後,使用該緩衝池建立乙個表空間

create tablespace mytbs

in database partition group ibmdefaultgroup

pagesize 8k

managed by system

using

('d:\db2\mycontainer'

)extentsize 32

prefetchsize 16

bufferpool ibmdefault8k

overhead 24.10

transferrate 0.90

dropped table recovery off;

grant use of tablespace mytbs to public;

接下來執行

create table t_1(id varchar(50),data varchar(8000));

順利通過

在db2的clp環境下,可以進行正常的insert,select等操作,但是在jdbc環境下就不行了.

在eclipse的dbedit(也是通過jdbc)下執行select操作時候報:

[ibm][cli driver][db2/nt] sql1585n  不存在具有足夠頁大小的系統臨時表空間。  sqlstate=54048

dbedit.core.dataexception: unable to retrieve result values for vm.t_1

dbedit.core.dataexception: couldn't execute query:select "id","data" from "vm"."t_1"

com.ibm.db2.jdbc.db2exception: [ibm][cli driver][db2/nt] sql1585n  不存在具有足夠頁大小的系統臨時表空間。  sqlstate=54048

因此,需要再建立乙個系統臨時表空間才能讓db2 shut up.

create temporary tablespace mysystmp1

in database partition group ibmtempgroup

pagesize 8k

managed by system

using

('d:\db2\tttt'

)extentsize 32

prefetchsize 16

bufferpool ibmdefault8k

overhead 24.10

transferrate 0.90

dropped table recovery off;

終於,一切正常了.

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

服務上產看錶空間 db2 list tablespaces show detail 通過sql命令 selcect from syscat.tablespaces 1.問題描述 在生產上,執行sql,是兩個表聯查的,可能字段比較多。導致查詢時候報錯 1585 但是有坑,因為把sql語句直接拿出來去在...

DB2的字段型別

db2的字段型別如下 字段型別 描述字段長度及其預設值 char size 用於儲存定長 size 位元組的字串資料。每行定長 不足部分補為空格 最大長度為254位元組,預設值為每行1位元組。varchar size 用於儲存變長的字串資料。其中最大位元組長度由 size 指定。每行長度可變,最大長...

AIX上DB2資料庫日誌滿了的解決辦法

現象 aix上的db2資料庫,使用過程中,datagrip忽然提示日誌已滿,資料無法儲存。調查 由於dba不在,所以只能自己解決。先用連線用的賬號登入了,執行db2 get db cfg for dbname,發現沒有許可權。只好要來 instance的賬號密碼。su instname 取得設定內容...