內容簡介
DB2資料庫是IBM公司關係型資料庫核心產品,在國內以及全球有著廣泛的套用。針對DB2初學者,本書循序漸進地把DB2所涉及的眾多概念介紹給大家。客戶端連通性、實例、資料庫、表空間和緩衝池、數據移動、備份恢復、故障診斷、鎖與並發,以及資料庫安全都是本書關注的重點。在介紹這些DB2對象和概念的同時,作者儘可能從DBA日常工作的角度探究DB2資料庫常規維護工作。本書同時還就表、索引、序列、觸發器等資料庫對象從套用設計的角度進行了介紹。
本書適合DB2的初學者、DB2開發人員、準備參加DB2認證考試的讀者以及DB2資料庫管理人員學習和閱讀。
編輯推薦
本書主要特色:◆ 本書有豐富的DB2運行維護實踐案例,讀者可以通過這些案例加深對DB2認識和理解。
◆ 面對眾多DB2的特點、特性,作者精心選擇了與DBA日常工作關係最密切的部分,由易入難逐步講解。
◆ 本書中包含了大量的提示點等,這些都是作者對DB2維護工作總結後得到的經驗。
◆ 本書總結了DB2常見問題總結和解決方法,對DBA的日常維護非常有參考價值。
資料庫管理人員、資料庫開發人員、系統維護人員、資料庫初學者及其他資料庫從業人員,也可以作為各大中專院校相關專業師生的參考用書和相培訓機構的培訓教材。
作者簡介
牛新莊博士(資料庫維護、最佳化和架構專家)擁有DB2 V5、V6、V7、V8和V9全部認證,同時他還擁有OCP、AIX、HP-UX、MQ、TSM和WebSphere等20多項國際認證。 牛新莊博士是IBM官方資深培訓講師(培訓DB2、AIX、MQ、WebSphere、TSM和CICS),是中信銀行、山東農信、青島海爾等公司的資深技術顧問,曾經幫助工農商建招交六大行、聯想集團、青島海爾、雲南紅塔、江蘇電力公司等國內很多企業做過問題診斷、性能調優和技術支持,具有豐富的理論和實踐結合經驗。2004年和2005年分別在上海北京成立諮詢顧問公司,2008年以年薪217萬被中國建設銀行總行外聘為資深技術專家。 牛新莊博士擁有的獎項有:國內資料庫領域最高榮譽的“2006年中國首屆傑出資料庫工程師”獎,首屆IBM傑出軟體專家獎,“2006年IT 168技術卓越”獎。
圖書目錄
第1章 DB2安裝配置1.1 DB2資料庫概述
1.1.1 DB2發展歷史
1.1.2 DB2版本和平台支持
1.1.3 DB2產品組件和功能
1.2 DB2資料庫安裝配置
1.2.1 DB2在Windows上的安裝
1.2.2 DB2在Linux/UNIX上的安裝
1.3 DB2資料庫體系結構
2.1 實例
2.1.1 實例概念
2.1.2 創建實例
2.1.3 實例目錄
2.1.4 實例相關命令
2.1.5 DB2INSTANCE變數介紹
2.1.6 刪除實例
2.1.7 配置實例
2.2 管理伺服器
2.2.1 管理伺服器概念
2.2.2 創建管理伺服器
2.2.3 管理伺服器相關命令
2.2.4 刪除DB2管理伺服器
2.2.5 配置管理伺服器
3.1 創建資料庫
3.1.1 DB2資料庫存儲模型
3.1.2 表空間管理類型
3.1.3 創建資料庫
3.1.4 資料庫目錄
3.2 表空間設計
3.2.1 創建表空間
3.2.2 表空間維護
3.2.3 表空間設計注意事項
3.2.4 prefechsize大小選擇
3.2.5 檔案系統(CIO/DIO)和裸設備
3.2.6 OVERHEAD和TRANSFERRATE設定
3.2.7 最佳化RAID設備上表空間性能
3.2.8 合理設定系統臨時表空間
3.3 緩衝池
3.3.1 緩衝池的使用方法
3.3.2 緩衝池和表空間之間關係
3.3.3 緩衝池維護
3.3.4 緩衝池設計原則
3.4 本章小結
4.1 訪問DB2
4.2 DB2圖形化操作環境
4.3 DB2 CLP處理程式
4.3.1 DB2 CLP簡介
4.3.2 DB2 CLP設計
4.3.3 DB2 CLP命令選項
4.3.4 設定DB2_CLPPROMPT定製DB2 CLP
4.4 配置DB2伺服器的TCP/IP通信
4.4.1 在伺服器上更新services檔案
4.4.2 在伺服器上更新資料庫管理器配置檔案
4.4.3 設定DB2伺服器的通信協定
4.4.4 查看伺服器通信連線埠狀態
4.4.5 使用控制中心配置DB2伺服器通信
4.5 配置客戶機至伺服器通信
4.5.1 客戶機至伺服器通信概述
4.5.2 使用控制中心配置客戶端通信
4.5.3 使用CA配置客戶機到伺服器通信
4.5.4 深入了解DB2節點目錄、資料庫目錄
4.5.5 使用CLP配置客戶機到伺服器通信案例
4.6 本章小結
5.1 模式
5.1.1 模式概念
5.1.2 系統模式
5.1.3 設定和獲得當前模式
5.1.4 模式和用戶的區別
5.2 表設計考慮
5.2.1 選擇合適的數據類型
5.2.2 選擇合適的約束類型
5.2.3 使用not null with default
5.2.4 生成列及套用案例
5.2.5 自動編號和標識列套用案例
5.2.6 使用not logged initially特性
5.2.7 使用append on特性
5.2.8 數據、索引和大對象分開存放
5.2.9 設定pctfree
5.2.10 表的locksize
5.2.11 表的volatile特性
5.2.12 創建帶XML列的表
5.2.13 表維護相關命令
5.2.14 表設計高級選項
5.3 索引設計
5.3.1 索引優點
5.3.2 索引類型
5.3.3 索引結構
5.3.4 理解索引訪問機制
5.3.5 創建集群索引
5.3.6 創建雙向索引
5.3.7 完全索引訪問(index access only)
5.3.8 創建索引示例
5.3.9 索引總結
5.4 使用序列提高性能
5.4.1 應用程式性能和序列
5.4.2 設計序列原則
5.4.3 序列維護
5.4.4 比較序列與標識列
5.5 視圖
5.5.1 視圖類型
5.5.2 創建with check option視圖
5.5.3 視圖維護
5.6 表表達式
5.6.1 嵌套的表表達式
5.6.2 公用表表達式
5.7 觸發器設計
5.7.1 觸發器的類型
5.7.2 創建觸發器示例
5.7.3 觸發器設計總結
5.8 本章小結
6.1 數據移動格式
6.1.1 定界ASCII檔案格式
6.1.2 非定界ASCII檔案格式
6.1.3 PC/IXF檔案格式
6.1.4 工作表檔案格式
6.1.5 游標
6.2 EXPORT
6.2.1 EXPORT概述
6.2.2 導出數據
6.2.3 導出數據示例
6.3 IMPORT
6.3.1 IMPORT概述
6.3.2 導入數據
6.3.3 導入數據示例
6.4 LOAD
6.4.1 LOAD概述
6.4.2 裝入數據
6.4.3 裝入示例
6.4.4 線上LOAD
6.4.5 監控LOAD進度
6.4.6 LOAD期間和之後的表空間狀態
6.4.7 使用CURSOR檔案類型來移動數據
6.4.8 提高LOAD性能
6.4.9 LOAD失敗恢復
6.4.10 LOAD和IMPORT比較
6.5 數據移動性能問題
6.6 DB2MOVE和DB2LOOK
6.6.1 資料庫移動工具——DB2MOVE
6.6.2 DB2 DDL提取工具(DB2LOOK)
6.6.3 利用DB2MOVE和DB2LOOK移動數據案例
6.6.4 帶COPY操作的DB2MOVE實用程式
6.7 本章小結
7.1 恢復概念
7.1.1 崩潰恢復
7.1.2 災難恢復
7.1.3 版本恢復
7.1.4 前滾恢復
7.2 DB2日誌
7.2.1 日誌檔案的使用
7.2.2 日誌類型
7.2.3 日誌相關配置參數
7.2.4 資料庫日誌總結
7.3 資料庫和表空間備份
7.3.1 資料庫備份
7.3.2 表空間備份
7.3.3 增量備份
7.3.4 檢查備份完整性——db2ckbkp
7.4 資料庫和表空間恢復
7.4.1 資料庫恢復
7.4.2 表空間恢復
7.4.3 增量恢復
7.4.4 增量恢復檢查-- db2ckrst
7.4.5 重定向恢復
7.4.6 恢復已drop的表
7.5 資料庫和表空間前滾
7.5.1 資料庫前滾
7.5.2 表空間前滾
7.6 RECOVER實用程式
7.7 恢復歷史檔案
7.8 資料庫重建
7.8.1 資料庫重建概念
7.8.2 使用表空間備份重建可恢複數據庫
7.8.3 只使用部分表空間備份重建可恢複數據庫
7.8.4 使用包含日誌檔案的線上備份重建資料庫
7.8.5 使用增量備份鏡像重建可恢複數據庫
7.8.6 使用重定向選項重建可恢複數據庫
7.8.7 重建不可恢複數據庫
7.8.8 資料庫重建的限制
7.9 監控備份、復原和恢復進度
7.10 備份、恢復和復原期間表空間狀態
7.11 最佳化備份、復原和恢復性能
7.12 備份恢復最佳實踐
8.1 DB2故障診斷機制
8.1.1 故障診斷相關檔案
8.1.2 收集故障診斷信息
8.1.3 設定故障診斷級別
8.2 深入講解故障診斷檔案
8.2.1 解釋管理通知日誌檔案條目
8.2.2 解釋診斷日誌檔案條目
8.3 故障診斷工具
8.3.1 使用db2support收集環境信息
8.3.2 db2ls和db2level
8.3.3 使用db2diag分析db2diag.log檔案
8.3.4 db2pd
8.3.5 DB2內部返回碼
8.4 故障診斷分析流程
8.4.1 故障診斷流程
8.4.2 結合系統事件判斷
8.4.3 結合系統運行狀況診斷
8.5 本章小結
9.1 監控工具概述
9.2 快照監視器
9.2.1 快照監視器概述
9.2.2 利用表函式監控
9.2.3 性能管理視圖
9.3 快照監視器案例
9.3.1 監控案例1-動態SQL語句
9.3.2 監控案例2-通過表函式監控
9.3.3 編寫快照監控腳本
9.4 db2pd及監控案例
9.5 事件監視器及監控案例
9.6 db2mtrk及監控案例
9.7 活動監視器
9.8 DB2性能監控總結
10.1 鎖的概念
10.1.1 數據一致性
10.1.2 事務和事務邊界
10.1.3 鎖的概念
10.2 鎖的屬性、策略及模式
10.2.1 鎖的屬性
10.2.2 加鎖策略
10.2.3 鎖的模式
10.2.4 如何獲取鎖
10.2.5 鎖的兼容性
10.3 隔離級別(Isolation Levels)
10.3.1 可重複讀(RR-Repeatable Read)
10.3.2 讀穩定性(RS-Read Stability)
10.3.3 游標穩定性(CS-Cursor Stability)
10.3.4 未提交讀(UR-uncommitted Read)
10.3.5 隔離級別的摘要
10.4 鎖轉換、鎖等待、鎖升級和死鎖
10.4.1 鎖轉換及調整案例
10.4.2 鎖升級及調整案例
10.4.3 鎖等待及調整案例
10.4.4 死鎖及調整案例
10.5 鎖相關的性能問題總結
10.6 鎖與應用程式設計
10.7 鎖監控工具
10.8 最大化並發性
10.8.1 選擇合適的隔離級別
10.8.2 儘量避免鎖等待、鎖升級和死鎖
10.8.3 設定合理的註冊變數
10.9 鎖和並發總結
11.1 統計信息更新
11.1.1 統計信息的重要性
11.1.2 使用RUNSTATS 收集統計信息的原則
11.1.3 減小RUNSTATS對系統性能影響的策略
11.1.4 DB2自動統計信息收集
11.2 Runstats更新舉例
11.2.1 RUNSTATS更新示例
11.2.2 收集分散式統計信息
11.2.3 包含頻率和分位數統計信息的RUNSTATS
11.2.4 包含列組統計信息的RUNSTATS
11.2.5 包含LIKE STATISTICS的RUNSTATS
11.2.6 包含統計信息配置檔案的RUNSTATS
11.2.7 帶有抽樣的RUNSTATS
11.2.8 帶有系統頁級抽樣的RUNSTATS
11.2.9 收集統計信息的其他可供選擇的方法
11.2.10 RUNSTATS總結
11.3 表和索引碎片整理
11.3.1 表重組(REORG)
11.3.2 索引重組
11.3.3 確定何時重組表和索引
11.3.4 重組表和索引的成本
11.3.5 合理設計以減少碎片生成
11.3.6 啟用表和索引的自動重組
11.4 碎片整理案例
11.4.1 執行表、索引檢查是否需要做REORG
11.4.2 表和索引碎片整理
11.5 案例:生成碎片檢查、統計信息更新、碎片整理和rebind腳本
11.6 重新綁定程式包
11.7 資料庫運行維護總結
12.1 解釋工具
12.1.1 Visual Explain(可視化解釋)
12.1.2 db2expln
12.1.3 db2exfmt
12.1.4 各種解釋工具比較
12.1.5 如何從解釋信息中獲取有價值的建議
12.2 索引設計工具(db2advis)
12.2.1 DB2 Design Advisor(db2advis)
12.2.2 DB2 Design Advisor(db2advis)案例講解
12.3 基準測試工具db2batch
12.3.1 db2batch
12.3.2 db2batch基準程式測試分析示例
12.4 數據一致性檢查工具
12.4.1 db2dart及案例
12.4.2 inspect及案例
12.5 db2look
12.5.1 db2look概述
12.5.2 利用db2look構建模擬測試資料庫
12.6 其他工具
12.6.1 db2bfd
12.6.2 db2_kill和db2nkill
12.6.3 db2tbst
12.7 本章小結
13.1 DB2安全機制概述
13.2 認證(authentication)
13.2.1 什麼時候進行DB2身份認證
13.2.2 DB2身份認證類型
13.3 許可權(authorization)
13.3.1 許可權層次
13.3.2 授予/撤銷實例級許可權
13.3.3 授予/撤銷資料庫級許可權
13.4 特權
13.4.1 特權層次結構
13.4.2 授予特權
13.4.3 撤銷特權
13.4.4 顯式特權/隱式特權/間接特權
13.4.5 靜態和動態SQL特權考慮因素
13.4.6 維護特權/許可權
13.5 某銀行安全規劃案例
13.6 執行安全審計(db2audit)
13.7 基於標籤的訪問控制(LBAC)及案例
13.8 本章小結
14.1 DB2健康檢查
14.1.1 查看是否有殭屍實例進程
14.1.2 inspect資料庫是否一致
14.1.3 查找診斷日誌判斷是否有異常
14.1.4 檢查資料庫備份完整性、日誌歸檔是否正常
14.1.5 維護實例目錄和資料庫目錄許可權
14.1.6 查看磁碟空間
14.2 資料庫監控
14.2.1 監控工具
14.2.2 監控緩衝池命中率
14.2.3 監控執行成本最高的SQL語句
14.2.4 監控運行最長的SQL語句
14.2.5 監控SQL準備和預編譯時間最長的SQL語句
14.2.6 監控執行次數最多的SQL語句
14.2.7 監控排序次數最多的SQL語句
14.2.8 監控引起鎖等待的SQL語句
14.3 日常維護
14.3.1 查找創建的新對象
14.3.2 查找無效對象
14.3.3 檢查表空間狀態
14.3.4 檢查表狀態
14.3.5 查找需要REORG的表和索引
14.3.6 查找需要RUNSTATS的表和索引
14.3.7 定期清理db2diag.log檔案
14.3.8 查找異常增長的表空間和表
15.1 實例常見問題和診斷案例
15.1.1 實例無法啟動問題總結
15.1.2 實例無法正常終止
15.1.3 實例啟動報SQL1042C錯誤
15.1.4 實例目錄誤刪除
15.1.5 實例崩潰問題
15.2 資料庫常見問題總結
15.2.1 資料庫日誌空間滿-- SQL0964C錯誤
15.2.2 資料庫時區和時間
15.2.3 中文亂碼和代碼頁轉換
15.2.4 通信錯誤-- SQL30081N
15.2.5 資料庫備份、前滾暫掛
15.2.6 資料庫活動日誌刪除
15.2.7 資料庫損壞(數據頁、索引頁)——SQL1043C
15.2.8 索引重新構建問題
15.2.9 DB2實用程式不可用
15.2.10 快速清空表數據
15.2.11 表和索引統計信息不一致
15.3 表空間狀態
15.3.1 Backup pending
15.3.2 脫機
15.3.3 Quiesced Exclusive|Share|Update 605
15.3.4 Restore Pending和Storage Must be Defined
15.3.5 Roll Forward Pending
15.3.6 表空間狀態總結
15.4 LOAD期間表狀態總結
15.4.1 Check Pending
15.4.2 Load Pending
15.4.3 Load in Progress
15.4.4 Not Load Restartable
15.4.5 Read Access Only
15.4.6 unavailable
15.5 鎖相關問題
15.5.1 鎖升級
15.5.2 鎖等待問題解決流程
15.5.3 死鎖
15.6 記憶體常見問題
15.6.1 bufferpool設定過大資料庫無法啟動
15.6.2 排序溢出
15.6.3 鎖記憶體不足
15.7 備份恢復常見問題
15.8 數據移動常見問題總結
15.8.1 標識列
15.8.2 生成列
15.8.3 大對象
15.8.4 空值處理
15.8.5 定界符注意問題
15.8.6 PC/IXF注意問題
15.8.7 代碼頁不同注意事項
15.8.8 日期格式
15.8.9 XML問題
15.9 安全常見問題總結
15.9.1 從PUBLIC撤銷隱式的許可權和特權
15.9.2 保護系統編目視圖
15.9.3 創建實例用戶顯式指定組
15.9.4 為SYSxxx_GROUP參數使用顯式值
15.9.5 跟蹤隱式的特權
15.9.6 不授予不必要的特權
15.9.7 使用加密的AUTHENTICATION模式
15.9.8 使用獨立ID創建和擁有對象
15.9.9 使用視圖控制數據訪問
15.9.10 使用存儲過程控制數據訪問
15.9.11 使用LBAC控制數據訪問
15.9.12 對重要敏感數據加密
15.10 SQL0805和SQL0818錯誤