第1章 Oracle体系结构 1
1.1 实例的结构 2
1.1.1 实例的概念 2
1.1.2 实例的组成 3
1.2 实例中的内存结构 4
1.2.1 数据库缓冲区缓存 6
1.2.2 重做日志缓冲区 10
1.2.3 共享池 11
1.2.4 Java池 15
1.2.5 固定SGA 16
1.2.6 PGA 16
1.3 前台进程和后台进程 18
1.3.1 前台进程 19
1.3.2 后台进程DBWR 19
1.3.3 后台进程LGWR 20
1.3.4 后台进程CKPT 23
1.3.5 后台进程SMON 24
1.3.6 后台进程PMON 25
1.3.7 后台进程ARCH 25
1.3.8 数据库的实例恢复 26
1.4 实例的内存空间管理 28
1.4.1 自动内存管理 28
1.4.2 自动共享内存管理 29
1.4.3 手工共享内存管理 31
1.5 数据库的连接模式 32
1.5.1 连接与会话 32
1.5.2 专用服务器连接模式 34
1.5.3 共享服务器连接模式 35
1.5.4 如何设置共享连接模式 37
1.5.5 数据库服务器的远程连接 38
第2章 数据库的物理结构和逻辑结构 44
2.1 数据库的逻辑结构 44
2.1.1 什么是表空间 45
2.1.2 什么是段 46
2.1.3 什么是区 47
2.1.4 什么是数据块 47
2.2 表空间与数据文件 47
2.2.1 什么是数据文件 47
2.2.2 数据库中默认存在哪些表空间 48
2.2.3 表空间的创建与删除 50
2.2.4 表空间的扩展 52
2.2.5 表空间状态的改变 55
2.2.6 数据文件的移动——一种简单的数据迁移 56
2.2.7 使用非标准块的表空间 58
2.2.8 临时表空间的管理 59
2.2.9 UNDO表空间的管理 61
2.3 段的空间管理 62
2.3.1 段的空间分配 63
2.3.2 段的空间回收 66
2.4 控制文件 67
2.5 重做日志文件 68
2.5.1 重做日志的产生过程 69
2.5.2 重做日志文件的查询 70
2.5.3 重做日志文件的创建 71
2.5.4 重做日志文件的删除 72
2.6 归档日志文件 73
2.6.1 归档日志文件的产生 73
2.6.2 日志模式的切换 74
2.6.3 归档路径的设置 75
2.7 数据库中的事务 78
2.7.1 与事务有关的数据库结构 79
2.7.2 事务与备份/恢复的关系 79
2.8 数据库中的其他文件 80
2.8.1 口令文件 80
2.8.2 参数文件 83
2.8.3 警告文件与跟踪文件 85
2.9 数据字典视图与动态性能视图 86
2.9.1 数据字典视图 86
2.9.2 动态性能视图 87
2.10 数据库服务器的启动和关闭 88
2.10.1 数据库服务器的启动 88
2.10.2 数据库服务器的关闭 90
2.11 Oracle 12C在数据库结构方面的变化 92
2.11.1 什么是CDB 93
2.11.2 关于CDB中的用户 94
2.11.3 关于CDB中的数据字典视图 95
2.11.4 关于CDB中的文件 96
2.11.5 关于数据库的备份与恢复 96
2.11.6 关于数据库的迁移 97
第3章 自动存储管理(ASM) 100
3.1 ASM实例的管理 101
3.1.1 ASM实例与ASM磁盘组的关系 101
3.1.2 ASM实例的创建 103
3.1.3 ASM实例中的用户 105
3.2 ASM磁盘组的管理 106
3.2.1 ASM磁盘组的结构 106
3.2.2 ASM磁盘组的创建 109
3.2.3 ASM磁盘组的扩展 112
3.2.4 ASM磁盘组的重新平衡 113
3.2.5 ASM磁盘组的挂载和卸载 114
3.2.6 ASM磁盘组的文件模板管理 115
3.2.7 ASM磁盘组的目录管理 117
3.2.8 ASM磁盘组的应用 118
3.2.9 关于ASM磁盘组的兼容性属性 120
3.3 自动文件管理 121
3.3.1 如何激活自动文件管理功能 122
3.3.2 文件的命名规则 122
3.3.3 如何创建OMF数据库 123
3.3.4 如何创建OMF表空间 125
3.3.5 如何创建OMF控制文件 126
3.3.6 如何创建OMF重做日志文件 126
3.4 命令行工具ASMCMD的用法 127
3.4.1 如何通过ASMCMD管理ASM实例 127
3.4.2 如何通过ASMCMD管理ASM磁盘组 130
3.4.3 如何通过ASMCMD管理磁盘组中的文件 133
3.5 ASM磁盘组中的卷管理 135
3.5.1 ADVM卷的创建与删除 136
3.5.2 ADVM卷信息的查询 137
3.5.3 ADVM卷的扩展 138
3.5.4 ADVM卷的激活与关闭 138
3.6 ACFS文件系统管理 139
3.6.1 ASM磁盘组中文件系统的管理 139
3.6.2 ACFSUTIL工具的用法 141
第4章 再议事务 143
4.1 什么是事务 143
4.1.1 事务的属性 143
4.1.2 事务处理方法 144
4.2 与备份恢复有关的存储结构 147
4.2.1 快速恢复区 148
4.2.2 UNDO表空间 148
4.3 事务一致性的维护 151
4.3.1 数据库中的锁 151
4.3.2 事务的隔离级别 153
4.3.3 系统锁 158
4.3.4 死锁 159
第5章 数据库的FLASHBACK技术 161
5.1 快速恢复区的设置 161
5.2 回收站在防止误删除方面的作用 162
5.3 表的FLASHBACK查询 165
5.4 表的FLASHBACK 166
5.5 更久远的FLASHBACK———Total Recall 168
5.6 数据库的FLASHBACK 171
第6章 数据库的常规备份与恢复 174
6.1 备份与恢复的相关概念 174
6.1.1 冷备份与热备份 174
6.1.2 物理备份与逻辑备份 175
6.1.3 完全备份与增量备份 175
6.1.4 完全恢复与不完全恢复 175
6.1.5 日志模式对备份与恢复的影响 176
6.1.6 哪些情况将导致数据丢失 176
6.1.7 哪些文件需要备份 178
6.1.8 数据库“可恢复性”的保证 178
6.2 控制文件的常规备份与恢复 180
6.2.1 控制文件的常规备份方法 180
6.2.2 控制文件的重新创建——利用SQL语句 182
6.2.3 控制文件的恢复——利用二进制映像文件 183
6.3 重做日志文件的故障处理方法 188
6.3.1 重做日志文件故障的判断 188
6.3.2 重做日志文件故障的解决方法 189
6.4 数据文件的传统备份方法 191
6.5 数据文件的传统恢复方法 192
6.6 几个实际的备份与恢复的例子 194
6.6.1 模拟数据文件损坏的例子 194
6.6.2 模拟磁盘损坏的例子 195
6.6.3 针对从未备份的数据文件进行恢复的例子 195
第7章 数据库的备份与恢复——RMAN工具的用法 197
7.1 RMAN应用环境的结构 197
7.1.1 目标数据库 198
7.1.2 恢复目录 198
7.1.3 RMAN客户端 199
7.1.4 通道 199
7.1.5 备份集 200
7.1.6 映像拷贝 201
7.2 RMAN应用环境的配置 202
7.2.1 RMAN客户端的连接配置 202
7.2.2 恢复目录的创建 203
7.2.3 通道的设置 204
7.2.4 存储脚本的应用 205
7.3 控制文件的备份与恢复 207
7.3.1 控制文件的备份 207
7.3.2 控制文件的恢复 209
7.4 参数文件的备份与恢复 214
7.5 归档日志文件的备份 216
7.6 非归档模式下数据文件的备份与恢复 217
7.7 归档模式下数据文件的备份 217
7.7.1 完全备份和增量备份 218
7.7.2 备份策略的制定 220
7.7.3 备份集的大小和数量限制 222
7.7.4 快速增量备份 226
7.7.5 另一种形式的备份——映像拷贝 228
7.7.6 增量的映像拷贝 229
7.7.7 备份窗口的应用 230
7.7.8 可长期保存的备份 231
7.8 备份结果的再次备份 232
7.8.1 备份集的再次备份 233
7.8.2 映像拷贝的再次备份 234
7.9 数据文件的完全恢复 236
7.9.1 数据文件故障的判断 236
7.9.2 恢复的第一阶段——利用备份 238
7.9.3 恢复的第二阶段——利用重做日志 239
7.10 几个实际恢复的例子 240
7.10.1 针对数据文件损坏的恢复 241
7.10.2 针对磁盘损坏的恢复 242
7.10.3 一种极端情况——从未备份的数据文件 243
7.10.4 利用映像拷贝实现的快速恢复 244
7.11 恢复目录的维护 245
7.11.1 数据库备份历史的查看——LIST命令 245
7.11.2 哪些文件需要备份——REPORT命令 248
7.11.3 备份的删除——DELETE命令 250
7.11.4 备份结果有效性的检验 252
7.11.5 备份结果的另一种检验——CROSSCHECK命令 254
7.11.6 备份结果的编目 255
7.11.7 备份集的保留策略 257
7.11.8 归档日志文件的删除策略 260
第8章 RMAN的高级应用 261
8.1 数据库中坏块的恢复 261
8.1.1 数据库中坏块的检测 261
8.1.2 块介质恢复 263
8.2 表空间的跨平台迁移 264
8.2.1 字节存储次序相同时的迁移 264
8.2.2 字节存储次序不同时的迁移 266
8.3 数据库的跨平台迁移 267
8.3.1 数据库迁移之前的检查 267
8.3.2 数据库的迁移——在原系统中的转换 270
8.3.3 数据库的迁移——在新系统中的转换 273
8.4 利用备份产生一个新的数据库 276
8.4.1 在原数据库中需要完成的任务 277
8.4.2 在新系统中需要完成的任务 279
8.5 数据库的复制 285
8.5.1 针对活动数据库的复制 286
8.5.2 基于备份的复制——连接原数据库服务器 287
8.5.3 基于备份的复制——连接恢复目录数据库服务器 289
8.5.4 基于备份的复制——仅连接新的数据库实例 290
8.6 数据库的不完全恢复 292
8.6.1 关于恢复点 293
8.6.2 重做日志的分析 294
8.6.3 表空间的时间点恢复 298
8.6.4 表空间的全自动化时间点恢复 301
8.6.5 表空间的定制自动化时间点恢复 305
8.6.6 表空间的手工时间点恢复 309
8.7 数据恢复顾问在故障解决中的应用 311
8.7.1 数据库故障的检测 311
8.7.2 数据库故障的查看 312
8.7.3 解决故障的建议 314
8.7.4 数据库故障的解决 315
8.7.5 故障优先级和状态的修改 315
第9章 数据迁移的利器 317
9.1 在什么情况下对数据进行迁移 317
9.2 目录对象 319
9.3 数据泵的应用 320
9.3.1 数据泵的基本用法 320
9.3.2 表的导出/导入 323
9.3.3 一种更高效的表的导出/导入方法 327
9.3.4 用户模式的导出/导入 329
9.3.5 表空间的导出/导入 330
9.3.6 数据库的导出/导入 331
9.3.7 可传输表空间的导出/导入 332
9.4 外部表的应用 335
9.4.1 两种类型的外部表 335
9.4.2 使用ORACLELOADER访问驱动程序的外部表 336
9.4.3 与外部表(ORACLE LOADER)有关的其他文件 338
9.4.4 使用ORACLEDATAPUMP访问驱动程序的外部表 341
9.4.5 相关的数据字典视图 343
9.5 数据库链接的应用 343
9.5.1 全局数据库名称 344
9.5.2 数据库链接的属性 345
9.5.3 数据库链接的创建和删除 347
9.6 SQL*Loader的应用 349
9.6.1 SQL*Loader的基本用法 349
9.6.2 控制文件的用法 352
9.6.3 数据格式的描述 353
9.6.4 SQL*Loader的命令行参数 357