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

DB2 日常運維實戰指南(三):表狀態監控、連接管理、日誌故障與誤刪表恢復

     編輯:DB2 教學

快速定位無索引表

查詢系統視圖 `syscat.tables` 與 `syscat.indexes` 即可列出無索引表:

db2 select tabname from syscat.tables 
where tabname not in (select tabname from syscat.indexes)

示例輸出顯示 SAMPLE 資料庫中 354 張無索引表(如 ABC、DEPT、EMP 等),為索引優化提供靶向清單。

捕捉全表掃描熱點表

利用 `db2pd -db <dbname> -tcbstats` 監控表掃描統計。輸出分兩部分:

  • TCB Table Information:列出發生過全表掃描的表名(`TableName` 欄位)
  • TCB Table Stats:`Scans` 欄位顯示掃描次數

結合動態 SQL 快照,可針對高頻全掃表精準調整索引。

徹底斷開用戶連接的進階技巧

`FORCE APPLICATIONS ALL` 無法阻斷命令發出後的新連接。針對 B/S 架構,常規做法是先關閉應用服務器(如 WAS),再多次執行 FORCE。**更徹底的方案:僅對外開放資料庫別名(Alias),而非真實資料庫名。**

操作步驟

  1. 服務端編目別名:`db2 catalog db sample as abc`
  2. 客戶端僅使用別名連接
  3. 維護窗口:停應用服務 → 多次 FORCE → `db2 uncatalog db abc` 取消別名 → 單用戶操作完成 → 重新編目別名恢復服務

此法可有效阻斷繞過應用服務器的直接連接嘗試。

結果集建表與單引號轉義

  • 建表:`create table newtest1 as (select * from test1) definition only` 僅複製結構,不複製數據。
  • 單引號:INSERT 時雙單引號表示單引號,如 `values (11, ''單引'', '')` 實際存入 `'單引'`。

備份歷史文件損壞(SQL2048N rc=5)修復流程

錯誤提示 `db2rhist.asc` 損壞。修復三步走:

  1. 進入 `NODE000x/SQL000x` 目錄,移走 `db2rhist.asc` 及 `db2rhist.bak`;
  2. 重新執行備份命令,DB2 會嘗試用 `.bak` 重建 `.asc`(仍報錯但自動重建);
  3. 再次執行備份,應可成功。

若 `.bak` 也損壞,第一步同時移走兩文件,DB2 將自動生成全新歷史文件(歷史記錄將丟失)。

SQL0101N「語句過長或過複雜」應對

編譯複雜 SQL(多表、多觸發器)耗盡資源時拋出。優先檢查遞歸觸發器,再調整配置參數:

  • 增大 `stmtheap`(語句堆)
  • 增大 `applheapsz`(應用程序堆,預設 4KB)
  • 增大 `pckcachesz`(包緩存,預設 4KB)

誤刪除表(DROP TABLE)恢復完整流程

**前提**:誤刪前資料庫已處於歸檔日誌模式(`logretain`/`userexit` 或 V9 `logarchmeth1`),且表所在表空間啟用「允許已廢棄的表可恢復」(`ALTER TABLESPACE ... DROPPED TABLE RECOVERY ON`)。

六步恢復法

  1. 確認歸檔模式與表空間屬性;
  2. `list history dropped table all for <db>` 獲取 `tableid` 與 DDL;
  3. 用誤刪前的全備映像恢復資料庫;
  4. 前滾時加選項:`recover dropped table <tableid> to <target_dir>`(目錄將建 `../NODE000X/data` 存放數據);
  5. 用第 2 步 DDL 重建表;
  6. 將 `target_dir` 數據導入新表。

實戰演示片段

-- 修改 SAMPLE 為歸檔模式
db2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 DISK:C:\DB2\IMMEDIATE
db2 FORCE APPLICATIONS ALL
db2 BACKUP DB SAMPLE  -- 首次歸檔模式需全備,備份時間戳 20080405000129

後續誤刪表即可按上述流程恢復。

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