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

DB2 目錄結構深度解析:實例、分區、資料庫、表空間容器層級關係

     編輯:DB2 教學

目錄層級架構總覽


<儲存路徑>/                    <-- CREATE DATABASE ON 指定或 DFTDBPATH
  <實例擁有者>/                 <-- 實例擁有者 ID (Windows 為實例名, 如 DB2)
    NODE/                 <-- 資料庫分區號 (非分區固定 NODE0000)
      SQL/               <-- 資料庫唯一目錄 (遞增: SQL00001, SQL00002...)
        SQLT.          <-- 表空間容器檔案 (tttt=表空間ID, c=容器編號)
        SQLTAG.NAM              <-- 表空間標籤檔 (元資料)
        SQLOGDIR/               <-- 日誌檔目錄
        DB2RHIST.ASC            <-- 歷史記錄檔 (備份/還原/負載記錄)
        DB2TSCHG.HIS            <-- 表空間變更歷史
        ...

各層級詳細解析

1. 實例擁有者目錄

  • Linux/Unix:實例擁有者用戶名 (如 db2inst1)。
  • Windows:實例名稱 (如 DB2),無真實用戶概念。
  • 同一實例下所有資料庫共享此層目錄。

2. 分區節點目錄 (NODExxxx)

  • 非分區資料庫 (EEE/DPF 未啟用):**固定 NODE0000**。
  • 分區資料庫:NODE,4 位數字,對應 db2nodes.cfg 定義 (如分區 43 → NODE0043)。
  • 每個分區獨立管理自己的資料庫目錄與容器。

3. 資料庫目錄 (SQLxxxxx)

  • 同一分區/路徑下建立多個資料庫時,遞增編號區分:SQL00001, SQL00002...。
  • 此目錄為**資料庫級根目錄**,包含該資料庫在該分區的所有物理檔案。

4. 表空間容器檔案 (SQLTtttt.c)

  • tttt:表空間 ID (SYSCAT.TABLESPACES.TBSPACEID),16 進位 4 位 (如 0 → 0000, 2 → 0002)。
  • c:容器編號 (0 起始)。
  • 預設映射:
    • SQLT0000.0 → SYSCATSPACE (系統目錄)
    • SQLT0001.0 → TEMPSPACE1 (系統臨時)
    • SQLT0002.0 → USERSPACE1 (使用者預設)
  • SMS 容器為**目錄**;DMS 容器為**檔案** (或裸裝置)。

5. 關鍵系統檔案

檔案用途
SQLTAG.NAM表空間標籤,記錄表空間 ID、名稱、類型、容器資訊。db2tbst 工具讀取。
SQLOGDIR/交易日誌檔 (SLOGxxxxxx.LOG、LOGCTL、LOGHEAD)。
DB2RHIST.ASC歷史記錄 (ASCII),LIST HISTORY 來源。
DB2TSCHG.HIS表空間變更歷史 (擴容/加容器/狀態變更)。

實務操作指令


-- 列出實例下所有資料庫 (含路徑)
db2 list db directory

-- 查看特定資料庫詳細路徑
db2 list db directory on /db2data

-- 檢視表空間容器對應關係
db2 list tablespaces show detail
db2 list tablespace containers for  show detail

遷移與備份啟示

  1. 資料庫層級備份/還原:操作 SQLxxxxx 目錄層級 (含所有表空間、日誌、歷史)。
  2. 表空間層級備份/還原:操作特定 SQLTtttt.c 容器檔案集合。
  3. 分區級獨立性:DPF 環境下,每個 NODExxxx 可獨立備份/還原/離線維護。
  4. 重新定位資料庫:RESTORE ... REDIRECT 修改容器路徑,本質上是改寫 SQLTAG.NAM 與容器檔案位置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved