第1章 DB2介绍和安装 1
1.1DB2数据库概述 1
1.1.1DB2发展历史 1
1.1.2B2版本和平台支持 5
1.1.3DB2产品组件和功能 9
1.2DB2数据库的安装与配置 12
1.2.1DB2在Windows上的安装 13
1.2.2DB2在Linux/UNIX上的安装 21
1.3DB2数据库的体系结构 23
第2章 创建实例和管理服务器 31
2.1实例 31
2.1.1实例的概念 31
2.1.2创建实例 32
2.1.3实例目录 35
2.1.4实例的相关命令 39
2.1.5DB2INSTANCE变量介绍 44
2.1.6删除实例 45
2.1.7配置实例 45
2.2管理服务器 46
2.2.1管理服务器的概念 46
2.2.2创建管理服务器 47
2.2.3管理服务器的相关命令 49
2.2.4删除管理服务器 49
2.2.5配置管理服务器 50
第3章 创建数据库和表空间 51
3.1创建数据库 51
3.1.1DB2数据库存储模型 53
3.1.2表空间管理类型 55
3.1.3创建数据库 58
3.1.4数据库目录 70
3.2设计表空间 73
3.2.1创建表空间 73
3.2.2维护表空间 76
3.2.3表空间设计注意事项 83
3.2.4prefechsize大小选择 89
3.2.5文件系统(CIO/DIO)和裸设备 90
3.2.6设置OVERHEAD和TRANSFERRATE 93
3.2.7优化RAID设备上表空间的性能 93
3.2.8合理设置系统临时表空间 95
3.3缓冲池 96
3.3.1缓冲池的使用方法 97
3.3.2缓冲池和表空间之间的关系 97
3.3.3维护缓冲池 98
3.3.4缓冲池的设计原则 101
3.4DB2 V10新特性——多温度存储器 104
3.4.1存储器组 104
3.4.2表空间与存储器组 108
3.5本章小结 109
第4章 访问数据库 111
4.1访问DB2 111
4.2DB2图形化操作环境 112
4.3DB2 CLP处理程序 121
4.3.1DB2 CLP简介 121
4.3.2DB2 CLP设计 122
4.3.3DB2 CLP命令选项 124
4.3.4设置DB2 CLPPROMPT以定制DB2 CLP 127
4.4配置DB2服务器的TCP/IP通信 131
4.4.1在服务器上更新services文件 132
4.4.2在服务器上更新数据库管理器配置文件 133
4.4.3设置DB2服务器的通信协议 134
4.4.4查看服务器通信端口的状态 134
4.4.5使用控制中心配置DB2服务器通信 134
4.5配置客户机至服务器通信 135
4.5.1客户机至服务器通信概述 135
4.5.2使用控制中心配置客户端通信 136
4.5.3使用CA配置客户机到服务器通信 137
4.5.4深入了解DB2节点目录、数据库目录 142
4.5.5使用CLP配置客户机到服务器通信的案例 148
4.6实际生产中连接数据库的各种方式 152
4.7案例:数据库连接问题诊断 155
4.8本章小结 159
第5章 创建数据库对象 161
5.1模式 161
5.1.1模式的概念 161
5.1.2系统模式 163
5.1.3设置和获得当前模式 163
5.1.4模式和用户的区别 164
5.2表设计 165
5.2.1选择合适的数据类型 165
5.2.2选择合适的约束类型 168
5.2.3使用not null with default 171
5.2.4生成列及应用案例 171
5.2.5自动编号和标识列应用案例 172
5.2.6使用not logged initiay特性 173
5.2.7使用append on特性 174
5.2.8数据、索引和大对象分开存放 175
5.2.9设置pctee 175
5.2.10表的locksize 176
5.2.11表的volatile特性 176
5.2.12表维护相关命令 177
5.2.13表设计高级选项 181
5.3索引设计 187
5.3.1索引的优点 187
5.3.2索引类型 188
5.3.3索引结构 191
5.3.4理解索引的访问机制 193
5.3.5创建集群索引 196
5.3.6创建双向索引 197
5.3.7完全索引访问(index access only) 198
5.3.8创建索引示例 199
5.3.9索引总结 205
5.4使用序列提高性能 207
5.4.1应用程序性能和序列 207
5.4.2序列的设计原则 208
5.4.3维护序列 209
5.4.4比较序列与标识列 213
5.5视图 215
5.5.1视图的类型 215
5.5.2创建with check opon视图 219
5.5.3维护视图 220
5.6表表达式 221
5.6.1嵌套的表表达式 221
5.6.2公用表表达式 221
5.7触发器设计 223
5.7.1触发器的类型 223
5.7.2触发器创建示例 225
5.7.3触发器设计总结 227
5.8例程 228
5.9本章小结 229
第6章 数据移动 231
6.1数据移动格式 231
6.1.1定界ASCII文件格式 232
6.1.2非定界ASCII文件格式 232
6.1.3PC/IXF文件格式 233
6.1.4工作表文件格式 233
6.1.5游标 233
6.2EXPORT 234
6.2.1EXPORT概述 234
6.2.2导出数据 234
6.2.3导出数据示例 237
6.3IMPORT 238
6.3.1IMPORT概述 238
6.3.2导入数据 238
6.3.3导入示例 244
6.4LOAD 246
6.4.1LOAD概述 246
6.4.2装入数据 247
6.4.3装入示例 255
6.4.4在线LOAD 259
6.4.5监控LOAD进度 262
6.4.6LOAD期间和之后的表空间状态 263
6.4.7使用CURSOR文件类型移动数据 266
6.4.8提高LOAD性能 267
6.4.9LOAD失败恢复 272
6.4.10LOAD和IMPORT的比较 275
6.5数据移动的性能问题 276
6.6db2move和db2look 277
6.6.1数据库移动工具——b2move 278
6.6.2DB2 DDL提取工具——db2look 280
6.6.3利用db2move和db2look移动数据的案例 280
6.6.4带COPY操作的db2move实用程序 284
6.7本章小结 289
第7章 数据库备份与恢复 291
7.1恢复的概念 291
7.1.1崩溃恢复(Crash Recovery) 295
7.1.2灾难恢复(Disaster Recove) 296
7.1.3版本恢复(Version Restore) 296
7.1.4前滚恢复(RollForward Recove) 297
7.2DB2日志 299
7.2.1日志文件的使用 300
7.2.2日志类型 302
7.2.3日志相关配置参数 305
7.2.4数据库日志总结 306
7.2.5DB2日志的建议设置 308
7.3数据库和表空间备份 310
7.3.1数据库备份 310
7.3.2表空间备份 312
7.3.3增量备份 312
7.3.4检查备份完整性——db2ckbkp 314
7.4数据库和表空间恢复 316
7.4.1数据库恢复 316
7.4.2表空间恢复 318
7.4.3增量恢复 321
7.4.4增量恢复检查——db2ckrst 322
7.4.5重定向恢复 322
7.4.6恢复已删除的表 325
7.5数据库和表空间前滚 329
7.5.1数据库前滚 329
7.5.2表空间前滚 331
7.6RECOVER实用程序 334
7.7恢复历史文件 338
7.8数据库重建 341
7.8.1数据库重建的概念 341
7.8.2使用表空间备份重建可恢复数据库 341
7.8.3只使用部分表空间备份重建可恢复数据库 344
7.8.4使用包含日志文件的在线备份重建数据库 346
7.8.5使用增量备份映像重建可恢复数据库 346
7.8.6使用重定向选项重建可恢复数据库 347
7.8.7重建不可恢复数据库 348
7.8.8数据库重建的限制 348
7.9监控备份、复原和恢复进度 349
7.10备份、恢复和复原期间的表空间状态 350
7.11优化备份、复原和恢复性能 350
7.12备份恢复最佳实践 352
第8章 SQL基础知识 355
8.1简单查询入门 355
8.1.1SELECT和FROM 356
8.1.2WHERE 356
8.1.3ORDER BY 356
8.1.4GROUP BY和HAVING 357
8.2搜索条件 358
8.2.1谓词种类 358
8.2.2基本谓词 358
8.2.3量化谓词 359
8.2.4BETWEEN、EXISTS和谓词 360
8.2.5LIKE谓词 360
8.2.6NULL谓词 361
8.3数据操作语言 361
8.3.1SERT 361
8.3.2DELETE 362
8.3.3UPDATE 363
8.3.4MERGE 364
8.4多表查询 366
8.4.1JOIN连接 366
8.4.2集合运算 367
8.5高性能的SQL语句 369
8.5.1高效SQL的准则 369
8.5.2提高插入性能的准则 371
8.5.3复杂查询的准则 372
8.5.4索引的注意事项 373
8.6本章小结 374
第9章 DB2基本监控方法 375
9.1监控工具概述 375
9.2快照监视器 377
9.3利用表函数监控 382
9.4性能管理视图及案例 385
9.5快照监视器案例 391
9.5.1监控案例1——动态SQL语句 391
9.5.2监控案例2——通过表函数监控 393
9.5.3编写快照监控脚本 395
9.5.4db2pd及监控案例 396
9.5.5事件监视器及监控案例 403
9.5.6db2mtrk及监控案例 407
9.6本章小结 410
第10章 运行数据库必须考虑的数据库设置 411
10.1数据库配置参数概述 411
10.2通信设置 413
10.3内存有关的设置 415
10.4锁有关的设置 421
10.5日志相关的配置 426
10.6自动维护相关的配置 431
10.7监控相关的配置 432
10.8安全相关的设置 434
10.9供参考的DB2上线前设置 434
10.10本章小结 437
第11章 DBA日常运行维护 439
11.1统计信息更新 439
11.1.1统计信息的重要性 440
11.1.2减小RUNSTATS对系统性能影响的策略 447
11.1.3DB2自动统计信息收集 448
11.2统计信息更新案例分析 451
11.2.1RUNSTATS更新示例 451
11.2.2收集分布式统计信息 452
11.2.3包含频率和分位数统计信息的RUNSTATS 453
11.2.4包含列组统计信息的RUNSTATS 455
11.2.5包含LIKE STATISTICS的RUNSTATS 455
11.2.6包含统计信息配置文件的RUNSTATS 456
11.2.7带有抽样的RUNSTATS 456
11.2.8带有系统页级抽样的RUNSTATS 457
11.2.9收集统计信息的其他可供选择的方法 458
11.2.10RUNSTATS总结 459
11.3碎片整理 459
11.3.1表重组(REORG) 460
11.3.2索引重组 468
11.3.3重组表和索引的成本 474
11.3.4合理设计以减少碎片生成 475
11.3.5启用表和索引的自动重组 476
11.4碎片整理案例分析 477
11.4.1执行表、索引检查是否需要做REORG 477
11.4.2表和索引碎片整理 478
11.5案例:生成碎片检查、统计信息更新、碎片整理和REBIND脚本 479
11.6重新绑定程序包 479
11.7DB2健康检查 481
11.7.1查看是否有僵尸实例进程 481
11.7.2检查数据库是否一致 482
11.7.3查找诊断日志以判断是否有异常 482
11.7.4检查数据库备份完整性、日志归档是否正常 482
11.7.5维护实例目录和数据库目录的权限 485
11.7.6查看磁盘空间 485
11.8数据库监控 486
11.8.1监控工具 486
11.8.2计算数据库的大小 488
11.8.3监控表的物理大小 488
11.8.4监控单个索引的大小 488
11.8.5监控数据库实用工具的进度 489
11.8.6监控数据库crash recovey进度 489
11.8.7监控catalog cache命中率 489
11.8.8监控package cache命中率 489
11.8.9监控排序溢出率 489
11.8.10监控正在REOG的表 489
11.8.11监控缓冲池命中率 489
11.8.12监控高成本应用程序 490
11.8.13监控正在执行的时间最长的SQL语句 490
11.8.14监控SQL准备和预编译时间最长的SQL语句 490
11.8.15监控执行次数最多的SQL语句 491
11.8.16监控执行时间最长的SQL语句 491
11.8.17监控排序次数最多的SQL语句 491
11.8.18监控引起锁等待的SQL语句 491
11.8.19查找新创建的对象 491
11.8.20查找无效对象 492
11.8.21检查表空间状态 492
11.8.22检查表状态 493
11.8.23查找需要REORG的表和索引 493
11.8.24查找需要RUNSTATS的表和索引 494
11.8.25定期清理db2diag.log文件 495
11.8.26查找异常增长的表空间和表 495
11.8.27数据库维护总结 496
第12章 数据库常用工具 499
12.1解释工具 499
12.1.1Visual Explain(可视化解释) 499
12.1.2db2expln 507
12.1.3db2exfmt 510
12.1.4各种解释工具的比较 511
12.1.5如何从解释信息中获取有价值的建议 512
12.2索引设计工具(db2advis) 513
12.2.1DB2 Design Advisor(db2advis) 513
12.2.2DB2 Design Advisor(db2advis)案例讲解 514
12.3基准测试工具db2batch 517
12.3.1db2batch 517
12.3.2db2batch基准程序测试分析示例 519
12.4数据一致性检查工具 520
12.4.1db2dart及案例 520
12.4.2inspect及案例 521
12.5db2look 522
12.5.1db2look概述 522
12.5.2利用db2look构建模拟测试数据库 524
12.6其他工具 526
12.6.1db2bfd 526
12.6.2db2_kill和db2nki 527
12.6.3db2tbst 527
12.7本章小结 528
第13章 DB2 V10.1新特性 529
13.1分身大法——PureScale 529
13.1.1基本介绍 529
13.1.2安装和管理 532
13.1.3性能监控 537
13.2九阴白骨爪——Continue DataIngest 541
13.2.1Continue Data Ingest介绍 541
13.2.2CDI实际操作案例 544
13.3缩骨大法——自适应压缩 553
13.3.1基本介绍 553
13.3.2自适应压缩的工作方式 554
13.3.3启用或禁用自适应压缩 554
13.3.4评估表压缩率 555
13.3.5经典行压缩和自适应压缩的对比测试 557
13.3.6归档日志压缩 566
13.4乾坤大挪移——灾备功能增强 567
13.4.1基本介绍 567
13.4.2超级异步 567
13.4.3假脱机日志 570
13.4.4重做延迟 570
13.4.5多备机 572
13.4.6监控指标 573
13.5凌波微步——性能增强 574
13.5.1提高了一组常用SQL语句的查询性能 574
13.5.2 RUNSTATS支持索引采样 575
13.5.3优化概要文件能支持注册表变量和非精确匹配 575
13.5.4统计视图改进了统计信息以及查询优化器的统计信息收集 576
13.5.5分区内并行性改进 576
13.5.6通过更有效地进行数据和索引预取来提高查询性能 578
13.5.7提高了对具有组合索引的表执行的查询的性能 579
13.5.8提高了基于星型模式的查询的性能 580
13.6火眼金睛——监控增强 581
13.6.1用于跟踪配置更改的事件监视器 581
13.6.2用法列表对象记录影响表或索引的语句 583
13.6.3使用新的STATENT阈值域为特定语句创建阈值 585
13.6.4用于访问监视信息的新函数和已更改的函数 588
13.6.5工作单元事件监视器捕获的信息中现在包括的可执行标识列表 589
13.6.6使用ALTER EVENT监视器语句修改事件监视器捕获的信息作用域 589
13.6.7其他监控增强 590
13.7金钟罩——安全功能增强 591
13.7.1RCAC特点 591
13.7.2RCAC规则 592
13.7.3RCAC实战 592
13.8本章小结 593