內 容 簡 介
數據庫內核是數據庫系統穩定運行的心臟,DB2數據庫內部結構龐大而復雜。本書從DB2進程和內部線程結構入手,介紹代理程序工作機制、內存體系結構、存儲體系結構等。在此基礎上詳解了DB2數據庫的高級功能,包括數據分區、高級壓縮功能、安全特性等,并系統地介紹了OLTP和OLAP系統的設計方案和管理技術、高可用和容災方案以及集群技術,其中包含了HADR、DPF和pureScale技術,以及同城雙活GDPC(地理上分離的pureScale集群)技術。還介紹了DB2各種監控和診斷方法,通過精選的診斷案例使讀者在學習知識的同時積累了實踐經驗。在新的一版中,所有的內容、示例都基于DB2 V10.5版本進行了修訂。
本書適合具有一定DB2基礎知識和經驗的數據庫工程師,非常適合希望能了解DB2的內部結構、提高各種故障的診斷和調優的能力、想成為資深DB2數據庫工程師的讀者。
主要特色
◆ 本書揭示了DB2數據庫的內部結構,詳解了DB2數據庫的高級功能,針對不同場景分別介紹系統設計,并結合多年的實踐經驗,精選了大量的實踐案例。
◆ 新增了DB2 pureScale相關內容,包括同城雙活集群GDPC(地理上分離的pureScale集群)的實踐。
◆ 全書所有內容和案例都基于DB2 V10.5版本進行了修訂。
牛新莊博士,現任中國民生銀行信息科技部總經理,長期致力于銀行業信息科技建設和管理工作。
作為國內*的數據庫資深專家,曾先后為建設銀行、中信銀行、交通銀行、廣東農信、青島海爾等大型企業提供數據庫顧問服務,為各行業的IT人才提供技術培訓,在《程序員》雜志開辟數據庫欄,為從業者答疑解惑,廣泛地推動了國內數據庫技術的發展和信息技術的傳播。
作為國內信息科技領域的領軍人物,積極推進移動互聯、分布式、大數據、區塊鏈等新技術領域創新,傾力打造滿足業務飛速發展的信息系統。
他還任浙江大學、武漢大學、對外經貿大學、北京交通大學等多家
高校和科研機構的兼職教授,并擔任銀監會信息科技發展與風險管理專家、中國工程建設標準化協會信息通信專業委員會專家、中國DB2用戶協會CDUG理事長、IBM信息管理客戶顧問委員會主席、中央企業網絡安全與信息化服務共享聯盟智庫首批專家等職務。
此外,擁有OCP、AIX、DB2、HP-UX、MQ、CICS和WebSphere等二十多項國際認證,獲得過國內數據庫領域*高榮譽的“中國首屆杰出數據庫工程師”獎、首屆IBM杰出軟件專家獎、“IT 168技術卓越”獎等獎項,以及“中國杰出CIO”等榮譽稱號。
第1章 DB2體系結構 1
1.1 DB2 進程體系結構 1
1.1.1 DB2進程技術模型 2
1.1.2 與操作系統相關的進程 3
1.1.3 與實例相關的進程和線程 5
1.1.4 與數據庫相關的進程和線程 6
1.1.5 與應用程序相關的進程 9
1.1.6 監控EDU運行的SQL語句 10
1.1.7 收集進程/線程堆棧信息 12
1.2 代理程序通信 13
1.2.1 代理程序概述 13
1.2.2 代理程序相關配置參數 13
1.2.3 應用程序、代理程序和事務 16
1.2.4 代理和連接的常見問題與優化 17
1.3 實用程序相關進程 21
1.3.1 LOAD相關進程 21
1.3.2 備份/恢復相關進程 26
1.4 DB2內存體系結構 29
1.4.1 實例共享內存 30
1.4.2 數據庫共享內存 31
1.4.3 應用程序共享內存 36
1.4.4 代理私有內存 38
1.4.5 代理程序與應用程序之間通信時的內存 40
1.4.6 共享內存與私有內存 40
1.5 內存集、內存池和內存塊 42
1.5.1 實例級內存集 43
1.5.2 跟蹤內存使用 46
1.5.3 定位內存泄漏 48
1.5.4 數據庫級內存集 49
1.6 內存自動調優 51
1.7 內存案例分析 53
1.8 DB2存儲內部結構 55
1.8.1 DB2存儲層次結構 55
1.8.2 表空間存儲結構 57
1.8.3 SMS表空間的存儲結構 57
1.8.4 DMS表空間的頭部信息 57
1.8.5 DMS表空間映射 58
1.8.6 表空間的高水位標記 59
1.8.7 RID格式 59
1.8.8 索引葉的內部結構 60
1.9 數據庫物理設計 61
1.9.1 表空間容器的放置原則 61
1.9.2 數據庫物理設計原則 61
1.10 數據庫邏輯設計 62
1.10.1 緩沖池設計原則 62
1.10.2 表空間設計原則 67
1.10.3 索引設計原則 77
1.11 本章小結 79
第2章 DB2表的高級特性 81
2.1 表分區 81
2.1.1 定義 81
2.1.2 優點 82
2.1.3 分區表的基本用法 83
2.1.4 分區表的管理 96
2.1.5 分區重組 103
2.1.6 分區表detach的常見問題 104
2.2 多維群集(MDC)及應用
案例 107
2.2.1 創建MDC表 107
2.2.2 MDC測試案例 108
2.2.3 MDC考慮 110
2.3 表分區和多維集群表的使用 110
2.4 物化查詢表及應用案例 114
2.4.1 物化查詢表(MQT) 114
2.4.2 MQT總結 117
2.5 MDC、數據庫分區、MQT和
表分區配合使用 118
2.6 行壓縮 129
2.6.1 概念 129
2.6.2 啟用或禁用表的壓縮功能 131
2.6.3 創建數據字典 133
2.6.4 評估壓縮空間 135
2.6.5 檢查壓縮狀態 135
2.6.6 行壓縮應用案例 136
2.6.7 索引壓縮及應用案例 145
2.7 本章小結 148
第3章 數據庫安全 149
3.1 DB2安全機制概述 150
3.2 認證(authentication) 152
3.2.1 什么時候進行DB2身份
認證 152
3.2.2 DB2身份認證類型 153
3.3 權限(authorization) 158
3.3.1 權限層次 158
3.3.2 實例級權限 159
3.3.3 數據庫級權限 164
3.4 特權(privilege) 167
3.4.1 特權層次結構 167
3.4.2 授予特權 170
3.4.3 撤銷特權 172
3.4.4 顯式特權/隱式特權/間接
特權 174
3.4.5 靜態和動態SQL特權考慮
因素 177
3.4.6 維護特權/權限 179
3.5 某銀行安全規劃案例 181
3.6 執行安全審計(db2audit) 183
3.6.1 實例級審計 183
3.6.2 數據庫級審計 188
3.7 基于標簽的訪問控制(LBAC)
及案例 191
3.8 本章小結 198
第4章 OLTP系統設計與管理 199
4.1 基礎環境設計 199
4.1.1 硬件環境設計 200
4.1.2 操作系統設計 200
4.1.3 實例和數據庫參數設置 200
4.2 物理結構設計 202
4.2.1 DB2頁大小的選擇 202
4.2.2 表空間類型的選擇 203
4.2.3 頁大小、表大小和表空間
大小 203
4.2.4 表空間參數的設置 203
4.2.5 數據庫BUFFERPOOL的創建
設置 205
4.3 數據庫對象的設計原則 206
4.3.1 表相關的設計原則 206
4.3.2 性能相關的設計原則 213
4.4 代碼開發的基本原則 215
4.4.1 命名規范 215
4.4.2 書寫規范 216
4.4.3 開發規范 216
4.5 本章小結 221
第5章 OLAP系統設計與管理 223
5.1 DB2 DPF多分區基本架構和
相關概念 224
5.1.1 DB2 DPF基本架構 224
5.1.2 DB2 DPF數據的分布鍵
以及數據傾斜問題 224
5.1.3 DB2 DPF數據庫的
并行I/O 226
5.1.4 DB2 DPF數據庫的擴展性 227
5.2 DB2 DPF多分區應用 228
5.3 OLAP高性能設計:DPF + TP +
MDC 231
5.4 配置DB2 DPF多分區環境 233
5.4.1 DB2 DPF安裝準備 233
5.4.2 DB2 DPF環境搭建 235
5.4.3 創建表空間和緩沖池 238
5.5 DB2 DPF運維操作實踐 239
5.5.1 DB2 DPF分區節點的擴展
和刪除實踐 239
5.5.2 DB2 DPF數據均衡實踐 240
5.5.3 load copy yes以及相應的
前滾方法 242
5.5.4 多分區load失敗處理 245
5.6 OLAP系統設計與應用開發
最佳實踐 247
5.6.1 表的設計最佳實踐 247
5.6.2 數據訪問方式最佳實踐 248
5.6.3 復制表的定義 249
5.7 DB2列組織表 250
5.7.1 DB2列組織表介紹 250
5.7.2 DB2列組織表應用場景和
環境配置 251
5.7.3 創建列組織表 253
5.7.4 向列組織表裝入(LOAD)
數據 255
5.7.5 列組織表的訪問計劃 256
5.8 本章小結 257
第6章 高可用與災備 259
6.1 HADR的設計理念 260
6.1.1 什么是高可用性 260
6.1.2 HADR的原理 261
6.1.3 HADR的日志處理模式 262
6.1.4 HADR的限制 264
6.2 HADR典型場景的搭建 265
6.2.1 對基礎環境的要求 265
6.2.2 HADR的配置參數 265
6.2.3 復制PRIMARY數據庫 267
6.2.4 啟動STANDBY 267
6.2.5 啟動PRIMARY 268
6.3 HADR的維護 268
6.3.1 監控HADR 268
6.3.2 HADR的切換方式 273
6.3.3 切換后對應用產生的影響 273
6.3.4 HADR狀態 274
6.3.5 HADR異常狀態的處理 275
6.4 HADR性能調優 275
6.4.1 接收緩沖 275
6.4.2 網絡相關 276
6.4.3 內部參數 276
6.4.4 表和表空間的調整 276
6.5 HADR高可用案例分享 277
6.5.1 HADR結合PowerHA 277
6.5.2 HADR結合TSA 282
第7章 DB2集群與同城雙活 287
7.1 DB2集群介紹 288
7.2 DB2集群的搭建 289
7.2.1 系統物理架構 289
7.2.2 系統環境準備 291
7.2.3 配置共享存儲 291
7.2.4 配置IOCP 292
7.2.5 配置RoCE萬兆網絡環境 293
7.2.6 檢查文件系統的空間 296
7.2.7 配置時鐘同步服務 296
7.2.8 配置用戶名和用戶組 299
7.2.9 配置用戶限制 299
7.2.10 配置集群互信 300
7.2.11 執行安裝檢查 301
7.2.12 安裝DB2 pureScale軟件 302
7.2.13 安裝DB2許可 303
7.2.14 創建實例 304
7.2.15 配置實例 305
7.2.16 創建GPFS文件系統 307
7.2.17 創建數據庫 307
7.3 DB2集群的維護 307
7.3.1 實例的啟停 307
7.3.2 集群的管理 308
7.3.3 故障處理 313
7.4 DB2集群設計調優 315
7.4.1 使用小的pagesize 316
7.4.2 使用大的extentsize 316
7.4.3 使用lob inline方法 316
7.4.4 使用大的pctfree設置 316
7.4.5 巧用CURRENT MEMBER 316
7.4.6 巧用隨機索引 317
7.5 同城雙活集群介紹 318
7.6 DB2集群異地容災 320
7.6.1 DB2集群異地容災架構 320
7.6.2 Replay Member概念 320
7.6.3 DB2集群異地容災同步
模式 321
7.6.4 DB2集群異地容災切換
方式 322
7.6.5 DB2集群異地容災客戶端
連接方式 322
7.6.6 DB2集群異地容災架構的
高可用性 323
7.6.7 DB2集群異地容災特性 323
7.7 本章小結 323
第8章 DB2高級監控 325
8.1 利用表函數監控 325
8.2 監控指標和案例 329
8.2.1 一些常用的監控指標和
語句 329
8.2.2 編寫腳本以獲取監控信息 335
8.3 db2pd及監控案例 337
8.3.1 db2pd概述 337
8.3.2 db2pd監控案例 337
8.4 事件監視器及監控案例 349
8.4.1 事件監視器的創建方法和
步驟 350
8.4.2 事件監控器案例 351
8.4.3 編寫腳本從事件監控器中
獲取監控信息 354
8.5 db2mtrk及監控案例 356
8.6 本章小結 358
第9章 DB2故障診斷 359
9.1 DB2故障診斷機制 359
9.1.1 故障診斷相關文件 359
9.1.2 設置故障診斷級別 368
9.2 深入講解故障診斷文件 373
9.2.1 解釋管理通知日志文件
條目 373
9.2.2 解釋診斷日志文件條目 375
9.3 故障診斷工具 377
9.3.1 使用db2support收集環境
信息 377
9.3.2 db2ls和db2level 378
9.3.3 使用db2diag分析
db2diag.log文件 380
9.3.4 db2pd和db2trc 383
9.3.5 DB2內部返回碼 385
9.4 故障診斷分析流程 387
9.4.1 故障診斷流程 387
9.4.2 結合系統事件判斷 390
9.4.3 結合系統運行狀況診斷 390
9.5 案例分析 391
9.6 本章小結 395
第10章 DB2案例精選 397
10.1 實例常見問題和診斷案例 397
10.1.1 實例無法啟動問題總結 397
10.1.2 實例無法正常終止 398
10.1.3 實例目錄誤刪除 398
10.1.4 實例崩潰問題 399
10.2 數據庫常見問題總結 399
10.2.1 數據庫日志空間滿
SQL0964C錯誤 399
10.2.2 數據庫時區和時間 400
10.2.3 中文亂碼和代碼頁轉換 401
10.2.4 通信錯誤SQL30081N 401
10.2.5 數據庫備份、前滾暫掛 402
10.2.6 數據庫活動日志刪除 402
10.2.7 數據庫損壞(數據頁、
索引頁)SQL1043C 403
10.2.8 索引重新構建問題 405
10.2.9 DB2實用程序不可用 405
10.2.10 快速清空表數據 406
10.2.11 表和索引統計信息
不一致 407
10.3 表空間狀態 407
10.3.1 backup pending 408
10.3.2 脫機(offline and not
accessible) 409
10.3.3 quiesced exclusive | share |
update 409
10.3.4 restore pending和storage
must be defined 410
10.3.5 rollforward pending 410
10.3.6 表空間狀態總結 411
10.4 LOAD期間表狀態總結 411
10.4.1 check pending 411
10.4.2 load pending 412
10.4.3 load in progress 412
10.4.4 not load restartable 413
10.4.5 read access only 414
10.4.6 unavailable 414
10.5 鎖相關問題 415
10.5.1 鎖升級 415
10.5.2 鎖等待問題解決流程 415
10.5.3 死鎖 415
10.6 CPU常見問題 416
10.7 內存常見問題 416
10.7.1 bufferpool設置過大,
導致數據庫無法啟動 416
10.7.2 排序溢出 416
10.7.3 鎖內存不足 417
10.8 latch問題導致系統性能
急劇下降 417
10.9 備份恢復常見問題 417
10.10 數據移動常見問題總結 418
10.10.1 標識列 419
10.10.2 生成列 422
10.10.3 大對象 426
10.10.4 空值處理 427
10.10.5 定界符注意問題 430
10.10.6 PC/IXF注意問題 433
10.10.7 代碼頁不同注意事項 435
10.10.8 日期格式 436
10.10.9 XML問題 438
10.11 安全常見問題總結 441
10.11.1 從PUBLIC撤銷隱式的
權限和特權 441
10.11.2 保護系統編目視圖 443
10.11.3 創建實例用戶并顯式
指定組 444
10.11.4 為SYSxxx_GROUP參數
使用顯式值 444
10.11.5 跟蹤隱式特權 445
10.11.6 不授予不必要的特權 446
10.11.7 使用加密的
AUTHENTICATION
模式 446
10.11.8 使用獨立ID創建和
擁有對象 448
10.11.9 使用視圖控制數據
訪問 449
10.11.10 使用存儲過程控制數據
訪問 450
10.11.11 使用LBAC控制數據
訪問 451
10.11.12 對重要敏感數據進行
加密 451
10.12 SQL0805和SQL0818
錯誤 454