第1部分 数据库体系结构 3
第1章 Oracle体系结构概述 3
1.1 数据库和实例概述 4
1.1.1 数据库 4
1.1.2 实例 5
1.2 Oracle逻辑存储结构 5
1.2.1 表空间 5
1.2.2 块 6
1.2.3 盘区 6
1.2.4 段 6
1.3 Oracle逻辑数据库结构 7
1.3.1 表 7
1.3.2 约束 14
1.3.3 索引 16
1.3.4 视图 17
1.3.5 用户和模式 19
1.3.6 配置文件 19
1.3.7 序列 19
1.3.8 同义词 20
1.3.9 PL/SQL 20
1.3.10 外部文件访问 21
1.3.11 数据库链接和远程数据库 21
1.4 Oracle物理存储结构 22
1.4.1 数据文件 23
1.4.2 重做日志文件 23
1.4.3 控制文件 23
1.4.5 初始参数文件 24
1.4.4 归档的日志文件 24
1.4.7 备份文件 25
1.4.8 Oracle管理文件 25
1.4.6 警报和跟踪日志文件 25
1.4.9 密码文件 26
1.5 多路传输数据库文件 26
1.5.1 自动存储管理 26
1.5.2 手工的多路传输 26
1.6 Oracle内存结构 29
1.6.1 系统全局区域 29
1.6.2 程序全局区域 31
1.6.3 软件代码区域 31
1.6.4 后台进程 32
1.7.2 脱机备份 34
1.7 备份/恢复概述 34
1.7.1 导出/导入 34
1.7.3 联机备份 35
1.7.4 RMAN 35
1.8 安全功能 35
1.8.1 权限和角色 35
1.8.2 审核 36
1.8.3 细粒度的审核 36
1.8.4 虚拟私有数据库 36
1.8.5 标号安全性 37
1.9 实时应用集群 37
1.12.1 基本初始参数 38
1.12 Oracle初始参数 38
1.11 Oracle企业管理器 38
1.10 Oracle流 38
1.12.2 高级初始参数 43
1.13 软件安装 43
1.13.1 授权和安装选项概述 44
1.13.2 使用OUI安装Oracle软件 44
1.13.3 使用DBCA创建数据库 45
1.13.4 手工创建数据库 55
第2章 Oracle Database 10g的升级 61
2.1 选择升级方法 62
2.2 升级前的准备工作 63
2.3 使用数据库升级助手 63
2.4 执行手工直接升级 64
2.5 使用Export和Import 66
2.5.1 使用的Export和Import版本 66
2.5.2 执行更新 67
2.6 使用数据复制方法 68
2.7 升级后的工作 68
第3章 计划和管理表空间 69
3.1 表空间的体系结构 69
3.1.1 表空间类型 70
3.1.2 优化灵活体系结构 75
3.2 Oracle安装表空间 78
3.2.1 SYSTEM 78
3.3 段分离 79
3.2.6 EXAMPLE 79
3.2.5 USERS 79
3.2.4 UNDOTBS1 79
3.2.3 TEMP 79
3.2.2 SYSAUX 79
第4章 物理数据库布局和存储管理 83
4.1 传统磁盘空间存储 84
4.1.1 调整表空间和数据文件的大小 84
4.1.2 移动数据文件 97
4.1.3 移动联机重做日志文件 100
4.1.4 移动控制文件 101
4.2 自动存储管理 103
4.2.1 ASM体系结构 103
4.2.2 创建ASM实例 104
4.2.3 ASM实例组成部分 105
4.2.4 ASM动态性能视图 107
4.2.5 ASM文件名格式 108
4.2.6 ASM文件类型和模板 109
4.2.7 管理ASM磁盘组 111
第Ⅱ部分 数据库管理 121
第5章 开发和实现应用程序 121
5.1 调整设计:最佳实践 122
5.1.1 做尽可能少的工作 122
5.1.2 做尽可能简单的工作 124
5.1.3 告诉数据库需要知道的内容 126
5.1.4 最大化环境中的吞吐量 126
5.1.5 分开处理数据 128
5.1.6 正确进行测试 128
5.1.7 标准交付 130
5.2.1 实现数据库资源管理器 132
5.2 资源管理和存储的概要 132
5.2.2 实现存储概要 136
5.2.3 调整数据库对象的大小 139
5.2.4 使用临时表 145
5.3 支持基于抽象数据类型的表 146
5.3.1 使用对象视图 147
5.3.2 抽象数据类型的安全性 149
5.3.3 索引抽象数据类型属性 151
5.4 停顿并挂起数据库 152
5.5 支持迭代式开发 153
5.5.1 迭代式的列定义 154
5.6.1 生成图表 155
5.6.2 空间需求 155
5.6 管理程序包开发 155
5.5.2 强制光标共享 155
5.6.3 调整目标 156
5.6.4 安全需求 156
5.6.5 数据需求 156
5.6.6 版本需求 156
5.6.7 执行计划 156
5.6.8 接收测试过程 157
5.6.9 测试环境 157
第6章 监控空间利用率 159
6.1.2 用于临时段的空间不充足 160
6.1.3 所分配的撤销空间过多或过少 160
6.1 常见的空间管理问题 160
6.1.1 用完表空间中的空闲空间 160
6.1.4 片断的表空间和段 161
6.2 Oracle段、盘区和块 161
6.2.1 数据块 162
6.2.2 盘区 163
6.2.3 段 164
6.3 数据字典视图和动态性能视图 164
6.3.1 DBA_TABLESPACES 165
6.3.2 DBA_SEGMENTS 165
6.3.3 DBA_EXTENTS 166
6.3.4 DBA_FREE_SPACE 166
6.3.8 DBA_ALERT_HISTORY 167
6.3.9 V$ALERT_TYPES 167
6.3.6 DBA_THRESHOLDS 167
6.3.7 DBA_OUTSTANDING_ALERTS 167
6.3.5 DBA_LMT_FREE_SPACE 167
6.3.10 V$UNDOSTAT 168
6.3.11 V$OBJECT_USAGE 168
6.3.12 V$SORT_SEGMENT 168
6.3.13 V$TEMPSEG_USAGE 168
6.4 空间管理方法学 169
6.4.1 本地管理的表空间 169
6.4.2 使用OMF管理空间 170
6.4.3 大文件表空间 171
6.4.4 自动存储管理 172
6.4.5 撤销管理的考虑事项 173
6.5 SYSAUX监控和使用 174
6.7 内置的空间管理工具 176
6.6 归档重做日志文件的管理 176
6.7.1 段顾问 177
6.7.2 撤销顾问和自动工作负载仓库 179
6.7.3 索引利用率 183
6.7.4 空间利用率警告级别 184
6.7.5 可恢复的空间分配 185
6.7.6 OS空间管理 187
6.8 空间管理脚本 187
6.8.1 无法分配额外盘区的段 188
6.8.2 表空间和数据文件中使用的空间和空闲的空间 188
6.9 自动化和流水线化通知过程 189
6.9.1 使用DBMS SCHEDULER 189
6.9.2 OEM工作控制和监控 190
第7章 使用撤销表空间管理事务 197
7.1 事务基础 198
7.2 撤销基础 198
7.2.1 回滚 198
7.2.2 读一致性 199
7.2.3 数据库恢复 199
7.2.4 闪回操作 199
7.3 管理撤销表空间 199
7.3.1 创建撤销表空间 199
7.3.2 撤销表空间的动态性能视图 205
7.3.3 撤销表空间的初始参数 205
7.3.4 多个撤销表空间 206
7.3.5 调整大小和监控撤销表空间 208
7.4 闪回特性 211
7.3.6 读一致性与成功的DML 211
7.4.1 Flashback Query 212
7.4.2 DBMS FLASHBACK 213
7.4.3 Flashback Table 215
7.4.4 Flashback Version Query 219
7.4.5 Flashback Transaction Query 222
7.5 迁移到自动撤销管理 224
第8章 数据库调整 227
8.1 调整应用程序设计 228
8.1.1 有效的表设计 228
8.1.2 CPU需求的分布 229
8.1.3 有效的应用程序设计 230
8.2 调整SQL 231
8.2.1 顺序对加载率的影响 232
8.2.2 其他的索引选项 233
8.2.3 生成解释计划 234
8.3 调整内存使用率 236
8.3.1 指定SGA的大小 238
8.3.2 使用基于成本的优化器 239
8.4 调整数据访问 239
8.4.1 本地管理的表空间 240
8.4.2 标识链行 240
8.4.3 增加Oracle块大小 241
8.4.4 使用索引组织表 242
8.5 调整数据操作 243
8.5.1 大量插入:使用SQL Loader Direct Path选项 243
8.5.2 大量数据移动:使用外部表 244
8.5.3 大量插入:常见的陷阱和成功的技巧 245
8.5.4 大量删除:truncate命令 246
8.5.5 使用分区 247
8.6 调整物理存储 247
8.7 减少网络流量 248
8.7.1 数据复制 248
8.7.2 使用远程过程调用 250
8.8 使用STATSPACK和Automatic Workload Repository 250
8.8.1 管理快照 251
8.8.2 管理基线 251
8.8.3 生成AWR报表 252
8.8.4 运行Automatic Database Diagnostic Monitor报表 252
8.9 调整解决方案 252
9.1 安装STATSPACK 255
第9章 使用STATSPACK 255
9.1.1 PERFSTAT账户的安全性 256
9.1.2 安装后 256
9.2 收集统计 257
9.3 运行统计报表 259
9.4 管理STATSPACK数据 263
9.5 卸载STATSPACK 264
第10章 数据库安全性和审计 265
10.1 非数据库的安全性 266
10.2 数据库验证方法 267
10.2.1 数据库验证 267
10.2.2 数据库管理员验证 267
10.2.3 操作系统验证 270
10.2.4 网络验证 270
10.2.5 3层验证 272
10.2.6 客户端验证 273
10.2.7 Oracle身份管理 273
10.2.8 用户账户 274
10.3 数据库授权方法 278
10.3.1 配置文件的管理 279
10.3.2 系统权限 284
10.3.3 对象权限 286
10.3.4 创建、分配和维护角色 290
10.3.5 使用VPD实现应用程序安全策略 296
10.4 审计 312
10.4.1 审计位置 313
10.4.2 语句审计 313
10.4.4 模式对象审计 317
10.4.3 权限审计 317
10.4.5 细粒度的审计 318
10.4.6 审计相关的数据字典视图 319
10.4.7 保护审计跟踪 320
10.5 数据加密技术 320
第Ⅲ部分 高可用性 325
第11章 实时应用集群 325
11.1 RAC概述 326
11.1.1 硬件配置 326
11.1.2 软件配置 326
11.1.3 网络配置 327
11.1.4 磁盘存储 328
11.2 安装和配置 328
11.2.1 操作系统配置 328
11.2.2 软件安装 332
11.3.1 服务器参数文件特征 351
11.3.2 与RAC相关的初始化参数 351
11.3 RAC数据库特征 351
11.3.3 动态性能视图 352
11.4 RAC维护 353
11.4.1 启动RAC数据库 354
11.4.2 RAC环境中的重做日志 354
11.4.3 RAC环境中的撤销表空间(Undo Tablespaces) 355
11.4.4 故障转移情况和TAF 355
11.4.5 RAC节点失效的情况 356
11.4.6 调整RAC节点数据库 361
11.4.7 表空间管理 362
12.1 功能 363
第12章 备份和恢复选项 363
12.2 逻辑备份 364
12.3 物理备份 364
12.3.1 脱机备份 365
12.3.2 联机备份 365
12.4 使用Data Pump Export和Data Pump Import 366
12.4.1 创建目录 366
12.4.2 Data Pump Export选项 367
12.4.3 启动Data Pump Export作业 369
12.5 Data Pump Import选项 372
12.5.1 启动Data Pump Import作业 374
12.5.2 比较Data Pump Export/Import和Export/Import 378
12.5.3 实现脱机备份 378
12.5.4 实现联机备份 380
12.6 备份过程集成 382
12.6.1 集成逻辑备份和物理备份 383
12.6.2 集成数据库备份和操作系统备份 384
第13章 使用恢复管理器(Recovery Manager,RMAN) 385
13.1 RMAN功能特性和组件 386
13.1.1 RMAN组件 386
13.1.2 RMAN和传统的备份方法的比较 387
13.1.3 备份类型 388
13.2 RMAN命令和选项概述 390
13.2.1 经常使用的命令 390
13.2.2 设置储存库 391
13.2.3 注册数据库 392
13.2.4 维持RMAN设置 394
13.2.5 初始化参数 396
13.2.6 数据字典和动态性能视图 397
13.3 备份操作 398
13.3.1 完全数据库备份 398
13.3.2 表空间 402
13.3.3 数据文件 403
13.3.4 映像副本 404
13.3.5 控制文件,SPFILE备份 405
13.3.6 归档重做日志 405
13.3.7 增量备份 406
13.3.8 增量更新备份 408
13.3.9 增量备份块变化跟踪 410
13.3.10 备份压缩 411
13.3.12 验证备份 412
13.3.11 使用Flash Recovery Area 412
13.4.1 块介质恢复 414
13.4 恢复操作 414
13.4.2 恢复控制文件 415
13.4.3 恢复表空间 415
13.4.4 恢复数据文件 417
13.4.5 恢复整个数据库 419
13.4.6 验证恢复操作 422
13.4.7 时间点恢复 423
13.5 其他操作 424
13.5.1 编目其他的备份 424
13.5.2 目录维护 425
13.5.3 REPORT(报表)和LIST(清单) 428
14.1 Data Guard体系结构 431
第14章 Oracle Data Guard(Oracle数据卫士) 431
14.1.1 物理与逻辑备用数据库 432
14.1.2 数据保护模式 433
14.2 LOG_ARCHIVE_DEST_n参数属性 433
14.3 创建备用数据库配置 435
14.3.1 准备主数据库 435
14.3.2 创建逻辑备用数据库 439
14.4 使用实时应用 441
14.5 管理角色——切换和故障转移 442
14.5.1 切换 442
14.5.2 切换到物理备用数据库 443
14.5.3 切换到逻辑备用数据库 444
14.5.5 到逻辑备用数据库的故障转移 445
14.5.4 到物理备用数据库的故障转移 445
14.6.1 启动和关闭物理备用数据库 446
14.6 管理数据库 446
14.6.2 在Data Guard环境下管理数据文件 447
14.6.3 在逻辑备用数据库上执行DDL 447
第15章 其他各种高可用性特性 449
15.1 flashback table命令 449
15.1.1 需要的权限 450
15.1.2 恢复删除的表 450
15.1.3 闪回到SCN或时间戳 451
15.2 flashback database命令 453
15.3.1 LogMiner的工作方式 455
15.3.2 提取数据字典 455
15.3 使用LogMiner 455
15.3.3 分析一个或多个重做日志文件 456
15.3.4 Oracle Database 10g中引入的LogMiner特性 458
15.4 联机对象重组织 459
15.4.1 联机创建索引 459
15.4.2 联机重建索引 459
15.4.3 联机合并索引 459
15.4.4 联机重建以索引组织的表 459
15.4.5 联机重新定义表 460
第Ⅳ部分 网络化的Oracle 465
第16章 Oracle网络(Oracle Net) 465
16.1 Oracle Net概述 465
16.1.1 连接描述符 468
16.1.3 使用Oracle Internet Directory(因特网目录)替换tnsnames.ora 469
16.1.2 服务名 469
16.1.4 侦听程序(Listener) 470
16.2 使用Oracle Net Configuration Assistant(Oracle Net配置助手) 472
16.3 使用Oracle Net Manager 477
16.4 启动侦听程序服务器进程 478
16.5 对侦听程序服务器进程进行控制 479
16.5.1 Oracle Connection Manager(Oracle连接管理器) 480
16.5.2 使用Connection Manager 481
16.5.3 使用Oracle Internet Directory的目录命名 484
16.6 使用Easy Connect Naming 486
16.7 使用数据库链接 487
16.8 调整Oracle Net 488
16.8.2 调试连接问题 489
16.8.1 限制资源的使用 489
第17章 管理大型数据库 491
17.1 在VLDB环境中创建表空间 492
17.1.1 大文件表空间的基本知识 493
17.1.2 创建和修改大文件表空间 493
17.1.3 大文件表空间ROWID格式 494
17.1.4 DBMS ROWID和大文件表空间 495
17.1.5 将DBVERIFY用于大文件表空间 497
17.1.6 大文件表空间的初始化参数需要考虑的因素 498
17.1.7 大文件表空间数据字典的变化 499
17.2 高级的Oracle表类型 499
17.2.1 索引组织的表 499
17.2.2 全局临时表 500
17.2.3 外部表 502
17.2.4 分区表 503
17.2.5 物化视图 526
17.3 使用位图索引 527
17.3.1 理解位图索引 527
17.3.2 使用位图索引 528
17.3.3 使用位图连接索引 528
17.4 Oracle Data Pump(Oracle数据泵) 529
17.4.1 Data Pump Export 529
17.4.2 Data Pump Import 530
17.4.3 使用可传输表空间 531
第18章 管理分布式数据库 535
18.1 远程查询 536
18.2 远程数据处理:两阶段提交 537
18.3 动态数据复制 538
18.4.1 基础设施:实施位置透明性 539
18.4 管理分布式数据 539
18.4.2 管理数据库链接 543
18.4.3 管理数据库触发器 544
18.4.4 管理物化视图 546
18.4.5 使用DBMS_MVIEW和DBMS_ADVISOR 549
18.4.6 可以执行什么类型的更新 558
18.4.7 使用物化视图改变查询执行路径 561
18.5 管理分布式事务处理 563
18.5.1 解决未确定的事务处理 563
18.5.2 提交点强度 564
18.6 监控分布式数据库 564
18.7 调整分布式数据库 565
附录A 口令验证函数 567