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

DB2 SAMPLE 與 TOOLSDB 範例資料庫安裝全流程:從報錯 SQL1031N 到手動建庫驗證

     編輯:DB2 教學

全新安裝 DB2 後,嘗試連線 `SAMPLE` 與 `TOOLSDB` 卻雙雙報錯 `SQL1031N: The database directory cannot be found`。原因在於:DB2 安裝程式不再預設建立這兩個範例庫(自 9.7 起改為可選),需 DBA 手動觸發建立。本文記錄從現象排查到手動建庫、目錄驗證、連線測試的標準化操作手冊。

現場排查:為何找不到資料庫目錄?

實例擁有者家目錄(`/home/db2inst1`)下僅見 `sqllib`,缺少同名實例目錄(`db2inst1/`)。對比正常環境,正常應存在:

/home/db2inst1/
├── sqllib/          # 客戶端庫與配置
└── db2inst1/        # 實例級資料庫目錄(含 NODExxxx/ 下的 SAMPLE、TOOLSDB 等)

缺失 `db2inst1/` 目錄,證明範例庫從未建立。

標準建庫步驟(經驗證可直接用於自動化腳本)

1. 建立 SAMPLE 資料庫

[db2inst1@localhost ~]$ db2sampl
Creating database "SAMPLE"...
Connecting to database "SAMPLE"...
Creating tables and data in schema "DB2INST1"...
Creating tables with XML columns and XML data in schema "DB2INST1"...
'db2sampl' processing complete.

`db2sampl` 內部執行:`CREATE DATABASE SAMPLE` → 連線 → 執行 `sqllib/misc/db2sampl.ddl` 建表載數據。耗時 1~3 分鐘視磁碟速度。

2. 建立 TOOLSDB(任務中心/排程器元數據庫)

[db2inst1@localhost ~]$ db2 "CREATE TOOLS CATALOG SYSTOOLS CREATE NEW DATABASE TOOLSDB"
DB20000I  The CREATE TOOLS CATALOG command completed successfully.

此命令建立 `TOOLSDB` 並初始化 `SYSTOOLS` Schema 下的排程、健康監控、任務中心元表。

3. 目錄層級驗證

[db2inst1@localhost ~]$ cd db2inst1/NODE0000
[db2inst1@localhost NODE0000]$ ls
SAMPLE  SQL00001  SQL00002  sqldbdir  TOOLSDB

關鍵證據:`SAMPLE/`、`TOOLSDB/` 目錄出現,`sqldbdir` 為系統資料庫目錄檔,`SQL00001/2` 為系統表空間容器。

4. 連線功能測試

db2 => CONNECT TO SAMPLE
Database Connection Information
Database server        = DB2/Linux 9.7.1
SQL authorization ID   = DB2INST1
Local database alias   = SAMPLE

db2 => CONNECT RESET
DB20000I  The SQL DISCONNECT command completed successfully.

db2 => CONNECT TO TOOLSDB
Database Connection Information
Database server        = DB2/Linux 9.7.1
SQL authorization ID   = DB2INST1
Local database alias   = TOOLSDB

雙庫連線成功,安裝驗證通過。

常見坑點與避坑指南

  • 權限不足:須以實例擁有者(`db2inst1`)身份執行,非 root。
  • 環境變數未載入:執行前確認 `. /home/db2inst1/sqllib/db2profile` 已生效(或重新登入)。
  • 磁碟空間不足:`SAMPLE` 需 ~100MB,`TOOLSDB` ~50MB,`/home` 分區預留 > 1GB。
  • 編碼衝突:若實例 `CODEPAGE` 非 1208,`db2sampl` 可能報字符集不匹配;建議實例建立時指定 `DB2CODEPAGE=1208`。
  • 重複建立:若庫已存在,`db2sampl` 會報 `SQL1005N`;先 `DROP DATABASE SAMPLE` 再建,或改用 `db2sampl -force`(9.7+ 支援)。

自動化部署片段

#!/bin/bash
# install_sample_toolsdb.sh
su - db2inst1 -c "
  . ~/sqllib/db2profile
  db2sampl
  db2 \"CREATE TOOLS CATALOG SYSTOOLS CREATE NEW DATABASE TOOLSDB\"
  db2 connect to sample
  db2 connect reset
  db2 connect to toolsdb
  echo 'SAMPLE & TOOLSDB installed and verified.'
"

目錄結構與連線驗證截圖

結語:`SAMPLE` 是學習/測試/示範的標準資料集,`TOOLSDB` 則是排程任務、健康監控、自動維護的元數據中樞。將兩者建立納入「DB2 實例初始化標準作業程序(SOP)」,並以連線測試為驗收門檻,可避免後續開發、運維環境「找不到範例庫」的低級阻塞。

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