循序渐进DB2:DBA系统管理、运维与应用案例

分类: 图书,计算机与互联网,数据库,数据库类型,
品牌: 牛新庄
基本信息·出版社:清华大学出版社
·页码:653 页
·出版日期:2009年
·ISBN:7302201382/9787302201380
·条形码:9787302201380
·包装版本:1
·装帧:平装
·开本:16
·正文语种:中文
产品信息有问题吗?请帮我们更新产品信息。
内容简介《循序渐进DB2:DBA系统管理、运维与应用案例》DB2数据库是IBM公司关系型数据库核心产品,在国内以及全球有着广泛的应用。针对DB2初学者,本书循序渐进地把DB2所涉及的众多概念介绍给大家。客户端连通性、实例、数据库、表空间和缓冲池、数据移动、备份恢复、故障诊断、锁与并发,以及数据库安全都是本书关注的重点。在介绍这些DB2对象和概念的同时,作者尽可能从DBA日常工作的角度探究DB2数据库常规维护工作。本书同时还就表、索引、序列、触发器等数据库对象从应用设计的角度进行了介绍。本书适合DB2的初学者、DB2开发人员、准备参加DB2认证考试的读者以及DB2数据库管理人员学习和阅读。
编辑推荐《循序渐进DB2:DBA系统管理、运维与应用案例》特色:
◆ 本书有丰富的DB2运行维护实践案例,读者可以通过这些案例加深对DB2认识和理解。
◆ 面对众多DB2的特点、特性,作者精心选择了与DBA日常工作关系最密切的部分,由易入难逐步讲解。
◆ 本书中包含了大量的提示点等,这些都是作者对DB2维护工作总结后得到的经验。
◆ 本书总结了DB2常见问题总结和解决方法,对DBA的日常维护非常有参考价值。
目录
第1章 DB2安装配置 1
1.1 DB2数据库概述 1
1.1.1 DB2发展历史 1
1.1.2 DB2版本和平台支持 7
1.1.3 DB2产品组件和功能 10
1.2 DB2数据库安装配置 13
1.2.1 DB2在Windows上的安装 14
1.2.2 DB2在Linux/UNIX上的安装 21
1.3 DB2数据库体系结构 23
第2章 创建实例和管理服务器 31
2.1 实例 31
2.1.1 实例概念 31
2.1.2 创建实例 32
2.1.3 实例目录 35
2.1.4 实例相关命令 39
2.1.5 DB2INSTANCE变量介绍 43
2.1.6 删除实例 44
2.1.7 配置实例 45
2.2 管理服务器 45
2.2.1 管理服务器概念 45
2.2.2 创建管理服务器 47
2.2.3 管理服务器相关命令 48
2.2.4 删除DB2管理服务器 49
2.2.5 配置管理服务器 49
第3章 创建数据库和表空间 51
3.1 创建数据库 51
3.1.1 DB2数据库存储模型 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.4 prefechsize大小选择 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.4 本章小结 104
第4章 访问数据库 105
4.1 访问DB2 105
4.2 DB2图形化操作环境 106
4.3 DB2 CLP处理程序 115
4.3.1 DB2 CLP简介 115
4.3.2 DB2 CLP设计 115
4.3.3 DB2 CLP命令选项 117
4.3.4 设置DB2_CLPPROMPT定制DB2 CLP 121
4.4 配置DB2服务器的TCP/IP通信 126
4.4.1 在服务器上更新services文件 127
4.4.2 在服务器上更新数据库管理器配置文件 127
4.4.3 设置DB2服务器的通信协议 128
4.4.4 查看服务器通信端口状态 128
4.4.5 使用控制中心配置DB2服务器通信 129
4.5 配置客户机至服务器通信 130
4.5.1 客户机至服务器通信概述 130
4.5.2 使用控制中心配置客户端通信 130
4.5.3 使用CA配置客户机到服务器通信 131
4.5.4 深入了解DB2节点目录、数据库目录 137
4.5.5 使用CLP配置客户机到服务器通信案例 143
4.6 本章小结 147
第5章 创建数据库对象 149
5.1 模式 149
5.1.1 模式概念 149
5.1.2 系统模式 151
5.1.3 设置和获得当前模式 151
5.1.4 模式和用户的区别 152
5.2 表设计考虑 153
5.2.1 选择合适的数据类型 153
5.2.2 选择合适的约束类型 156
5.2.3 使用not null with default 159
5.2.4 生成列及应用案例 159
5.2.5 自动编号和标识列应用案例 160
5.2.6 使用not logged initially特性 161
5.2.7 使用append on特性 162
5.2.8 数据、索引和大对象分开存放 162
5.2.9 设置pctfree 163
5.2.10 表的locksize 163
5.2.11 表的volatile特性 163
5.2.12 创建带XML列的表 164
5.2.13 表维护相关命令 165
5.2.14 表设计高级选项 169
5.3 索引设计 173
5.3.1 索引优点 173
5.3.2 索引类型 174
5.3.3 索引结构 177
5.3.4 理解索引访问机制 180
5.3.5 创建集群索引 182
5.3.6 创建双向索引 183
5.3.7 完全索引访问(index access only) 184
5.3.8 创建索引示例 185
5.3.9 索引总结 191
5.4 使用序列提高性能 194
5.4.1 应用程序性能和序列 194
5.4.2 设计序列原则 195
5.4.3 序列维护 196
5.4.4 比较序列与标识列 200
5.5 视图 202
5.5.1 视图类型 202
5.5.2 创建with check option视图 206
5.5.3 视图维护 207
5.6 表表达式 208
5.6.1 嵌套的表表达式 208
5.6.2 公用表表达式 209
5.7 触发器设计 210
5.7.1 触发器的类型 210
5.7.2 创建触发器示例 212
5.7.3 触发器设计总结 214
5.8 本章小结 216
第6章 数据移动 217
6.1 数据移动格式 217
6.1.1 定界ASCII文件格式 218
6.1.2 非定界ASCII文件格式 218
6.1.3 PC/IXF文件格式 219
6.1.4 工作表文件格式 219
6.1.5 游标 219
6.2 EXPORT 220
6.2.1 EXPORT概述 220
6.2.2 导出数据 220
6.2.3 导出数据示例 223
6.3 IMPORT 224
6.3.1 IMPORT概述 224
6.3.2 导入数据 224
6.3.3 导入数据示例 229
6.4 LOAD 231
6.4.1 LOAD概述 231
6.4.2 装入数据 232
6.4.3 装入示例 240
6.4.4 在线LOAD 244
6.4.5 监控LOAD进度 247
6.4.6 LOAD期间和之后的表空间状态 248
6.4.7 使用CURSOR文件类型来移动数据 252
6.4.8 提高LOAD性能 253
6.4.9 LOAD失败恢复 258
6.4.10 LOAD和IMPORT比较 260
6.5 数据移动性能问题 262
6.6 DB2MOVE和DB2LOOK 263
6.6.1 数据库移动工具—— DB2MOVE 263
6.6.2 DB2 DDL提取工具(DB2LOOK) 265
6.6.3 利用DB2MOVE和DB2LOOK移动数据案例 266
6.6.4 带COPY操作的DB2MOVE实用程序 269
6.7 本章小结 275
第7章 数据库备份与恢复 277
7.1 恢复概念 277
7.1.1 崩溃恢复 281
7.1.2 灾难恢复 282
7.1.3 版本恢复 282
7.1.4 前滚恢复 283
7.2 DB2日志 285
7.2.1 日志文件的使用 285
7.2.2 日志类型 287
7.2.3 日志相关配置参数 290
7.2.4 数据库日志总结 291
7.3 数据库和表空间备份 293
7.3.1 数据库备份 293
7.3.2 表空间备份 295
7.3.3 增量备份 295
7.3.4 检查备份完整性—— db2ckbkp 298
7.4 数据库和表空间恢复 300
7.4.1 数据库恢复 300
7.4.2 表空间恢复 302
7.4.3 增量恢复 303
7.4.4 增量恢复检查—— db2ckrst 304
7.4.5 重定向恢复 305
7.4.6 恢复已drop的表 309
7.5 数据库和表空间前滚 312
7.5.1 数据库前滚 312
7.5.2 表空间前滚 314
7.6 RECOVER实用程序 317
7.7 恢复历史文件 321
7.8 数据库重建 324
7.8.1 数据库重建概念 324
7.8.2 使用表空间备份重建可恢复数据库 324
7.8.3 只使用部分表空间备份重建可恢复数据库 327
7.8.4 使用包含日志文件的在线备份重建数据库 329
7.8.5 使用增量备份镜像重建可恢复数据库 330
7.8.6 使用重定向选项重建可恢复数据库 330
7.8.7 重建不可恢复数据库 331
7.8.8 数据库重建的限制 331
7.9 监控备份、复原和恢复进度 332
7.10 备份、恢复和复原期间表空间状态 333
7.11 优化备份、复原和恢复性能 333
7.12 备份恢复最佳实践 335
第8章 DB2故障诊断 337
8.1 DB2故障诊断机制 337
8.1.1 故障诊断相关文件 337
8.1.2 收集故障诊断信息 342
8.1.3 设置故障诊断级别 343
8.2 深入讲解故障诊断文件 345
8.2.1 解释管理通知日志文件条目 345
8.2.2 解释诊断日志文件条目 346
8.3 故障诊断工具 349
8.3.1 使用db2support收集环境信息 349
8.3.2 db2ls和db2level 350
8.3.3 使用db2diag分析db2diag.log文件 351
8.3.4 db2pd 354
8.3.5 DB2内部返回码 355
8.4 故障诊断分析流程 356
8.4.1 故障诊断流程 356
8.4.2 结合系统事件判断 359
8.4.3 结合系统运行状况诊断 360
8.5 本章小结 361
第9章 DB2性能监控 363
9.1 监控工具概述 363
9.2 快照监视器 365
9.2.1 快照监视器概述 365
9.2.2 利用表函数监控 370
9.2.3 性能管理视图 373
9.3 快照监视器案例 374
9.3.1 监控案例1—动态SQL语句 374
9.3.2 监控案例2—通过表函数监控 376
9.3.3 编写快照监控脚本 378
9.4 db2pd及监控案例 380
9.5 事件监视器及监控案例 390
9.6 db2mtrk及监控案例 395
9.7 活动监视器 397
9.8 DB2性能监控总结 398
第10章 锁和并发 399
10.1 锁的概念 399
10.1.1 数据一致性 399
10.1.2 事务和事务边界 400
10.1.3 锁的概念 402
10.2 锁的属性、策略及模式 407
10.2.1 锁的属性 407
10.2.2 加锁策略 407
10.2.3 锁的模式 408
10.2.4 如何获取锁 410
10.2.5 锁的兼容性 412
10.3 隔离级别(Isolation Levels) 413
10.3.1 可重复读(RR—Repeatable Read) 413
10.3.2 读稳定性(RS—Read Stability) 414
10.3.3 游标稳定性(CS—Cursor Stability) 416
10.3.4 未提交读(UR—Uncommitted Read) 417
10.3.5 隔离级别的摘要 419
10.4 锁转换、锁等待、锁升级和死锁 421
10.4.1 锁转换及调整案例 421
10.4.2 锁升级及调整案例 423
10.4.3 锁等待及调整案例 426
10.4.4 死锁及调整案例 429
10.5 锁相关的性能问题总结 432
10.6 锁与应用程序设计 434
10.7 锁监控工具 437
10.8 最大化并发性 441
10.8.1 选择合适的隔离级别 441
10.8.2 尽量避免锁等待、锁升级和死锁 442
10.8.3 设置合理的注册变量 442
10.9 锁和并发总结 450
第11章 数据库运行维护 451
11.1 统计信息更新 451
11.1.1 统计信息的重要性 451
11.1.2 使用RUNSTATS 收集统计信息的原则 455
11.1.3 减小RUNSTATS对系统性能影响的策略 457
11.1.4 DB2自动统计信息收集 458
11.2 Runstats更新举例 461
11.2.1 RUNSTATS更新示例 461
11.2.2 收集分布式统计信息 462
11.2.3 包含频率和分位数统计信息的RUNSTATS 463
11.2.4 包含列组统计信息的RUNSTATS 465
11.2.5 包含LIKE STATISTICS的RUNSTATS 465
11.2.6 包含统计信息配置文件的RUNSTATS 466
11.2.7 带有抽样的RUNSTATS 467
11.2.8 带有系统页级抽样的RUNSTATS 467
11.2.9 收集统计信息的其他可供选择的方法 468
11.2.10 RUNSTATS总结 469
11.3 表和索引碎片整理 470
11.3.1 表重组(REORG) 470
11.3.2 索引重组 478
11.3.3 确定何时重组表和索引 480
11.3.4 重组表和索引的成本 484
11.3.5 合理设计以减少碎片生成 485
11.3.6 启用表和索引的自动重组 486
11.4 碎片整理案例 487
11.4.1 执行表、索引检查是否需要做REORG 487
11.4.2 表和索引碎片整理 488
11.5 案例:生成碎片检查、统计信息更新、碎片整理和REBIND脚本 489
11.6 重新绑定程序包 490
11.7 数据库运行维护总结 491
第12章 数据库常用工具 493
12.1 解释工具 493
12.1.1 Visual Explain(可视化解释) 493
12.1.2 db2expln 501
12.1.3 db2exfmt 503
12.1.4 各种解释工具比较 505
12.1.5 如何从解释信息中获取有价值的建议 505
12.2 索引设计工具(db2advis) 506
12.2.1 DB2 Design Advisor(db2advis) 506
12.2.2 DB2 Design Advisor(db2advis)案例讲解 508
12.3 基准测试工具db2batch 510
12.3.1 db2batch 510
12.3.2 db2batch基准程序测试分析示例 512
12.4 数据一致性检查工具 513
12.4.1 db2dart及案例 513
12.4.2 inspect及案例 514
12.5 db2look 516
12.5.1 db2look概述 516
12.5.2 利用db2look构建模拟测试数据库 517
12.6 其他工具 519
12.6.1 db2bfd 519
12.6.2 db2_kill和db2nkill 520
12.6.3 db2tbst 521
12.7 本章小结 521
第13章 数据库安全 523
13.1 DB2安全机制概述 524
13.2 认证(authentication) 527
13.2.1 什么时候进行DB2身份认证 527
13.2.2 DB2身份认证类型 528
13.3 权限(authorization) 535
13.3.1 权限层次 535
13.3.2 授予/撤销实例级权限 539
13.3.3 授予/撤销数据库级权限 542
13.4 特权 543
13.4.1 特权层次结构 543
13.4.2 授予特权 547
13.4.3 撤销特权 549
13.4.4 显式特权/隐式特权/间接特权 551
13.4.5 静态和动态SQL特权考虑因素 555
13.4.6 维护特权/权限 557
13.5 某银行安全规划案例 560
13.6 执行安全审计(db2audit) 562
13.7 基于标签的访问控制(LBAC)及案例 566
13.8 本章小结 573
第14章 DBA日常维护 575
14.1 DB2健康检查 575
14.1.1 查看是否有僵尸实例进程 575
14.1.2 inspect数据库是否一致 576
14.1.3 查找诊断日志判断是否有异常 576
14.1.4 检查数据库备份完整性、日志归档是否正常 577
14.1.5 维护实例目录和数据库目录权限 579
14.1.6 查看磁盘空间 579
14.2 数据库监控 580
14.2.1 监控工具 581
14.2.2 监控缓冲池命中率 582
14.2.3 监控执行成本最高的SQL语句 582
14.2.4 监控运行最长的SQL语句 582
14.2.5 监控SQL准备和预编译时间最长的SQL语句 583
14.2.6 监控执行次数最多的SQL语句 583
14.2.7 监控排序次数最多的SQL语句 584
14.2.8 监控引起锁等待的SQL语句 584
14.3 日常维护 584
14.3.1 查找创建的新对象 584
14.3.2 查找无效对象 585
14.3.3 检查表空间状态 585
14.3.4 检查表状态 585
14.3.5 查找需要REORG的表和索引 585
14.3.6 查找需要RUNSTATS的表和索引 586
14.3.7 定期清理db2diag.log文件 587
14.3.8 查找异常增长的表空间和表 587
第15章 DB2常见问题总结 589
15.1 实例常见问题和诊断案例 589
15.1.1 实例无法启动问题总结 589
15.1.2 实例无法正常终止 590
15.1.3 实例启动报SQL1042C错误 590
15.1.4 实例目录误删除 591
15.1.5 实例崩溃问题 592
15.2 数据库常见问题总结 592
15.2.1 数据库日志空间满—— SQL0964C错误 592
15.2.2 数据库时区和时间 594
15.2.3 中文乱码和代码页转换 594
15.2.4 通信错误—— SQL30081N 597
15.2.5 数据库备份、前滚暂挂 597
15.2.6 数据库活动日志删除 598
15.2.7 数据库损坏(数据页、索引页)—— SQL1043C 598
15.2.8 索引重新构建问题 600
15.2.9 DB2实用程序不可用 601
15.2.10 快速清空表数据 601
15.2.11 表和索引统计信息不一致 602
15.3 表空间状态 603
15.3.1 Backup Pending 604
15.3.2 脱机 604
15.3.3 Quiesced Exclusive|Share|Update 605
15.3.4 Restore Pending和Storage Must be Defined 605
15.3.5 Roll Forward Pending 606
15.3.6 表空间状态总结 606
15.4 LOAD期间表状态总结 607
15.4.1 Check Pending 607
15.4.2 Load Pending 608
15.4.3 Load in Progress 608
15.4.4 Not Load Restartable 609
15.4.5 Read Access Only 609
15.4.6 Unavailable 610
15.5 锁相关问题 611
15.5.1 锁升级 611
15.5.2 锁等待问题解决流程 611
15.5.3 死锁 611
15.6 内存常见问题 612
15.6.1 bufferpool设置过大数据库无法启动 612
15.6.2 排序溢出 612
15.6.3 锁内存不足 612
15.7 备份恢复常见问题 613
15.8 数据移动常见问题总结 613
15.8.1 标识列 614
15.8.2 生成列 617
15.8.3 大对象 621
15.8.4 空值处理 622
15.8.5 定界符注意问题 625
15.8.6 PC/IXF注意问题 628
15.8.7 代码页不同注意事项 630
15.8.8 日期格式 631
15.8.9 XML问题 633
15.9 安全常见问题总结 635
15.9.1 从PUBLIC撤销隐式的权限和特权 636
15.9.2 保护系统编目视图 638
15.9.3 创建实例用户显式指定组 639
15.9.4 为SYSxxx_GROUP参数使用显式值 640
15.9.5 跟踪隐式的特权 640
15.9.6 不授予不必要的特权 642
15.9.7 使用加密的AUTHENTICATION模式 642
15.9.8 使用独立ID创建和拥有对象 644
15.9.9 使用视图控制数据访问 645
15.9.10 使用存储过程控制数据访问 646
15.9.11 使用LBAC控制数据访问 647
15.9.12 对重要敏感数据加密 648
15.10 SQL0805和SQL0818错误 650
……[看更多目录]
文摘创建数据库对象
在数据库创建后,我们可以根据我们的业务需求来设计和创建数据库对象了。可以在DB2数据库中创建下列数据库对象:
● 模式
● 表
● 索引
● 序列
● 视图
● 触发器
我们可以使用图形用户界面或通过显式执行SQL语句来创建这些数据库对象。用于创建这些数据库对象的语句称为“数据定义语言(DDL)”,它们通常以关键字CREATE或ALTER作为前缀。
5.1 模式
5.1.1 模式概念
数据库中的大多数对象指定一个由两部分组成的唯一名称,如图5-1所示。第一部分(最左边的)称为限定词或模式,而第二部分(最右边的)称为简单(或未限定)名称。从句法上来说,这两部分并置成用句点分隔的单个字符串。第一次创建可以由模式名限定的任何对象(例如表、索引、视图、用户定义的数据类型、用户定义的函数、昵称、程序包或触发器)时,会根据对象名称中的限定词将该对象指定给一个特定模式。
图5-1 数据库对象名的组成
例如,图5-2说明在创建表的过程中如何将该表指定给一个特定模式。
DB2中的模式(schema)是一个已命名对象的集合,它提供一种方法来按逻辑分组这些对象。这些对象包括表、视图、索引、触发器、函数和包。模式提供了数据库中对象的逻辑类别。模式也是名称限定词;它提供一种方法来对几个对象使用相同名称,并防止对这些对象进行二义性引用。例如,使用模式名“PROD”和“DEV”很容易区分两个不同的SALES表(PROD.SALES和DEV.SALES)。模式名的最大长度为30字节,它用作分两部分的对象名的第一部分。例如,名称 CITIC.CUSTOMER。在这个示例中,CUSTOMER表的完全限定名包含模式名:CITIC,这可以在系统编目中将它与其他名为CUSTOMER的表区分开。可以把模式想象为特定对象的创建者、生成者和主人。

图5-2 创建表并将其指定给一个特定格式
如果创建对象而没有指定模式,那么对象使用您的用户名与一个隐式模式相关联(假设用户或组具有IMPLICIT_SCHEMA数据库权限,IMPLICIT_SCHEMA权限简单来说就是假设一个用户创建一个对象的时候没有使用模式,那么数据库就隐含地创建一个和用户名一样的模式,关于这个权限在13章中有详细讲解)。当SQL语句引用对象时,如果没有指定模式名,那么也会隐式地加上调用者的用户名。
5.1.2 系统模式
对于每个数据库,都创建和维护一组系统编目表。这些表包含关于数据库对象(例如表、视图
……[看更多书摘]
后记感谢你,亲爱的读者,如果你已经读完本书,并且有所收获,那将是我无比开心的事情。
在当今这个信息爆炸的年代,一个人再以传统的方式去深入学习IT知识几乎是不可能了。作为一个成熟的商业数据库产品,DB2有完善的文档和支持体系,但由于文档的规模庞大,几乎没有用户能够有时间和精力进行全面的阅读和学习;当然我们也可以借助于搜索引擎从浩瀚的网络中去搜索各种DB2知识点,但是这些知识点只是众多孤立的点;本套书主要是把散布在网络上(本书中少量案例参考了IBM网站developworks内容,在此表示致谢)的众多DB2知识点和DB2随机文档中的重要技术通过一定的体系结构串到一起能够更加便于读者学习。
这套书可以说是我十年DB2生涯的一个阶段性总结,我的学习方法,我在学习和工作中遇到的疑难和案例,都在本书进行了选择性的收录,并做了详细的分析和讲解。
本套书成稿于2008年奥运保障期间(为建行总行维护数据库),写作的过程是辛苦的,写作期间我通常是每天凌晨2点多钟休息,每天早上8点多还要正常的上班。市场上关于DB2的书籍比较少,而已有的DB2书籍更多的偏重于文档式的叙述而不实用,而在一个客户的实际生产系统中,用户所能遇到的问题通常是相似的。所以写这套书主要是从实用的角度,把众多重要的知识点和常见的系统运行维护、性能调优和经验总结提炼到本套书中,所以本书的特点尽量偏重于实用。书中的知识点没有为了全而去讲解所有的知识点,只是把一些重要的知识点细细地讲解。写作的过程中我时时在心中提醒自己,一定要把自己的知识总结、自己的思考和十年DB2的使用经验总结写到书中。