目錄層級架構總覽
<儲存路徑>/ <-- 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
遷移與備份啟示
- 資料庫層級備份/還原:操作
SQLxxxxx 目錄層級 (含所有表空間、日誌、歷史)。
- 表空間層級備份/還原:操作特定
SQLTtttt.c 容器檔案集合。
- 分區級獨立性:DPF 環境下,每個
NODExxxx 可獨立備份/還原/離線維護。
- 重新定位資料庫:
RESTORE ... REDIRECT 修改容器路徑,本質上是改寫 SQLTAG.NAM 與容器檔案位置。