第1章 Oracle数据库基础知识 1
1.1 什么是关系数据库 1
1.1.1 关系数据库模型 1
1.1.2 关系数据模型的创始人 2
1.2 Oracle数据库发展简史 3
1.2.1 公司之初 3
1.2.2 Oracle数据库的发展历程 4
1.3 数据库RDBMS 4
1.4 SQL语言简介 5
1.4.1 SQL语言概述 6
1.4.2 SQL语句 6
1.5 本章小结 8
第2章 Oracle 12c数据库初体验 9
2.1 安装数据库的环境要求 9
2.2 Windows环境下Oracle 12c的安装步骤 10
2.3 SQLPLUS工具以及SCOTT用户 18
2.4 本章小结 20
第3章 数据库的启动与关闭 21
3.1 启动数据库 21
3.1.1 数据库启动过程 21
3.1.2 数据库启动到NOMOUNT状态 22
3.1.3 数据库启动到MOUNT状态 28
3.1.4 数据库启动到OPEN状态 29
3.2 关闭数据库 32
3.2.1 数据库关闭过程 32
3.2.2 数据库关闭的几个参数及其含义 35
3.3 Quiesce与Suspend数据库 36
3.4 本章小结 39
第4章 Oracle数据库体系结构 41
4.1 Oracle体系结构概述 41
4.2 Oracle数据库体系结构 41
4.2.1 Oracle服务器和实例 42
4.2.2 Oracle数据库的物理结构(文件组成) 43
4.2.3 Oracle数据库参数文件和密码文件 44
4.3 数据库连接(connection)与会话(session) 44
4.3.1 数据库连接(connection) 44
4.3.2 会话(session) 45
4.4 Oracle数据库的内存结构 47
4.4.1 共享池(shared pool) 47
4.4.2 数据库高速缓冲区(database buffer cache) 52
4.4.3 重做日志高速缓冲区(redo buffer cache) 56
4.4.4 大池(large pool)和Java池 58
4.4.5 流池(streaming pool) 59
4.4.6 PGA(进程全局区)和UGA(用户全局区) 59
4.4.7 如何获得内存缓冲区的信息 61
4.5 Oracle服务器进程和用户进程 63
4.6 Oracle数据库后台进程 64
4.6.1 系统监控进程(SMON) 64
4.6.2 进程监控进程(PMON) 64
4.6.3 数据库写进程(DBWR) 65
4.6.4 重做日志写进程(LGWR) 66
4.6.5 归档日志进程(ARCH) 67
4.6.6 校验点进程(checkpoint process) 69
4.7 本章小结 70
第5章 SQL语言概述 71
5.1 SQL语句的分类 71
5.2 SQL的查询语句 72
5.2.1 SELECT语句的语法及书写要求 72
5.2.2 简单查询 73
5.2.3 特定的列查询 74
5.2.4 WHERE子句 75
5.2.5 列标题的默认显示格式 76
5.2.6 在SQL语句中使用列的别名 77
5.2.7 算数运算符及其使用 77
5.2.8 DISTINCT运算符 78
5.2.9 连接(contatenation)运算符及使用 80
5.3 书写规范 81
5.4 单行函数 82
5.4.1 字符型单行函数 82
5.4.2 数字型单行函数 86
5.4.3 日期型单行函数 88
5.5 空值(NULL)和空值处理函数 92
5.5.1 什么是空值 92
5.5.2 NVL函数和NVL2函数 94
5.5.3 NULLIF函数 96
5.5.4 COALESCE函数 97
5.6 条件表达式 98
5.6.1 CASE表达式 99
5.6.2 DECODE函数 100
5.7 分组函数 101
5.7.1 AVG和SUM函数 101
5.7.2 MAX和MIN函数 102
5.7.3 COUNT函数 102
5.7.4 GROUP BY子句 103
5.7.5 分组函数的嵌套使用 104
5.7.6 HAVING子句 104
5.8 数据操纵语言(DML) 105
5.8.1 INSERT语句 106
5.8.2 UPDATE语句 108
5.8.3 DELETE语句 110
5.9 本章小结 110
第6章 数据字典 111
6.1 数据字典中的内容 111
6.2 使用和操作数据字典视图 111
6.3 数据字典视图分类 112
6.4 使用数据字典视图 117
6.5 动态性能视图及使用 120
6.6 本章小结 123
第7章 网络配置管理 124
7.1 Oracle的网络连接 124
7.2 服务器端监听器配置 125
7.2.1 动态注册 128
7.2.2 静态注册 131
7.2.3 连接测试 134
7.2.4 监听程序管理 136
7.3 客户端配置 138
7.3.1 本地命名 138
7.3.2 简单命名 140
7.4 Oracle数据库服务器支持的两种连接方式 141
7.4.1 服务器进程 141
7.4.2 共享连接 142
7.4.3 共享连接涉及初始化参数 142
7.4.4 共享连接的工作过程 143
7.4.5 共享连接的配置 144
7.4.6 共享连接的一些问题 148
7.4.7 专有连接 148
7.5 数据库驻留连接池 150
7.5.1 DRCP的工作原理 150
7.5.2 如何配置DRCP 151
7.6 本章小结 155
第8章 内存管理 156
8.1 内存架构 156
8.1.1 PGA概述 157
8.1.2 SGA概述 159
8.1.3 UGA概述 161
8.2 内存管理 161
8.2.1 配置内存组件 162
8.2.2 SGA与PGA的自动调整 164
8.2.3 限制PGA的大小 165
8.2.4 配置数据库智能高速缓存 165
8.3 本章小结 167
第9章 用户管理和资源文件 168
9.1 创建用户 168
9.1.1 初试新用户的创建 168
9.1.2 创建用户语法及参数含义 171
9.1.3 改变用户参数 172
9.2 删除用户 174
9.3 用户和数据库模式 175
9.4 用户管理中的重要文件——概要文件 176
9.4.1 什么是概要文件 177
9.4.2 资源管理和口令管理概要文件的使用步骤 177
9.4.3 使用概要文件管理会话资源 177
9.4.4 口令管理参数以及含义 179
9.4.5 创建口令管理的概要文件 182
9.5 修改和删除概要文件 183
9.6 本章小结 185
第10章 控制文件和数据库启动 186
10.1 控制文件和数据库启动概述 186
10.2 如何获得控制文件的信息 187
10.3 控制文件的内容 188
10.3.1 控制文件中所存的内容 188
10.3.2 如何查看控制文件中所存内容的记录信息 189
10.4 存储多重控制文件 191
10.4.1 多重控制文件 191
10.4.2 移动控制文件 192
10.4.3 添加控制文件 196
10.5 备份和恢复控制文件 196
10.5.1 控制文件的备份 196
10.5.2 控制文件的恢复 198
10.6 本章小结 201
第11章 重做日志管理 202
11.1 Oracle为何引入重做日志 202
11.2 读取重做日志文件信息 203
11.2.1 v$log视图 204
11.2.2 v$logfile视图 204
11.2.3 判断是否归档 205
11.2.4 设置数据库为归档模式 205
11.3 重做日志组及其管理 207
11.3.1 添加重做日志组 207
11.3.2 删除联机重做日志组 210
11.4 重做日志成员及维护 211
11.4.1 添加重做日志成员 211
11.4.2 删除联机重做日志成员 213
11.4.3 重设联机重做日志的大小 214
11.5 清除联机重做日志 217
11.6 日志切换和检查点事件 218
11.7 归档重做日志 219
11.8 本章小结 219
第12章 管理归档日志 220
12.1 归档模式 220
12.2 设置归档模式 221
12.3 设置归档进程与归档目录 223
12.4 维护归档目录 229
12.5 本章小结 234
第13章 表空间与数据文件管理 235
13.1 Oracle数据库的逻辑结构 235
13.2 表空间的分类以及创建表空间 237
13.3 表空间磁盘管理的两种方案 240
13.3.1 数据字典管理的表空间磁盘管理 240
13.3.2 本地管理的表空间磁盘管理 241
13.4 创建表空间 241
13.4.1 创建数据字典管理的表空间 241
13.4.2 创建本地管理的表空间 243
13.4.3 创建还原表空间 244
13.4.4 创建临时表空间 246
13.4.5 默认临时表空间 248
13.4.6 创建大文件表空间 251
13.5 表空间管理 255
13.5.1 脱机管理 255
13.5.2 只读管理 257
13.6 表空间和数据文件管理 260
13.6.1 修改表空间大小 260
13.6.2 修改表空间的存储参数 264
13.6.3 删除表空间 265
13.6.4 迁移数据文件 265
13.6.5 数据字典和本地管理的表空间 269
13.7 本章小结 270
第14章 UNDO表空间管理 271
14.1 引入还原段的作用 271
14.2 还原段如何完成读一致性 272
14.2.1 Oracle如何实现读一致性 272
14.2.2 读一致性的进一步复杂化分析 272
14.2.3 读一致性的具体步骤 274
14.3 还原段的实例恢复与事务回滚 274
14.4 UNDO SEGMENT的选择算法 274
14.5 讨论undo_retention参数 275
14.6 还原段分类 277
14.7 Oracle的自动还原段管理 278
14.8 创建还原表空间 279
14.9 维护还原表空间 281
14.10 切换还原表空间 282
14.10.1 UNDO表空间切换示例 283
14.10.2 UNOD表空间切换涉及的状态 283
14.10.3 删除UNDO表空间示例 284
14.11 临时UNDO 286
14.12 dba undo extents数据字典 287
14.13 本章小结 288
第15章 事务(Transaction) 289
15.1 Oracle事务的由来 289
15.2 什么是事务 289
15.3 事务的特点 290
15.4 事务控制 290
15.4.1 使用COMMIT的显式事务控制 291
15.4.2 使用ROLLBACK实现事务控制 293
15.4.3 程序异常退出对事务的影响 294
15.4.4 使用AUTOCOMMIT实现事务的自动提交 296
15.5 本章小结 297
第16章 角色管理 298
16.1 什么是角色 298
16.2 创建角色 300
16.3 修改角色 301
16.4 赋予角色权限 302
16.5 赋予用户角色 304
16.6 默认角色 308
16.7 禁止和激活角色 311
16.8 回收和删除角色 313
16.9 Oracle预定义的角色 316
16.10 本章小结 318
第17章 管理和维护表 319
17.1 Oracle基本的数据存储机制——表 319
17.1.1 数据的存储类型 319
17.1.2 行ID(ROWID) 321
17.2 创建表 322
17.2.1 Oracle创建表的规则 322
17.2.2 创建普通表 322
17.2.3 创建临时表 325
17.3 不可见字段 329
17.4 段空间管理 333
17.5 理解高水位线(HWM) 333
17.6 理解行迁移 334
17.7 创建索引组织表(IOT) 335
17.7.1 IOT表的结构 335
17.7.2 创建IOT表 337
17.8 表参数以及参数维护 337
17.9 维护列 340
17.10 删除和截断表 345
17.11 表压缩 348
17.12 TOP-N查询 349
17.13 本章小结 351
第18章 索引 352
18.1 索引的概念 352
18.2 Oracle实现数据访问的方法 353
18.2.1 全表扫描(Full Table Scan,FTS) 353
18.2.2 通过行ID(ROWID) 353
18.2.3 使用索引 354
18.3 索引扫描类型 355
18.3.1 索引唯一扫描(INDEX UNIQUE SCAN) 355
18.3.2 索引范围扫描(INDEX RANGE SCAN) 356
18.3.3 索引全扫描(INDEX FULL SCAN) 356
18.3.4 索引快速扫描(INDEX FAST FULL SCAN) 357
18.4 限制索引使用的情况 357
18.4.1 使用不等于运算符 357
18.4.2 使用IS NULL或IS NOT NULL 358
18.4.3 使用函数 359
18.4.4 比较不匹配的数据类型 360
18.5 集群因子 361
18.6 二元高度 361
18.7 直方图 363
18.8 建立索引 364
18.9 查看索引 367
18.10 B-树索引 368
18.10.1 B树索引的工作原理 368
18.10.2 B树索引的注意事项 369
18.11 位图索引 369
18.11.1 位图索引的使用讨论 369
18.11.2 创建位图索引 370
18.11.3 位图索引的插入问题 371
18.12 HASH索引 372
18.13 反向键索引 374
18.14 基于函数的索引 375
18.15 监控索引的使用 376
18.16 重建索引 378
18.17 维护索引 380
18.18 删除索引 382
18.19 本章小结 382
第19章 系统和对象权限管理 383
19.1 权限的概念和分类 383
19.2 系统权限 383
19.3 授予用户系统权限 385
19.4 SYSDBA和SYSOPER系统特权 389
19.5 回收用户系统权限 390
19.6 授予对象权限 393
19.7 回收对象权限 396
19.8 本章小结 397
第20章 视图 398
20.1 什么是视图 398
20.2 创建视图 398
20.3 使用视图的WITH子句 402
20.4 视图的修改 404
20.5 Oracle的视图管理 406
20.5.1 通过数据字典查询视图 406
20.5.2 Oracle视图查询的内部过程 407
20.6 视图DML操作的限制 407
20.6.1 简单视图 408
20.6.2 复杂视图 408
20.7 视图的优点 408
20.8 删除视图 409
20.9 物化视图 409
20.9.1 什么是物化视图 409
20.9.2 查询重写的概念 410
20.9.3 物化视图的同步 410
20.9.4 创建物化视图 412
20.9.5 物化视图的使用环境 414
20.10 本章小结 415
第21章 序列号和同义词 416
21.1 什么是序列号 416
21.2 创建和使用序列号 416
21.3 修改序列号 420
21.4 会话序列号 423
21.5 删除序列号 423
21.6 什么是同义词 424
21.7 创建公有同义词 425
21.8 创建私有同义词 426
21.9 删除同义词 427
21.10 切换用户模式 428
21.11 本章小结 429
第22章 RMAN备份与恢复数据库 430
22.1 RMAN概述 430
22.2 RMAN的独特之处 430
22.3 RMAN系统架构详解 431
22.4 快闪恢复区(flash recovery area) 432
22.4.1 修改快闪恢复区大小 433
22.4.2 解决快闪恢复区的空间不足问题 434
22.5 建立RMAN到数据库的连接 435
22.6 RMAN的相关概念与配置参数 437
22.7 RMAN备份控制文件 439
22.8 RMAN实现脱机备份 442
22.9 RMAN联机备份 444
22.9.1 联机备份前的准备工作 444
22.9.2 联机备份整个数据库 445
22.9.3 联机备份一个表空间 450
22.9.4 联机备份一个数据文件 451
22.9.5 RMAN备份坏块处理方式 453
22.10 RMAN的增量备份 453
22.11 快速增量备份 456
22.12 在映像副本上应用增量备份 457
22.13 创建和维护恢复目录 459
22.14 RMAN的脚本管理 463
22.15 使用RMAN非归档模式下的完全恢复 465
22.15.1 控制文件、数据文件以及重做日志文件丢失的恢复 465
22.15.2 只有数据文件丢失的恢复 471
22.15.3 联机重做日志文件和数据文件损坏的恢复 473
22.15.4 如何将数据文件恢复到其他磁盘目录下 476
22.16 使用RMAN归档模式下的完全恢复 477
22.16.1 非系统表空间损坏的恢复 477
22.16.2 系统表空间损坏的恢复 480
22.16.3 所有数据文件丢失的恢复 482
22.17 RMAN实现数据块恢复 482
22.18 RMAN的备份维护指令 487
22.18.1 RMAN的VALIDATE BACKUPSET指令 487
22.18.2 RMAN的RESTORE...VALIDATE指令 488
22.18.3 RMAN的RESTORE...PREVIEW指令 489
22.18.4 RMAN的LIST指令 490
22.18.5 RMAN的REPORT指令 494
22.19 本章小结 495
第23章 Oracle闪回技术 496
23.1 理解闪回级别 496
23.2 闪回数据库 496
23.2.1 闪回数据库概述 496
23.2.2 启用闪回数据库 497
23.2.3 关闭闪回数据库 501
23.2.4 闪回数据库方法 502
23.2.5 使用闪回数据库 503
23.2.6 监控闪回数据库 506
23.2.7 使用闪回数据库的限制 508
23.3 闪回删除 508
23.3.1 闪回删除原理 508
23.3.2 回收站的使用 510
23.3.3 恢复删除的表 512
23.3.4 恢复多个同名的表 517
23.3.5 应用Purge永久删除表 519
23.4 闪回表 521
23.5 闪回版本查询 525
23.6 闪回事务查询 527
23.7 闪回查询 528
23.8 复原点技术 529
23.9 本章小结 531
第24章 手工管理的备份恢复 532
24.1 备份恢复的概念 532
24.1.1 物理备份 532
24.1.2 逻辑备份 533
24.1.3 冷备份与热备份 533
24.1.4 数据库恢复 533
24.2 非归档模式下的冷备与恢复 535
24.2.1 冷备的步骤 535
24.2.2 冷备下的恢复 537
24.2.3 缺少重做日志文件的恢复方法 540
24.3 归档模式与非归档模式 542
24.3.1 设置数据库的归档模式 542
24.3.2 设置归档进程相关参数 545
24.3.3 管理归档文件和归档目录 546
24.4 手工热备数据库的步骤 550
24.5 热备过程中对数据库崩溃的处理方法 553
24.6 热备的原理 556
24.7 备份控制文件 557
24.8 介质恢复的原理 561
24.9 归档模式下的完全恢复 567
24.9.1 数据文件在有备份情况下的恢复 568
24.9.2 数据文件在无备份情况下的恢复 572
24.9.3 系统表空间数据文件损坏的完全恢复 574
24.9.4 当前UNDO表空间损坏的完全恢复 576
24.9.5 非当前UNDO表空间损坏的完全恢复 579
24.10 何时使用不完全恢复 583
24.10.1 不完全恢复的场合 583
24.10.2 不完全恢复的类型 583
24.11 所有控制文件丢失的恢复方法 584
24.11.1 使用备份的控制文件 584
24.11.2 重建控制文件 588
24.12 本章小结 593