首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

UNIX 環境下 DB2 手動安裝完整實戰指南:從用戶建立到客戶端連線驗證

     編輯:DB2 教學

前言

生產環境常需手動安裝 DB2 (非圖形化安裝器),以實現標準化、自動化、無人值守部署。本文詳細記錄 UNIX/Linux 環境下 DB2 手動安裝的完整 8 步驟:安裝程式、用戶/群組、實例、共享庫、環境變數、服務埠、建庫、客戶端配置。

一、前置條件

  • 作業系統:AIX / Linux (RHEL/SLES) / Solaris / HP-UX
  • Root 權限
  • DB2 安裝媒體已掛載/解壓 (如 /mnt/db2 或 /opt/ibm/db2/V11.5)
  • 關閉防火牆/SELinux 或預開放通訊埠

二、步驟 1:執行安裝程式


cd /mnt/db2
./db2_install
# 互動式選擇:
# 1. 接受授權條款
# 2. 選擇產品類型 (ESE/WESE/AE/Client)
# 3. 確認安裝路徑 (預設 /opt/ibm/db2/V11.5)
# 4. 選擇語言支援
# 5. 開始安裝...

無人值守模式: ./db2_install -n -p ESE -l zh_TW -b /opt/ibm/db2/V11.5

三、步驟 2:建立實例擁有者與受保護用戶


# 建立群組
groupadd -g 999 db2iadm1    # 實例擁有者主群組
groupadd -g 998 db2fadm1    # 受保護用戶群組 (Fenced UDF/SP)
groupadd -g 997 dasadm1     # DAS 管理用戶群組

# 建立用戶
useradd -g db2iadm1 -m -d /home/db2inst1 -s /bin/ksh -c "DB2 Instance Owner" db2inst1
useradd -g db2fadm1 -m -d /home/db2fenc1 -s /bin/ksh -c "DB2 Fenced User" db2fenc1
useradd -g dasadm1 -m -d /home/dasusr1 -s /bin/ksh -c "DAS Admin User" dasusr1

# 設定密碼 (生產環境必須設定強密碼)
passwd db2inst1
passwd db2fenc1
passwd dasusr1

用戶角色對照:

用戶角色用途
db2inst1Instance Owner擁有實例所有資源、執行 db2start/stop、建立資料庫
db2fenc1Fenced User執行 Fenced UDF/預存程序、隔離主引擎進程
dasusr1DAS AdminDB2 Administration Server 管理、圖形化工具遠端管理

四、步驟 3:建立實例


# 3.1 建立 DAS (DB2 Administration Server)
/opt/ibm/db2/V11.5/instance/dascrt -u dasusr1

# 3.2 建立 DB2 實例
/opt/ibm/db2/V11.5/instance/db2icrt -u db2fenc1 db2inst1

# 可選參數:
# -a SERVER_ENCRYPT  # 認證模式:SERVER_ENCRYPT/KERBEROS/GSSPLUGIN
# -p 50000           # 預設通訊埠 (稍後可修改)
# -s ese             # 伺服器類型: ese/wse/client

五、步驟 4:建立共享庫鏈接


/opt/ibm/db2/V11.5/cfg/db2ln
# 將 DB2 共享庫鏈接至系統庫路徑 (/usr/lib, /lib 等)
# 確保應用程式、驅動程式能動態載入 DB2 CLI/ODBC 庫

六、步驟 5:設定實例環境變數


# 切換至實例擁有者
su - db2inst1

# 設定關鍵登錄變數
db2set DB2AUTOSTART=YES      # 隨作業系統自動啟動
db2set DB2COMM=TCPIP         # 啟用 TCP/IP 通訊協定
db2set DB2CODEPAGE=1208      # UTF-8 編碼 (視應用需求)
db2set DB2_COMPATIBILITY_VECTOR=ORA  # Oracle 相容性向量 (遷移專案建議)

# 驗證
db2set -all

七、步驟 6:配置服務埠與管理器參數


# 進入 DB2 命令列
db2

# 更新資料庫管理器配置
UPDATE DATABASE MANAGER CONFIGURATION USING SVCENAME db2c_db2inst1
# 或指定埠號
UPDATE DATABASE MANAGER CONFIGURATION USING SVCENAME 50000

# 驗證配置
GET DATABASE MANAGER CONFIGURATION
# 關鍵輸出:TCP/IP Service name = db2c_db2inst1 (或 50000)

/etc/services 對應項 (建議手動添加):


db2c_db2inst1  50000/tcp  # DB2 Instance db2inst1
db2c_db2inst1_1 50001/tcp # 命令集中器 (可選)
db2c_db2inst1_2 50002/tcp # 僅限連線 (可選)
db2c_db2inst1_END 50003/tcp # 結束埠 (可選)

八、步驟 7:建立資料庫


# 簡單建庫 (自動儲存管理)
db2 "CREATE DATABASE PRODDB AUTOMATIC STORAGE YES ON /db2data DBPATH ON /db2dbpath USING CODESET UTF-8 TERRITORY TW COLLATE USING SYSTEM"

# 進階建庫 (手動表空間、緩衝池、日誌配置)
# 參考 db2 "CREATE DATABASE ..." 完整語法

九、步驟 8:客戶端連線配置與驗證

伺服器端驗證


db2start
db2 "CONNECT TO PRODDB"
db2 "SELECT * FROM SYSCAT.TABLES FETCH FIRST 3 ROWS ONLY"

遠端客戶端配置 (另一台機器)


# 1. 登錄遠端節點
db2 "CATALOG TCPIP NODE REMOTE_NODE REMOTE server_hostname SERVER 50000"

# 2. 登錄資料庫別名
db2 "CATALOG DATABASE PRODDB AS PRODDB AT NODE REMOTE_NODE"

# 3. 測試連線
db2 "CONNECT TO PRODDB USER db2inst1 USING password"
db2 "SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1"

ODBC/CLI 配置 (db2cli.ini)


[PRODDB]
Database=PRODDB
Protocol=TCPIP
Hostname=server_hostname
ServiceName=50000
UID=db2inst1
PWD=password
AutoCommit=1

十、安裝後驗證清單

  1. [ ] db2level 顯示正確版本與修補包
  2. [ ] db2ilist 列出 db2inst1
  3. [ ] db2 get dbm cfg | grep SVCENAME 顯示正確埠
  4. [ ] netstat -an | grep 50000 顯示 LISTEN 狀態
  5. [ ] 本地 db2 connect to PRODDB 成功
  6. [ ] 遠端客戶端 db2 connect to PRODDB 成功
  7. [ ] db2licm -l 顯示有效授權

十一、常見安裝失敗排查

現象原因解決
db2icrt 失敗:用戶不存在群組/用戶建立失敗或 GID/UID 衝突檢查 /etc/passwd、/etc/group,手動清理重建
db2start 失敗:SQL10007N共享記憶體不足、核心參數未調優調整 kernel.shmmax, kernel.shmall, semmsl 等
遠端連線失敗:SQL30081N防火牆、埠號錯誤、主機名解析、SVCENAME 不匹配telnet host 50000、檢查 /etc/hosts、/etc/services、dbm cfg
中文亂碼CODEPAGE/LOCALE 不匹配設定 DB2CODEPAGE=1208、LANG=zh_TW.UTF-8

結語

手動安裝 DB2 的核心價值在於可重複、可版控、可自動化。將上述 8 步驟封裝為 Shell/Ansible/Terraform 腳本,納入基礎設施即代碼 (IaC) 體系,才能實現資料庫基礎設施的標準化交付與生命週期管理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved