環境參數
- OS:AIX
- DB2 版本:V8.1
- 實例用戶:
db2inst1
- 應用用戶:
easymis
完整建立腳本
# 1. 設定碼頁
db2set db2codepage=819
# 2. 建立資料庫
db2 "CREATE DATABASE easytest ON /home/db2inst1"
# 3. 連線
db2 "CONNECT TO test04 USER db2inst1 USING db2"
# 4. 建立多頁面緩衝池
db2 "CREATE BUFFERPOOL USER8 SIZE 100000 PAGESIZE 8K"
db2 "CREATE BUFFERPOOL USER16 SIZE 1000 PAGESIZE 16K"
db2 "CREATE BUFFERPOOL USER32 SIZE 1000 PAGESIZE 32K"
# 5. 重啟實例生效緩衝池
db2stop force
db2start
# 6. 重新連線
db2 "CONNECT TO test04 USER db2inst1 USING db2"
# 7. 建立 SMS 正規表空間(對應三種頁面)
db2 "CREATE REGULAR TABLESPACE TS_USER8 PAGESIZE 8K MANAGED BY SYSTEM USING ('FSMS_8K_1') BUFFERPOOL USER8"
db2 "CREATE REGULAR TABLESPACE TS_USER16 PAGESIZE 16K MANAGED BY SYSTEM USING ('FSMS_16K_1') BUFFERPOOL USER16"
db2 "CREATE REGULAR TABLESPACE TS_USER32 PAGESIZE 32K MANAGED BY SYSTEM USING ('FSMS_32K_1') BUFFERPOOL USER32"
# 8. 建立暫存表空間
db2 "CREATE BUFFERPOOL TMPBUF8 SIZE 10000 PAGESIZE 8K"
db2 "CREATE TEMPORARY TABLESPACE TempTS_USER8 PAGESIZE 8K MANAGED BY SYSTEM USING ('/home/db2inst1/db2inst1/TEMPNODE0004') EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL TMPBUF8 DROPPED TABLE RECOVERY OFF"
# 9. 授權應用用戶
db2 "GRANT DBADM,CREATETAB,BINDADD,CONNECT,LOAD ON DATABASE TO USER EASYMIS"
db2 "GRANT USE OF TABLESPACE TS_USER8 TO EASYMIS"
db2 "GRANT USE OF TABLESPACE TS_USER16 TO EASYMIS"
db2 "GRANT USE OF TABLESPACE TS_USER32 TO EASYMIS"
# 10. 切換應用用戶執行 DDL
db2 "CONNECT TO test04 USER easymis USING easymis"
db2 -f dbstruct.sql > kk.log
關鍵說明
PAGESIZE 必須與緩衝池一致,否則建立失敗
- SMS 容器目錄需預先建立且實例用戶可寫
- 臨時表空間參數
EXTENTSIZE/PREFETCHSIZE/OVERHEAD/TRANSFERRATE 依磁碟特性調整
DROPPED TABLE RECOVERY OFF 關閉表恢復功能,節省空間
常見錯誤
| 錯誤碼 | 原因 | 解決 |
| SQL1476N | 緩衝池頁面大小不匹配 | 確認 BUFFERPOOL PAGESIZE = TABLESPACE PAGESIZE |
| SQL1052N | 容器路徑不存在或權限不足 | mkdir -p 目錄並 chown db2inst1:db2iadm1 |
| SQL0286N | 預設表空間不存在 | 確認 USER TEMPORARY TABLESPACE 已建立 |