描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302481171
本书适合具有一定DB2基础知识和经验的数据库工程师,非常适合希望能了解DB2的内部结构、提高各种故障的诊断和调优的能力、想成为资深DB2数据库工程师的读者。
第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
自1999年左右我开始从事数据库有关的技术工作到现在已近20年时间,此期间信息科技飞速发展,从无纸化办公和数据大集中到移动互联和大数据、人工智能、云计算等信息技术改变了生活,并颠覆了传统商业模式。信息科技的发展离不开数据处理技术的进步,在这一轮信息化浪潮中,数据处理技术也发生了翻天覆地的变化,对企业经营发展和对外服务的意义越来越重要。一方面,传统企业级数据库的能力,在原有的道路和方向上不断地持续提升演进,以满足企业市场不断迸发的各类需求。另一方面,互联网场景孕育的各种新兴的数据处理技术亦不断涌现,例如NewSQL、NoSQL、Hadoop等大数据处理技术,这些技术成为传统数据库产品的必然补充,同时也对传统数据库产品产生了一定的冲击。但是以我长期从事企业数据处理相关工作的经验看,在企业级市场尤其是金融企业市场里面,传统数据库产品的能力依然是解决企业主要业务需求的不二选择。因此,传统数据库技术的研究和应用仍然是信息科技工作的重点。
近年来传统数据库产品在不断改进升级,以支持更快的处理能力和更高的可用性,满足不同场景下的用户需求。DB2作为一款主流数据库产品,在这些方面也都进步明显,例如Purescale集群技术、跨数据中心的GDPC技术、列存储的BLU技术等创新功能就表现不俗,满足了特定业务场景需求,给企业带来了很大的价值提升。特别是GDPC技术,帮助企业搭建关键业务系统同城对等全双活生产架构,为终用户提供高等级容灾的连续服务,对企业对外服务的提升意义非凡,也使数据库从业者们领略了DB2产品创新的精华。
基于DB2产品的演进以及近些年的思考和实践,我重新梳理了之前编写的第2版的3本DB2系列技术图书,对其进行了大篇幅的修改和重写,力图对近些年实践的精华和DB2产品的新趋势进行总结。在此奉献给各位数据库从业的同仁,在技术的路上共勉。
由于本人水平有限,时间有限,书中不免有这样或者那样的错误,希望广大读者朋友不吝赐教指正!
后,感谢我的家人和同事在本书重写过程中的帮助,谢谢你们!
牛新庄
评论
还没有评论。