第1章 什么是DBA 1
1.1 为什么学习数据库管理 2
1.2 独特的优势 3
1.2.1 DBA的薪资 3
1.2.2 数据库技术 5
1.3 DBA的管理准则 6
1.4 评估DBA的工作邀请 10
1.5 数据库管理、数据管理和系统管理 10
1.5.1 数据管理 10
1.5.2 数据库管理 13
1.5.3 系统管理 13
1.6 DBA的任务 14
1.6.1 数据库设计 14
1.6.2 性能监控和调优 15
1.6.3 保证可用性 16
1.6.4 数据库安全和授权 16
1.6.5 治理与合规性 17
1.6.6 备份和恢复 18
1.6.7 确保数据完整性 18
1.7 DBMS版本迁移 19
1.8 DBA的类型 21
1.8.1 系统DBA 21
1.8.2 数据库架构师 21
1.8.3 数据库分析师 22
1.8.4 数据建模师 22
1.8.5 应用程序DBA 22
1.8.6 面向任务的DBA 24
1.8.7 性能分析师 24
1.8.8 数据仓库管理员 24
1.9 人员配备的考虑 24
1.9.1 需要多少DBA 25
1.9.2 DBA报告结构 26
1.10 跨平台的DBA问题 28
1.11 生产环境与测试环境 29
1.12 新技术对DBA的影响 30
1.12.1 过程DBA:管理数据库逻辑 30
1.12.2 互联网:从DBA到eDBA 33
1.12.3 个人DBA与云计算 35
1.12.4 NoSQL、大数据和DBA 37
1.12.5 新技术对DBA的影响 37
1.13 DBA认证 38
1.14 本书的其余部分 39
1.15 回顾 39
第2章 创建数据库环境 40
2.1 定义企业的DBMS策略 40
2.1.1 DBMS选型 41
2.1.2 DBMS架构 45
2.1.3 DBMS集群 47
2.1.4 DBMS泛滥 48
2.1.5 硬件问题 49
2.1.6 云数据库系统 49
2.2 安装DBMS 50
2.2.1 DBMS安装基础 50
2.2.2 硬件需求 50
2.2.3 存储需求 51
2.2.4 内存需求 52
2.2.5 配置DBMS 53
2.2.6 连接DBMS与基础设施配套软件 54
2.2.7 安装验证 54
2.2.8 DBMS环境 55
2.3 升级DBMS的主版本和次版本 55
2.3.1 产品特性与复杂性 58
2.3.2 DBMS环境的复杂性 59
2.3.3 DBMS供应商的声誉 59
2.3.4 DBMS的支持条款 59
2.3.5 企业风格 60
2.3.6 DBA人员技能组合 60
2.3.7 平台支持 60
2.3.8 配套软件 61
2.3.9 回滚计划 61
2.3.10 迁移验证 62
2.3.11 DBMS升级策略 62
2.4 数据库标准与过程 62
2.4.1 数据库命名约定 62
2.4.2 其他数据库标准和过程 65
2.5 DBMS教育 69
2.6 小结 70
2.7 回顾 70
2.8 推荐书目 71
第3章 数据建模与规范化 72
3.1 数据建模的概念 73
3.2 数据模型的组件 77
3.2.1 实体 77
3.2.2 属性 78
3.2.3 码 82
3.2.4 关联 82
3.3 发现实体、属性和关联 84
3.4 概念、逻辑和物理数据模型 85
3.5 什么是规范化 87
3.6 范式 87
3.6.1 第一范式 87
3.6.2 第二范式 89
3.6.3 第三范式 90
3.6.4 一个规范化的数据模型 91
3.6.5 进一步的范式 91
3.7 规范化实践 92
3.8 其他数据建模问题 92
3.9 小结 93
3.10 回顾 93
3.11 推荐书目 94
第4章 数据库设计 96
4.1 从逻辑模型到物理数据库 96
4.1.1 实体转换成表 97
4.1.2 属性转换成列 97
4.1.3 为所有关联建立引用约束 100
4.1.4 建立物理数据结构 100
4.2 数据库性能设计 102
4.2.1 索引设计 102
4.2.2 散列 107
4.2.3 集群 108
4.2.4 交叉数据 109
4.3 非规范化 109
4.3.1 何时进行非规范化 109
4.3.2 预连接表 111
4.3.3 报告表 111
4.3.4 镜像表 112
4.3.5 拆分表 112
4.3.6 组合表 114
4.3.7 冗余数据 114
4.3.8 重复组 114
4.3.9 可导性数据 115
4.3.10 层次结构 116
4.3.11 特殊物理实施需求 117
4.3.12 非规范化小结 117
4.4 视图 118
4.5 数据定义语言 119
4.6 时态数据支持 120
4.6.1 时态的例子 120
4.6.2 业务时间和系统时间 120
4.7 小结 121
4.8 回顾 122
4.9 推荐书目 123
第5章 应用程序设计 124
5.1 数据库应用程序开发和SQL 124
5.1.1 SQL 125
5.1.2 Set-at-a-Time处理和关系闭包 127
5.1.3 在程序中嵌入SQL语句 128
5.1.4 SQL中间件和API 129
5.1.5 应用程序基础架构 130
5.1.6 面向对象与SQL 134
5.1.7 SQL类型 135
5.1.8 SQL性能编码 136
5.1.9 查询XML数据 137
5.2 定义事务 138
5.2.1 事务指南 139
5.2.2 工作单元 140
5.2.3 事务处理系统 140
5.2.4 应用程序服务器 141
5.3 锁 142
5.3.1 锁的类型 143
5.3.2 锁超时 144
5.3.3 死锁 144
5.3.4 锁定持续时间 145
5.3.5 锁升级 148
5.3.6 最小化锁定问题的编程技术 148
5.3.7 锁定小结 149
5.4 批处理 149
5.5 小结 150
5.6 回顾 150
5.7 推荐书目 151
第6章 设计审查 153
6.1 什么是设计审查 153
6.1.1 交战规则 154
6.1.2 设计审查的参与者 154
6.1.3 所需的知识与技能 156
6.2 设计审查的类型 157
6.2.1 概念设计审查 158
6.2.2 逻辑设计审查 158
6.2.3 物理设计审查 159
6.2.4 组织设计审查 159
6.2.5 SQL与应用程序代码设计审查 160
6.2.6 部署前的设计审查 160
6.2.7 部署后的设计审查 161
6.3 设计审查输出 161
6.4 其他注意事项 161
6.4.1 应对远程工作人员 162
6.4.2 制度和知识迁移 162
6.5 小结 162
6.6 回顾 162
6.7 推荐书目 163
第7章 数据库变更管理 164
7.1 变更管理要求 165
7.2 变更的类型 167
7.2.1 DBMS软件 167
7.2.2 硬件配置 167
7.2.3 逻辑和物理设计 167
7.2.4 应用程序 168
7.2.5 物理数据库结构 168
7.3 数据库结构变更的影响 169
7.3.1 ALTER的限制 170
7.3.2 数据库变更业务场景 171
7.3.3 比较数据库结构 173
7.3.4 请求数据库变更 174
7.3.5 标准化的变更请求 174
7.3.6 沟通 175
7.3.7 协调数据库和应用程序变更 175
7.3.8 合规性 176
7.3.9 DBA脚本和变更管理 176
7.4 小结 177
7.5 回顾 177
7.6 推荐书目 177
第8章 数据可用性 178
8.1 定义可用性 179
8.2 停机成本 182
8.3 可用性问题 184
8.3.1 数据中心的丢失 184
8.3.2 网络问题 185
8.3.3 服务器硬件的丢失 185
8.3.4 磁盘相关的中断 187
8.3.5 操作系统故障 187
8.3.6 DBMS软件故障 188
8.3.7 应用程序问题 188
8.3.8 安全和授权问题 188
8.3.9 数据损坏 189
8.3.10 数据库对象丢失 189
8.3.11 数据丢失 190
8.3.12 数据复制和传播故障 190
8.3.13 严重的性能问题 191
8.3.14 恢复问题 191
8.3.15 DBA错误 191
8.3.16 计划内和计划外中断 193
8.4 确保可用性 193
8.4.1 系统正常运行时执行日常维护 194
8.4.2 自动化DBA任务 195
8.4.3 利用高可用性功能 196
8.4.4 利用集群技术 196
8.4.5 数据库架构和NoSQL 199
8.5 小结 200
8.6 回顾 200
8.7 推荐书目 201
第9章 性能管理 202
9.1 性能定义 202
9.2 监测与管理 205
9.2.1 被动与主动 206
9.2.2 生产前的性能评估 207
9.2.3 历史趋势 208
9.3 服务级别管理 208
9.4 性能调优的类型 210
9.4.1 系统调优 210
9.4.2 数据库调优 210
9.4.3 应用程序调优 211
9.5 性能调优工具 211
9.6 DBMS的性能基础 212
9.7 小结 213
9.8 回顾 213
9.9 推荐书目 214
第10章 系统性能 215
10.1 大环境 215
10.1.1 与操作系统交互 216
10.1.2 联合代理 216
10.1.3 硬件配置 217
10.1.4 DBMS组件 218
10.2 DBMS安装和配置问题 220
10.2.1 配置类型 221
10.2.2 内存使用 221
10.2.3 数据高速缓存 224
10.2.4 “开放的”数据对象 227
10.2.5 数据库日志 227
10.2.6 锁定与争用 231
10.2.7 系统目录 231
10.2.8 其他配置选项 232
10.2.9 一般性建议 233
10.3 系统监测 233
10.4 小结 234
10.5 回顾 234
10.6 推荐书目 235
第11章 数据库性能 236
11.1 优化数据库的技术 236
11.1.1 分区 237
11.1.2 原始分区与文件系统 237
11.1.3 索引 238
11.1.4 非规范化 240
11.1.5 集群 241
11.1.6 交叉数据 243
11.1.7 可用空间 243
11.1.8 压缩 244
11.1.9 文件放置与分配 245
11.1.10 页面大小(块大小) 246
11.2 数据库重组 247
11.2.1 决定何时进行重组 250
11.2.2 自动化 251
11.3 小结 251
11.4 回顾 251
11.5 推荐书目 252
第12章 应用程序性能 253
12.1 设计关系访问的应用程序 253
12.2 关系优化 254
12.2.1 CPU和I/O成本 255
12.2.2 数据库统计信息 255
12.2.3 查询分析 257
12.2.4 连接 257
12.2.5 访问路径选择 259
12.3 其他优化考虑 266
12.3.1 视图访问 266
12.3.2 查询重写 267
12.3.3 基于规则的优化 267
12.4 访问路径的审查 268
12.5 SQL的编码和调优效率 272
12.5.1 SQL经验法则一箩筐 272
12.5.2 其他SQL调优技巧 277
12.5.3 识别性能低下的SQL 277
12.6 小结 278
12.7 回顾 278
12.8 推荐书目 278
第13章 数据完整性 280
13.1 完整性的类型 280
13.2 数据库结构完整性 281
13.2.1 结构性问题的类型 281
13.2.2 管理结构性问题 281
13.3 语义数据的完整性 284
13.3.1 实体完整性 285
13.3.2 唯一约束 286
13.3.3 数据类型 286
13.3.4 默认值 287
13.3.5 检查约束 287
13.3.6 触发器 292
13.3.7 参照完整性 296
13.4 时态数据库系统 304
13.5 小结 305
13.6 回顾 306
13.7 推荐书目 306
第14章 数据库安全 308
14.1 数据泄露 308
14.2 数据库安全基础 309
14.3 授予和撤销授权 313
14.3.1 权限类型 313
14.3.2 授予PUBLIC 315
14.3.3 撤销权限 316
14.3.4 基于标签的访问控制 317
14.3.5 安全报告 319
14.4 授权角色和组 319
14.4.1 角色 319
14.4.2 组 320
14.5 其他数据库安全机制 321
14.5.1 安全使用视图 321
14.5.2 安全使用存储过程 322
14.6 加密 322
14.6.1 静态数据加密 323
14.6.2 传输过程的数据加密 324
14.6.3 加密技术 324
14.7 SQL注入攻击 325
14.8 审计 327
14.9 外部安全 328
14.9.1 作业调度和安全 329
14.9.2 非DBMS的DBA安全 329
14.10 DBMS补丁包和维护 330
14.11 小结 330
14.12 回顾 330
14.13 推荐书目 331
第15章 合规性和数据库管理 332
15.1 实现合规性的协作方法 334
15.2 元数据管理、数据质量和数据治理 335
15.2.1 元数据 335
15.2.2 数据质量 336
15.2.3 数据治理 336
15.3 数据库审计和数据访问跟踪 336
15.3.1 数据库审计技术 338
15.3.2 特权用户审计 340
15.4 数据屏蔽和模糊 341
15.5 用于长期数据保留的数据库归档 342
15.5.1 数据的生命周期 342
15.5.2 数据库归档 343
15.5.3 数据库归档解决方案的构成 346
15.5.4 e-Discovery对DBA的影响 347
15.6 密切跟踪传统的DBA任务 348
15.6.1 数据库变更管理 348
15.6.2 数据库备份和恢复 349
15.7 小结 350
15.8 回顾 351
15.9 推荐书目 351
第16章 数据库备份和恢复 353
16.1 备份和恢复的重要性 353
16.2 问题的准备工作 354
16.3 备份 354
16.3.1 完整备份与增量备份 357
16.3.2 数据库对象和备份 358
16.3.3 DBMS控制 359
16.3.4 并发访问问题 360
16.3.5 备份的一致性 361
16.3.6 日志归档和备份 362
16.3.7 确定备份计划 363
16.3.8 DBMS实例备份 365
16.3.9 设计恢复的DBMS环境 365
16.3.10 数据库备份的替代途径 365
16.3.11 记录备份策略 367
16.3.12 数据库对象定义备份 367
16.4 恢复 368
16.4.1 确定恢复选项 368
16.4.2 数据库对象恢复的一般步骤 370
16.4.3 恢复的类型 371
16.4.4 索引恢复 377
16.4.5 测试恢复计划 377
16.4.6 恢复删除的数据库对象 378
16.4.7 恢复损坏的块和页面 379
16.4.8 填充测试数据库 379
16.5 替代性备份和恢复 379
16.5.1 备用数据库 380
16.5.2 复制 380
16.5.3 磁盘镜像 381
16.6 小结 381
16.7 回顾 381
16.8 推荐书目 382
第17章 防灾规划 383
17.1 计划的必要性 383
17.2 一般灾难恢复指南 386
17.2.1 远程站点 386
17.2.2 书面计划 386
17.2.3 人员 389
17.3 为灾难恢复备份数据库 389
17.3.1 磁带备份 390
17.3.2 存储管理备份 391
17.3.3 其他方法 392
17.3.4 一些指导 392
17.4 灾难防治 393
17.5 小结 394
17.6 回顾 394
17.7 推荐书目 395
第18章 数据和存储管理 396
18.1 存储管理基础 396
18.2 文件和数据集 399
18.2.1 磁盘上的文件放置 399
18.2.2 原始分区和文件系统 401
18.2.3 临时数据库文件 401
18.3 空间管理 401
18.3.1 数据页面布局 402
18.3.2 索引页面布局 404
18.3.3 事务日志 406
18.4 碎片和存储 407
18.5 存储选项 407
18.5.1 RAID 408
18.5.2 JBOD 414
18.5.3 存储区域网络 414
18.5.4 网络附加存储 414
18.5.5 分层存储 415
18.6 规划未来 416
18.7 小结 417
18.8 回顾 417
18.9 推荐书目 418
第19章 数据移动与分布 419
19.1 装卸数据 419
19.1.1 LOAD实用程序 420
19.1.2 UNLOAD实用程序 422
19.1.3 维护应用程序测试台 425
19.2 导出与导入 426
19.3 批量数据移动 426
19.3.1 ETL软件 426
19.3.2 复制和传播 427
19.3.3 消息软件 427
19.3.4 其他方法 428
19.4 分布式数据库 428
19.4.1 建立分布式环境 430
19.4.2 数据分布的标准 431
19.4.3 访问分布式数据 432
19.4.4 两阶段COMMIT 433
19.4.5 分布式性能问题 433
19.5 小结 434
19.6 回顾 434
19.7 推荐书目 435
第20章 数据仓库管理 436
20.1 什么是数据仓库 436
20.2 管理数据仓库 438
20.2.1 太专注于技术 439
20.2.2 数据仓库设计 439
20.2.3 数据移动 441
20.2.4 数据清理 441
20.2.5 数据仓库的可扩展性 444
20.2.6 数据仓库的性能 444
20.2.7 数据新鲜度 447
20.2.8 数据内容 447
20.2.9 数据使用 448
20.2.10 财务退款 448
20.2.11 备份与恢复 449
20.2.12 不要凭空操作 449
20.3 小结 450
20.4 回顾 450
20.5 推荐书目 450
第21章 数据库连接 452
21.1 多层、分布式计算 452
21.1.1 回顾历史 452
21.1.2 业务问题 453
21.1.3 C/S计算简介 453
21.1.4 C/S应用程序的类型 456
21.2 网络流量 459
21.2.1 数据库网关 459
21.2.2 数据库驱动程序 460
21.2.3 连接池 461
21.3 数据库、互联网和Web 461
21.3.1 接入互联网的数据库 462
21.3.2 Web开发和Web服务 465
21.4 小结 466
21.5 回顾 466
21.6 推荐书目 467
第22章 元数据管理 469
22.1 元数据简介 469
22.1.1 从数据到知识,再到更多 470
22.1.2 元数据策略 471
22.1.3 数据仓库和元数据 471
22.2 元数据的类型 471
22.3 资源库和数据字典 473
22.3.1 资源库的好处 474
22.3.2 资源库的挑战 475
22.3.3 数据字典 476
22.4 小结 476
22.5 回顾 477
22.6 推荐书目 477
第23章 DBA工具 479
23.1 DBA工具的类型和好处 479
23.1.1 数据建模和设计 479
23.1.2 数据库变更管理 480
23.1.3 表编辑器 484
23.1.4 性能管理 485
23.1.5 备份与恢复 489
23.1.6 数据库实用程序 490
23.1.7 数据保护、治理、风险和合规性工具 491
23.1.8 数据仓库、分析和商业智能 494
23.1.9 编程和开发工具 496
23.1.10 杂项工具 497
23.2 研究原生DBA工具 499
23.3 评估DBA工具供应商 500
23.4 小结 502
23.5 回顾 503
第24章 DBA的经验法则 504
24.1 记录每一件事 504
24.2 一切都井然有序 504
24.3 自动化 505
24.4 知识共享 507
24.5 分析、简化和专注 508
24.6 不要惊慌 509
24.7 测量两次,切割一次 509
24.8 了解业务,不只是技术 510
24.9 不要成为隐士 511
24.10 任意使用所有的资源 511
24.11 不断更新 512
24.12 投资自己 512
24.13 小结 513
24.14 最后的检验 513
附录A 数据库基本原理 516
附录B DBMS供应商 521
附录C DBA工具供应商 526
附录D DBA的网络资源 531
附录E DBA公开招聘样本 538
参考书目 542
术语表 563