DB2 執行SQL報錯: DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048
你建的db2數據庫沒有建足夠大的臨時表空間,新建一個足夠大的臨時表空間
1.創建數據庫
db2 "create database testdb automatic storage yes on /dbauto dbpath on /database using codeset UTF-8 territory cn collate using system"
dbpath on 表示數據庫目錄 using codeset XXXX terriory XXX 指定數據庫編碼集和區域
1.1顯示實例下創建的數據庫
db2 list db directory
2.數據庫連接
db2 connect to testdb
3.創建緩沖池
db2 "create bufferpool bp32k size 10000 pagesize 32k" size表示頁數,pagesize表示頁大小,size*pagesize就是緩沖池的內存大小
4.創建數據庫管理(DMS)的數據表空間
db2 "create large tablespace tbs_data pagesize 32k managed by database using (file '/data1/tbs_data/cont0' 100M, file '/data1/tbs_data/cont1' 100M) extentsize 32 prefetchsize automatic bufferpool bp32k no file system caching"
5.創建系統管理(SMS)的臨時表空間
db2 "create temporary tablespace tbs_temp pagesize 32k mamaged by system using ('/data1/tbs_temp') bufferpool bp32k"
using 指定表空間的容器,SMS支持的容器類型只是目錄
6.創建(SMS)管理的用戶臨時表空間
db2 "create user temporary tablespace tbs_user_temp pagesize 32k managed by system using ('/data1/tbs_usertemp') bufferpool bp32k"
7.創建自動存儲管理(Automatic Storage)的表空間
7.1 db2 "create tablespace tbs_index pagesize 32k bufferpool bp32k"
7.2 db2 "create tablespace tbs_data2 initialsize 100M increasesize 100M maxsize 1000G"
只有建庫時啟用了automatic storage yes,表空間才支持自動存儲管理
8.顯示每個表空間核心信息
db2 list tablespaces
8.1顯示指定表空間相關信息
db2 list tablespace containers for <tablespace_id> show detail
8.2比list tablespaces更詳細的顯示表空間信息
db2 get snapshot for tablespaces on <db_name>
9.顯示表空間的配置信息,使用情況和容器信息
db2pd -d <db_name> tablespaces
10.表空間容器的更改
10.1alter tablespace <db_name> add/drop/extend/reduce/resize
//add和drop操作,表空間會發生數據重新平衡(rebalance),對於reduce和resize操作,需要確保更改后的表空間容器有足夠的空間,否則db2會拒絕該操作。
10.2alter tablespace <db_name> begin new stripe set
//begin new stripe set 選項是當已有容器使用完后,再使用新增加的容器,該選項不會在容器間做Rebalance ,不會對系統造成性能影響,但它會造成數據偏移。
使用方法:db2 "db2 alter tablespace data_ts2 add(file '/data1/ts2/cont2' 50G)"
10.3db2 alter database db_name add storage on db_path3
//對於自動存儲管理的表空間,無法在表空間級進行容器更改,只能在數據庫級別,因為自動存儲路徑是在建庫時指定的。可以使用add storage on 選項為數據庫添加新的存儲路徑。
建庫腳本:
DB2安裝默認用戶: db2inst1 db2iadm1 第一步新建用戶,添加至DB2用戶,並切換至新建用戶 ---------------------------------------------------------------------------------- [root@localhost ~]# useradd -g db2iadm1 -u 1017 -d /usr/slsadmin -m slsadmin [root@localhost ~]# passwd slsadmin [root@localhost ~]# ####slsadmin789 [root@localhost ~]# cd /opt/ibm/db2/V10.5/instance/ [root@localhost instance]# ./db2icrt -u slsadmin slsadmin [root@localhost instance]# su - slsadmin ------------------------------------------------------------------------------------ 設置環境配置,允許遠程TCP/IP訪問。此處數字為端口號,需要用vi去etc/services中查找此用戶的最小的端口號 ------------------------------------------------------------------------------------ [slsadmin@localhost ~]$ db2 update dbm cfg using SVCENAME 60012 [slsadmin@localhost ~]$ db2set DB2COMM=TCPIP [slsadmin@localhost ~]$ db2 ---------------------------------------------------------------------------------- 啟動db2命令窗 ---------------------------------------------------------------------------------- db2 => db2start db2 => create db faldb using codeset GBK territory CN db2 => list db directory db2 => connect to faldb --db2 => CREATE SCHEMA "hbreport" AUTHORIZATION "hbreport" --size表示頁數,pagesize表示頁大小,size*pagesize就是緩沖池的內存大小 db2 => create bufferpool poolname immediate size 10000 pagesize 32k --創建數據庫管理(DMS)的數據表空間 db2 => create tablespace faldb pagesize 32k managed by system using ('/usr/slsadmin/NODE0000/sqlt0003.0') bufferpool poolname db2 => create temporary tablespace faldb_temp pagesize 32k managed by system using ('/usr/slsadmin/NODE0000/faldb_temp') bufferpool poolname db2 => commit work db2 => connect reset db2 => terminate 執行建庫SQL語句 ---------------------------------------------------------------------------------- [slsadmin@localhost ~]$ db2 -tvf /home/WGJ/faldb20160215.sql [slsadmin@localhost ~]$ db2move faldb import -u slsadmin -p slsadmin789 一定要關閉防火牆! 導出數據庫 ---------------------------------------------------------------------------------- [slsadmin@localhost ~]$ db2look -d faldb -e -a -x -i slsadmin -w slsadmin789 -0 faldb20160215.sql #導出數據庫結構 [slsadmin@localhost ~]$ db2move faldb export -u slsadmin -p slsadmin789 #導出數據庫數據