第一部分 DB2简介 1
第1章 产品概览 1
1.1信息服务 1
1.2 Linux、 UNIX和Windows平台下的DB2 5
1.2.1 DB2 Everyplace 5
1.2.2 Apache Derby/IBM Cloudscape 7
1.2.3 DB2个人版 8
1.2.4 DB2 Express和DB2工作组版 8
1.2.5 DB2企业版 12
1.3 DB2的连通性 17
1.3.1 DB2客户机 18
1.3.2 DB2驱动 20
1.3.3 DB2 Connect 20
1.3.4 DB2 Replication 23
1.3.5 WebSphere Federation Server与WebSphere Information Server 24
1.3.6数据库企业开发者版 25
1.3.7 DB2开发者工作台 26
1.3.8 DB2 Extender 27
1.4 DB2管理 29
1.4.1控制中心 29
1.4.2 DB2复制中心 30
1.4.3控制中心的其他工具 30
1.4.4 DB2健康中心 31
1.4.5 DB2配置助手 32
1.4.6顾问程序和向导程序 33
1.4.7 DB2命令行处理器 35
1.4.8 Visual Explain 36
1.4.9 DB2 Query Patroller 36
1.4.10数据库监视器工具 38
1.4.11 DB2存储管理工具 38
1.4.12 DB2售后服务工具 38
1.5小结 39
第2章 新手入门 41
2.1产品安装 41
2.1.1 Windows环境下的安装 41
2.1.2 Linux和UNIX环境下的安装 54
2.1.3多副本的安装 56
2.1.4响应文件安装 59
2.1.5使用DB2命令行处理器 62
2.2 DB2环境 65
2.2.1 DB2配置文件注册表 65
2.2.2环境变量 67
2.2.3 DB2实例 68
2.2.4 DB2管理服务器(DAS) 75
2.3小结 76
第3章 网络连接 78
3.1 DB2客户端概览 78
3.2建立分布式通信的途径 82
3.2.1使用DB2 Discovery进行自动配置 83
3.2.2配置DB2 Discovery 84
3.2.3使用自动配置 86
3.2.4使用访问配置文件进行自动配置 91
3.2.5使用配置助手进行手工配置 97
3.2.6使用CLP进行手工配置 100
3.2.7连接配置的总结 106
3.2.8工具绑定 106
3.2.9使用配置助手进行工具绑定 108
3.3小结 109
第4章 数据访问控制 110
4.1安全性概览 110
4.1.1验证 112
4.1.2权限 120
4.1.3特权 127
4.1.4基于标号的访问控制 140
4.2审计 141
4.2.1缓冲审计日志写入 142
4.2.2审计设施的配置 142
4.2.3查看当前配置 143
4.2.4启动审计设施 143
4.2.5强制写审计日志 143
4.2.6提取审计日志 143
4.2.7删除审计日志 144
4.2.8停止审计设施 144
4.3小结 145
第二部分 使用SQL 147
第5章 数据库对象 147
5.1了解数据库对象 148
5.1.1数据类型 148
5.1.2表 148
5.1.3模式 149
5.1.4表空间 149
5.1.5视图 149
5.1.6索引 150
5.1.7程序包 150
5.1.8缓冲池 151
5.1.9事务 151
5.1.10锁 151
5.1.11日志文件 152
5.1.12创建DB2数据库 152
5.2管理数据库对象 152
5.2.1使用SQL数据定义语言(DDL) 152
5.2.2数据类型 155
5.3表 170
5.3.1惟一性约束 171
5.3.2引用完整性 171
5.3.3 DB2物理表 176
5.3.4压缩表 180
5.3.5修改表 185
5.3.6多维集群 188
5.3.7范围集群表 193
5.3.8视图 195
5.3.9昵称 200
5.3.10索引 202
5.4数据库设计与实现 205
5.4.1认证考试表的描述 206
5.4.2定义用户定义的数据类型 208
5.4.3定义列 209
5.4.4键 210
5.4.5定义主键 210
5.4.6定义惟一键 210
5.4.7定义外键 211
5.5小结 211
第6章 操纵数据库对象 213
6.1数据检索 213
6.1.1检索整个表 214
6.1.2从表中投影列 215
6.1.3改变列的顺序 215
6.1.4在表中限制行 216
6.1.5限制结果表的大小 216
6.1.6用户定义的数据类型的谓词表达式 216
6.1.7使用多个条件限制行 217
6.1.8从多个表中选择列 217
6.1.9使用关联名称 221
6.1.10对输出排序 222
6.1.11派生列 224
6.1.12 DB2函数 225
6.1.13分组值 226
6.1.14取消重复值 228
6.1.15 搜索串模式 228
6.1.16在指定范围中搜索数据 229
6.1.17搜索空值 230
6.1.18否定条件搜索 230
6.1.19搜索一组值 230
6.1.20子查询 231
6.1.21量化谓词 232
6.1.22 CASE表达式 233
6.1.23嵌套表表达式 234
6.1.24标量全选择 235
6.1.25公共表表达式 236
6.1.26集合运算 237
6.2数据修改 238
6.2.1插入行 239
6.2.2更新行 241
6.2.3删除数据 242
6.2.4搜索插入、更新和删除 244
6.2.5从更新、插入和删除中选择 244
6.2.6合并数据 246
6.3视图分类 250
6.3.1可删除视图 251
6.3.2可更新视图 251
6.3.3可插入视图 252
6.3.4只读视图 252
6.3.5带UNION ALL的视图 253
6.3.6使用带有UNION ALL的表空间 256
6.3.7不可操作的视图 258
6.4小结 258
第7章 高级SQL 260
7.1触发器 260
7.1.1触发器的使用 261
7.1.2触发器激活 261
7.1.3 Instead of触发器 263
7.2递归SQL 265
7.3外连接 268
7.3.1左外连接 269
7.3.2右外连接 269
7.3.3全外连接 269
7.3.4外连接的联合 271
7.4联机分析处理(OLAP)特性 272
7.4.1星型模式 272
7.4.2 OLAP索引 273
7.4.3星型连接 273
7.4.4超级分组 273
7.4.5移动函数 278
7.4.6 SQL抽样 279
7.5高级CASE表达式 285
7.5.1使用CASE表达式对数值分组 285
7.5.2在函数中使用CASE表达式 285
7.6结构化类型以及类型化表 286
7.6.1创建结构化类型 287
7.6.2修改结构化类型 288
7.6.3创建类型化表 288
7.6.4删除类型化表 289
7.6.5在类型化表中插入行 290
7.6.6从类型化表中选择行 290
7.6.7更新和删除类型化表中的行 291
7.6.8类型化表的物理实现 292
7.6.9引用列 293
7.6.10视图层次 295
7.6.11类型化表以及类型化视图上的SQL函数 295
7.6.12 TYPE谓词 297
7.6.13使用类型化表和视图时的注意事项 297
7.6.14类型化表层次的实例 297
7.7汇总表 301
7.7.1创建汇总表 302
7.7.2 CURRENT REFRESH AGE专用寄存器 303
7.7.3使用汇总表的一些注意事项 303
7.7.4汇总表的系统编目信息 304
7.7.5用户维护的汇总表 304
7.7.6物化查询表 306
7.7.7物化查询表的设计 306
7.7.8函数依赖性 309
7.7.9统计视图 309
7.8序列 311
7.9高级函数 313
7.9.1 ADMIN_CMD 313
7.9.2 SQLERRM 314
7.9.3 MULTIPLY_ALT 315
7.9.4快照表函数 315
7.9.5 MQSeries函数 317
7.9.6健康快照函数 318
7.9.7 Unicode函数 319
7.10小结 323
第8章 pureXML存储引擎 324
8.1 pureXML功能包 324
8.1.1在pureXML出现之前:XML的传统存储 324
8.1.2 XML-only数据库 325
8.1.3在文件系统中存储XML 325
8.1.4关系型数据库LOB中的XML 325
8.1.5 XML分解存储在关系型数据库的表中 326
8.2与众不同的pureXML 328
8.3创建启用XML功能的数据库 331
8.4创建带有pureXML列的表 332
8.5插入数据到pureXML列 334
8.6从pureXML列中选取数据 340
8.6.1 SQL/XML介绍 340
8.6.2 XQuery介绍 342
8.6.3 SQL/XML、 SQL或XQuery的最佳实践 343
8.7更新和删除pureXML列 344
8.8索引pureXML列 345
8.9 XML模式存储库(XSR) 353
8.10小结 356
第9章 开发SQL 357
9.1用户定义的函数 357
9.1.1 SQL体标量函数 359
9.1.2 SQL体行函数 360
9.1.3 SQL体表函数 360
9.2结构化数据类型 363
9.3模式和别名 368
9.3.1模式 368
9.3.2别名 369
9.4提交和回滚 371
9.5 SQL过程语言 371
9.5.1 BEGIN ATOMIC语句 372
9.5.2 DECLARE语句 375
9.5.3 CALL语句 375
9.5.4 SET语句 375
9.5.5 IF/THEN/ELSE语句 376
9.5.6 WHILE语句 378
9.5.7 FOR语句 378
9.5.8 ITERATE语句 379
9.5.9 LEAVE语句 379
9.5.10 RETURN语句 380
9.5.11 SIGNAL语句 380
9.5.12 GET DIAGNOSTICS语句 381
9.5.13 SQL PL实例 382
9.6存储过程 387
9.6.1存储过程中的SQL PL 388
9.6.2外部存储过程 396
9.7小结 400
第10章 并发性 401
10.1并发性 401
10.2隔离级别 407
10.2.1未提交读 407
10.2.2游标稳定性 408
10.2.3读稳定性 408
10.2.4可重复读 408
10.2.5隔离级别的选择 408
10.3锁 409
10.3.1锁的属性 409
10.3.2锁的转换 411
10.3.3锁的升级 411
10.3.4锁等待 412
10.3.5锁定表语句 412
10.3.6 ALTER TABLE语句的LOCKSIZE参数 412
10.3.7在SQL中修改锁定级别 413
10.4小结 416
第三部分 DB2管理 417
第11章 数据存储管理 417
11.1处理器、内存、磁盘的注意事项 417
11.1.1处理器 417
11.1.2内存 418
11.1.3磁盘 418
11.2 DB2存储模型 419
11.2.1缓冲池 420
11.2.2表空间 420
11.2.3容器 425
11.3表空间设计 426
11.3.1常规表空间 428
11.3.2大型表空间 428
11.3.3系统临时表空间 428
11.3.4 Extentsize 429
11.3.5 Pagesize 429
11.3.6性能考虑 429
11.3.7长字段数据 434
11.3.8大对象数据 434
11.4实现样例 435
11.4.1创建数据库 435
11.4.2创建缓冲池 438
11.4.3创建表空间 438
11.4.4创建表 439
11.4.5删除表空间 439
11.4.6删除缓冲池 439
11.4.7删除数据库 439
11.4.8使用控制中心创建表空间 440
11.5自动存储器 445
11.6表空间维护 447
11.6.1数据库文件 447
11.6.2列示表空间 447
11.6.3列示表空间容器 448
11.6.4表空间的状态 448
11.6.5有关表空间的系统编目信息 449
11.6.6向DMS表空间添加容器 450
11.7表(范围)分区 452
11.7.1创建范围分区表 454
11.7.2定义范围 455
11.7.3插入和更新 456
11.7.4指定分区范围 456
11.8小结 470
第12章 数据维护 472
12.1移动数据 472
12.1.1定界ASCII文件 473
12.1.2非定界ASCII文件 473
12.1.3 IXF文件 474
12.1.4工作表格式文件 474
12.2数据移动工具 474
12.2.1导出工具(EXPORT) 474
12.2.2导入工具(IMPORT) 481
12.2.3装载工具(LOAD) 490
12.2.4 LOAD QUERY命令 507
12.2.5 SET INTEGRITY语句 509
12.2.6 DB2MOVE工具 512
12.3数据维护 514
12.3.1分析数据的物理组织 514
12.3.2表重组 519
12.3.3生成统计信息 521
12.3.4 Rebind工具 525
12.4数据维护过程 526
12.4.1模拟产品环境 527
12.4.2 DB2LOOK工具 527
12.5小结 529
第13章 数据库恢复 531
13.1数据库恢复的概念 531
13.1.1工作单元 531
13.1.2事务 532
13.2恢复的类型 532
13.2.1崩溃恢复 532
13.2.2版本恢复 532
13.2.3前滚恢复 532
13.3恢复策略 533
13.3.1可恢复和不可恢复的数据库 533
13.3.2联机和脱机访问 533
13.4使用日志文件 533
13.4.1日志缓冲区 534
13.4.2主日志文件和辅助日志文件 535
13.4.3日志类型 535
13.4.4日志文件的使用 538
13.5使用Backup和Restore进行版本恢复 539
13.5.1备份数据库 539
13.5.2复原数据库 546
13.6前滚恢复 555
13.6.1备份数据库 555
13.6.2在表空间级别备份的例子 555
13.6.3还原数据库 556
13.6.4表空间级别复原的例子 556
13.6.5前滚数据库和表空间 557
13.6.6前滚期间的表空间状态 558
13.6.7前滚的实例 558
13.7管理日志文件 562
13.7.1日志文件命令模式 562
13.7.2恢复日志文件放置 563
13.7.3删除日志 563
13.7.4删除日志文件命令 563
13.8其他需要考虑的恢复事宜 563
13.8.1恢复需要的时间 564
13.8.2日志文件存储的考虑事宜 564
13.8.3停顿命令 564
13.8.4恢复历史文件 565
13.8.5与其他表相关联的表 567
13.8.6删除表恢复 567
13.8.7表的重组 567
13.8.8大对象 567
13.8.9联机和脱机表空间状态 568
13.9高可用性 568
13.9.1 SET WRITE命令 569
13.9.2 DB2INIDB命令 569
13.9.3使用分离的镜像克隆数据库 570
13.9.4使用分离的镜像作为备用数据库 570
13.9.5使用分离的镜像作为备份映像 571
13.10高可用性灾难恢复 571
13.10.1 HADR工作原理 572
13.10.2安装HADR 574
13.10.3手工安装HADR 579
13.10.4执行故障接管 581
13.10.5监视HADR 581
13.10.6使用客户机自动重新路由来自动完成应用程序故障恢复 583
13.10.7运行当中的软件升级 583
13.10.8使用HADR的好处 585
13.11小结 585
第14章 监控和优化 588
14.1性能要素 588
14.1.1优化准则 589
14.1.2性能改进过程 590
14.1.3可对系统进行多大程度上的优化 590
14.1.4非正式的做法 590
14.2 DB2体系架构概述 591
14.2.1进程模型 591
14.2.2查询并行 592
14.2.3 DB2内存使用 594
14.2.4 SQL编译器概述 596
14.3 DB2排序方法 597
14.4监控DB2系统 598
14.5数据库监控 600
14.5.1数据库监视器 600
14.5.2快照监控 601
14.5.3事件监控 608
14.5.4其他工具 615
14.6 SQL监控 621
14.6.1解释表 622
14.6.2收集解释数据 622
14.6.3检查解释信息 626
14.6.4使用解释输出的准则 632
14.6.5 Index Advisor 633
14.6.6配置数据资源 633
14.6.7配置分区内并行 637
14.7诊断和问题确定 638
14.7.1错误消息和SQL代码 639
14.7.2 DB2 UDB问题跟踪 642
14.8自调整内存管理器 647
14.9小结 655
第四部分 应用程序开发 657
第15章 应用程序开发概览 657
15.1 DB2应用开发环境 657
15.2 DB2编程接口 660
15.2.1嵌入式SQL 661
15.2.2调用级接口和ODBC 663
15.2.3 Java接口(JDBC和SQLJ) 664
15.2.4本机DB2 API 665
15.2.5微软数据对象(DAO、RDO、ADO和OLE-DB) 666
15.2.6 DB2.NET提供者支持 666
15.2.7其他接口和工具 667
15.3小结 668
第16章 开发考虑事项 670
16.1嵌入式SQL概述 670
16.1.1创建程序包 670
16.1.2绑定应用程序 673
16.2 CLI和ODBC编程支持 677
16.2.1动态嵌入与CLI 678
16.2.2 ODBC与CLI 678
16.2.3设置CLI环境 679
16.3 Java编程支持 683
16.3.1 JDBC编程 683
16.3.2 SQLJ编程 684
16.4 DB2开发工作台 684
16.5小结 685
第五部分 附录 687
附录A DB2 9认证考试目标 687
附录B DB2DEMO安装说明 696