第一部分 数据库体系结构 1
第1章 Oracle体系结构 1
1.1 数据库概述及实例 1
1.2 数据库 1
1.2.1 表空间 2
1.2.2 文件 2
1.3 实例 3
1.4 数据库内部结构 3
1.4.1 表、列和数据类型 4
1.4.2 约束条件 5
1.4.3 抽象数据类型 6
1.4.4 分区和子分区 7
1.4.5 用户 7
1.4.6 模式 8
1.4.7 索引 8
1.4.8 簇 9
1.4.9 散列簇 9
1.4.10 视图 9
1.4.11 序列 10
1.4.12 过程 10
1.4.13 函数 10
1.4.14 软件包 11
1.4.15 触发器 11
1.4.16 同义词 12
1.4.17 权限及角色 12
1.4.18 数据库链接 13
1.4.19 段、盘区和块 14
1.4.20 回滚段 14
1.4.21 快照和显形图 14
1.5 内部存储结构 15
1.5.1 系统全局区 15
1.5.2 环境区 17
1.5.3 程序全局区 17
1.6 后台进程 18
1.7 外部结构 20
1.7.1 重做日志 20
1.7.2 控制文件 21
1.7.3 跟踪文件与警告日志 21
1.8 基本数据库的实现 21
1.8.1 备份/恢复功能 22
1.8.2 安全性能 23
1.8.3 典型数据库逻辑设计 24
1.8.4 典型数据库物理设计 24
1.9 逻辑模型约定 25
1.9.1 一对一关系 25
1.9.2 一对多关系 26
1.9.3 多对多关系 26
1.10 创建数据库 27
1.10.1 修改创建模板的脚本文件 27
1.10.2 创建数据库后修改MAXDATAFILES 27
1.10.3 使用OEM 28
第2章 硬件配置研究 30
2.1 结构概述 30
2.2 独立主机 31
2.2.1 磁盘阵列独立主机 31
2.2.2 磁盘镜像独立主机 34
2.2.3 多数据库独立主机 35
2.3 网络主机 36
2.3.1 数据库网络 37
2.3.2 远程更新:高级复制选项 39
2.3.3 集群服务器:Oracle并行服务器 40
2.3.4 多处理器:并行查询和并行装载选项 41
2.3.5 客户机/服务器数据库应用 42
2.3.6 三层体系结构 43
2.3.7 Oracle透明网关访问 44
2.3.8 备用数据库 44
2.3.9 复制型数据库 45
2.3.10 外部文件访问 45
第3章 数据库逻辑设计 47
3.1 最终产品 47
3.2 优化软结构 47
3.2.1 起点:SYSTEM表空间 47
3.2.2 分离应用程序数据段:DATA 48
3.2.3 分离应用程序索引段:INDEXES 48
3.2.4 分离工具段:TOOLS 49
3.2.5 分离回滚段:RBS 50
3.2.6 分离临时段:TEMP 50
3.2.7 分离用户:USERS 51
3.3 扩展OFA 51
3.3.1 分离低使用的数据段:DATA_2 51
3.3.2 分离低使用的索引段:INDEXS_2 52
3.3.3 分离工具索引:TOOLS_1 52
3.3.4 分离特殊回滚段:RBS_2 53
3.3.5 分离用户特殊临时段:TEMP_USER 53
3.3.6 附加的应用特殊OFA扩展 54
3.4 合理的逻辑设计 54
3.5 解决方案 55
第4章 数据库物理设计 57
4.1 数据库文件设计 57
4.1.1 数据文件间的I/O冲突 57
4.1.2 所有数据库文件中的I/O瓶颈 59
4.1.3 后台进程中的并发I/O操作 61
4.1.4 定义系统恢复能力与性能目标 61
4.1.5 系统硬件及结构镜像的定义 62
4.1.6 识别专用于数据库的磁盘 62
4.1.7 选择正确的设计 63
4.2 I/O权值估计的检验 66
4.3 如何解决磁盘不足问题 69
4.4 解决方案 70
4.4.1 小型开发数据库设计 70
4.4.2 产品OLTP数据库设计 70
4.4.3 具有历史数据的产品OLTP数据库设计 71
4.4.4 数据仓库设计 72
4.5 文件位置 75
4.6 数据库空间使用概述 76
4.6.1 storage子句的意义 77
4.6.2 表段 78
4.6.3 索引段 79
4.6.4 回滚段 79
4.6.5 临时段 79
4.6.6 自由空间 80
4.7 重新确定数据文件大小 81
4.8 数据库文件的移动 83
4.8.1 移动数据文件 83
4.8.2 用Oracle Enterprise Manager移动数据文件 85
4.8.3 移动联机重做日志文件 91
4.8.4 移动控制文件 91
4.9 段空间的重新分配方法 92
4.9.1 数据文件收缩 92
4.9.2 数据表、簇、索引的收缩 93
4.9.3 重建索引 94
4.10 物理条件的满足 95
第二部分 数据库管理 97
第5章 开发过程管理 97
5.1 成功三要素 97
5.2 培植过程 97
5.3 管理过程 98
5.3.1 定义环境 98
5.3.2 角色的定义 99
5.3.3 交付使用 100
5.3.4 Oracle8i中引入的开发环境特性 102
5.3.5 确定数据库对象的大小 107
5.3.6 迭代开发 125
5.3.7 迭代列定义 126
5.4 管理技术 126
5.4.1 CASE工具 127
5.4.2 共享目录 127
5.4.3 项目管理数据库 127
5.4.4 讨论数据库 127
5.5 管理包开发 127
5.5.1 生成图表 128
5.5.2 空间需求 128
5.5.3 调整目标 128
5.5.4 安全需求 128
5.5.5 数据需求 128
5.5.6 版本要求 128
5.5.7 执行规划 129
5.5.8 验收测试过程 129
5.5.9 测试环境 129
5.6 管理环境 130
第6章 多数据库的监控 131
6.1 常见问题 131
6.1.1 表空间中的自由空间缺乏 131
6.1.2 临时段的空间不足 132
6.1.3 回滚段达到扩展极限 132
6.1.4 数据段碎片 132
6.1.5 自由空间碎片 133
6.1.6 SGA区域大小设置得不正确 133
6.2 目标选择 133
6.3 最终产品 134
6.4 建立Command Center数据库 136
6.4.1 数据获取 139
6.4.2 生成报警报表 143
6.4.3 空间汇总报表 147
6.4.4 数据过滤 149
6.5 监控内存对象 150
6.5.1 UTLBSTAT及UTLESTAT的必要修改 150
6.5.2 统计报表解释 156
6.5.3 统计报表的扩展 159
6.6 良好管理的数据库 165
第7章 回滚段管理 166
7.1 回滚段概述 166
7.1.1 数据库对回滚段的使用 166
7.1.2 激活回滚段 168
7.1.3 为事务处理指定回滚段 169
7.2 回滚段的空间使用 169
7.3 监控回滚段使用 173
7.3.1 监控当前空间分配 173
7.3.2 收缩回滚段 173
7.3.3 监控当前状态 174
7.3.4 监控动态扩展 174
7.3.5 每个回滚段中的事务 177
7.3.6 回滚段中的数据量 178
7.4 使用Oracle Enterprise Manager管理回滚段 178
7.4.1 从OEM创建回滚段 179
7.4.2 创建与现有回滚段一样的回滚段 180
7.4.3 设置回滚段为联机状态 181
7.4.4 设置回滚段为脱机状态 182
7.4.5 删除回滚段 184
7.5 选择回滚段的数量和大小 185
7.5.1 事务条目数量 185
7.5.2 事务数量 186
7.5.3 确定最佳值 189
7.5.4 创建回滚段 191
7.5.5 产品回滚段与数据装载回滚段 192
7.6 解决方案 192
7.6.1 OLTP应用 192
7.6.2 数据仓库/批处理应用 193
第8章 数据库调整 194
8.1 调整应用程序设计 194
8.1.1 高效的表设计 194
8.1.2 分配CPU请求 195
8.1.3 高效地进行应用设计 196
8.2 调整SQL 197
8.3 调整内存使用 201
8.4 调整数据存储 204
8.4.1 段的碎片整理 204
8.4.2 自由盘区的碎片整理 206
8.4.3 标识链接行 210
8.4.4 增加Oracle块尺寸 211
8.4.5 使用索引组织表 211
8.5 调整数据操作 212
8.5.1 大量数据的插入:使用SQL*Loader Direct Path选项 212
8.5.2 大量数据的插入:常见陷阱和成功诀窍 214
8.5.3 大量数据的删除:truncate命令 215
8.5.4 分区 216
8.6 调整物理存储 216
8.6.1 整理文件碎片 216
8.6.2 使用原始设备 217
8.6.3 使用RAID和镜像 217
8.7 调整逻辑存储 217
8.8 减少网络流量 218
8.8.1 数据复制 218
8.8.2 使用远程过程调用 222
8.9 使用OEM和性能调整组件 224
8.9.1 Oracle Expert组件 224
8.9.2 Oracle性能管理器选项 227
8.10 调整方案 229
第9章 数据库安全与审计 231
9.1 安全性能 231
9.1.1 帐户安全性 231
9.1.2 对象权限 231
9.1.3 系统级角色和权限 232
9.2 实现安全性 232
9.2.1 操作系统安全性 232
9.2.2 创建用户 232
9.2.3 撤消用户 234
9.2.4 系统级权限 235
9.2.5 用户环境文件 237
9.2.6 口令管理 239
9.2.7 防止口令重新使用 240
9.2.8 设置口令复杂度 241
9.2.9 数据库帐户与主机帐户相连 245
9.2.10 用口令文件进行验证 247
9.2.11 口令保护 247
9.2.12 对象级权限 248
9.2.13 列表权限 251
9.3 限制可用的命令:产品用户环境文件 253
9.4 登录期间的口令安全 253
9.5 口令加密与技巧 253
9.5.1 如何存储口令 254
9.5.2 设置不存在的口令 254
9.5.3 变成另一个用户 255
9.6 审计 257
9.6.1 登录审计 257
9.6.2 操作审计 258
9.6.3 对象审计 259
9.7 保护审计跟踪 260
9.8 分布式环境的安全性 260
9.9 解决方案 260
第10章 优化备份和恢复过程 262
10.1 特性 262
10.2 逻辑备份 262
10.2.1 导出 262
10.2.2 导入 262
10.3 物理备份 263
10.3.1 脱机备份 263
10.3.2 联机备份 263
10.4 实现 264
10.4.1 导出 264
10.4.2 导入 285
10.4.3 脱机备份 289
10.4.4 联机备份 291
10.4.5 备用数据库 301
10.5 备份过程集成 301
10.5.1 逻辑备份和物理备份集成 302
10.5.2 数据库和操作系统备份集成 303
10.6 使用备份过程时的恢复情形 304
10.6.1 实例失败 304
10.6.2 介质失败 305
10.6.3 恢复意外删除或修改的对象 306
10.6.4 并行恢复 307
10.6.5 Recovery Manager 308
第11章 管理Oracle Financials和其他软件包及实用程序 317
11.1 软件包的通用管理准则 317
11.1.1 定制数据库结构 317
11.1.2 安全与数据访问控制 321
11.1.3 事务管理 322
11.1.4 文件定位 322
11.1.5 监控 322
11.1.6 版本考虑 323
11.1.7 DBA的角色 324
11.2 管理Oracle Financials软件包的特殊准则 324
11.2.1 数据库结构 324
11.2.2 数据库访问 326
11.2.3 并发管理器 327
11.2.4 演示数据库 328
11.2.5 版本管理 328
11.2.6 文件定位 328
11.2.7 init.ora参数 329
11.2.8 最活跃的表和索引 330
11.2.9 优化程序 330
11.3 管理Oracle Designer的特殊准则 330
11.3.1 数据库结构 331
11.3.2 init.ora参数 332
11.3.3 最活跃的表和索引 333
11.3.4 优化程序 333
11.4 管理其他软件包和实用程序 333
11.4.1 ConText 333
11.4.2 SQL*Loader 335
11.4.3 程序设计接口 336
第12章 大型数据库管理 337
12.1 设置环境 337
12.1.1 确定大型数据库的容量 337
12.1.2 设置支持区大小 340
12.1.3 选择物理设计 341
12.1.4 分区 342
12.1.5 创建显形图 347
12.1.6 创建完全索引表 348
12.1.7 创建和管理索引组织表 348
12.1.8 创建和管理位映射索引 349
12.2 事务管理 350
12.2.1 配置批事务环境 350
12.2.2 装载数据 352
12.2.3 插入数据 352
12.2.4 删除数据 353
12.3 备份 355
12.3.1 备份需求及策略评估 356
12.3.2 备份方案 357
12.4 调整 357
12.5 使用可迁移表空间 359
12.5.1 生成可迁移的表空间集 360
12.5.2 插入可迁移的表空间集 360
12.6 局部管理的表空间 361
第三部分 网络Oracle 363
第13章 SQL*Net V2和Net8 363
13.1 SQL*Net V2和Net8概述 363
13.1.1 连接描述符 365
13.1.2 服务名 366
13.1.3 监听程序 367
13.1.4 Oracle8i中的监听程序 368
13.2 使用Net8 Configuration Assistant 369
13.2.1 配置监听程序 370
13.2.2 命名方法配置 371
13.2.3 本地网络服务名的配置 374
13.2.4 目录服务配置 374
13.3 使用Net8 Assistant 375
13.3.1 多协议交换 377
13.3.2 使用连接管理器 378
13.3.3 使用Oracle Names 379
13.4 应用样例:客户机/服务器应用程序 380
13.5 应用样例:数据库链接 380
13.6 应用样例:copy命令 381
13.7 Oracle Names的服务器/客户机配置 383
13.8 调整SQL*Net和Net8 383
第14章 UNIX上的Oracle联网技术 385
14.1 主机的识别 385
14.2 数据库的识别 385
14.3 服务的识别 386
14.4 启动监听程序服务器进程 388
14.5 控制监听程序服务器进程 388
14.6 调试连接问题 390
第15章 Windows NT上的联网技术 392
15.1 Oracle和Windows NT 392
15.2 Oracle和Net8 395
15.2.1 Net8监听程序 396
15.2.2 使用多线程服务器 396
15.3 配置Windows NT为后端服务器 397
15.3.1 降低交互式前台应用程序的优先权 398
15.3.2 减少Windows NT服务器的文件缓存 398
15.3.3 禁止不必要的服务 398
15.3.4 取消不使用的网络协议并重新设置连接顺序 399
15.3.5 其他可用的配置选项 399
第16章 分布式数据库管理 400
16.1 远程查询 400
16.2 远程数据操作:两阶段提交 401
16.3 动态数据复制 402
16.4 分布式数据管理 403
16.4.1 基础结构:实施位置透明性 403
16.4.2 数据库链接管理 406
16.4.3 数据库触发器管理 407
16.4.4 快照管理 408
16.4.5 选择刷新类型 415
16.4.6 快照的脱机实例化 415
16.4.7 清除快照日志 416
16.5 分布式事务管理 417
16.6 数据库域和群 418
16.7 分布式数据库监控 419
16.8 分布式数据库调整 420
16.9 使用作业队列 422
第17章 配置客户机/服务器和Web网络环境 424
17.1 客户机/服务器处理概述 424
17.2 瘦客户机配置概述 425
17.3 配置服务器 429
17.3.1 标识可用主机 429
17.3.2 标识可用的服务 430
17.3.3 标识可用数据库 430
17.3.4 启动Net8 432
17.4 配置客户机 432
17.4.1 标识可用的主机 432
17.4.2 客户机说明 433
17.5 中间层应用服务器 433
17.5.1 运行Net8 433
17.5.2 Oracle与防火墙 433
第四部分 附录 435
附录A DBA的SQL命令参考 435
附录B Oracle8.0和Oracle8i中的init.ora参数变化 582
附录C 24×7可用性的重新设计 599