第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数据库的发展历程 3
1.3 数据库RDBMS 4
1.4 SQL语言简介 5
1.4.1 SQL语言概述 5
1.4.2 SQL语句的操作 6
1.5 本章小结 8
第2章 Oracle 11g数据库初体验 9
2.1 安装数据库的环境要求 9
2.2 Windows环境下Oracle 11g的安装步骤 9
2.3 SQL Plus工具以及scott用户 16
2.4 Linux环境下Oracle 11g的安装步骤 20
2.4.1 安装前的配置任务 20
2.4.2 安装数据库软件 24
2.4.3 启动监听 33
2.4.4 使用DBCA图形化工具建库 36
2.5 测试到数据库的连接 42
2.6 删除数据库软件 43
2.7 本章小结 43
第3章 数据库的启动与关闭 44
3.1 启动数据库 44
3.1.1 数据库启动过程 44
3.1.2 数据库启动到NOMOUNT状态 45
3.1.3 数据库启动到MOUNT状态 49
3.1.4 数据库启动到OPEN状态 50
3.2 关闭数据库 51
3.2.1 数据库关闭过程 51
3.2.2 数据库关闭的几个参数及其含义 53
3.3 本章小结 54
第4章 Oracle数据库体系结构 55
4.1 Oracle体系结构概述 55
4.2 Oracle数据库体系结构 55
4.2.1 Oracle服务器和实例 56
4.2.2 Oracle数据库物理结构(文件组成) 58
4.2.3 参数文件、密码文件和归档日志文件 58
4.3 数据库连接(connection)与会话(session) 58
4.3.1 数据库连接(connection) 58
4.3.2 会话(session) 59
4.4 Oracle数据库内存结构 60
4.4.1 共享池(Shared pool) 60
4.4.2 数据库高速缓冲区(Database buffer cache) 62
4.4.3 重做日志高速缓冲区(Redo buffer cache) 64
4.4.4 大池(Large pool)和Java池(Java pool) 65
4.4.5 流池(Streaming pool) 66
4.4.6 PGA(进程全局区)和UGA(用户全局区) 66
4.4.7 如何获得内存缓冲区的信息 68
4.5 Oracle服务器进程和用户进程 68
4.6 Oracle数据库后台进程 69
4.6.1 系统监控进程(SMON) 69
4.6.2 进程监控进程(PMON) 70
4.6.3 数据库写进程(DBWR) 70
4.6.4 重做日志写进程(LGWR) 71
4.6.5 归档日志进程(ARCH) 72
4.6.6 校验点进程(Checkpoint process) 74
4.7 本章小结 74
第5章 SQL语言概述 75
5.1 SQL语句分类 75
5.2 SQL的查询语句 76
5.2.1 SELECT语句的语法及书写要求 76
5.2.2 简单查询 77
5.2.3 特定的列查询 78
5.2.4 WHERE子句 79
5.2.5 列标题的默认显示格式 79
5.2.6 在SQL语句中使用列的别名 80
5.2.7 算数运算符及使用 81
5.2.8 DISTINCT运算符 81
5.2.9 连接运算符及使用 83
5.3 书写规范 83
5.4 单行函数 84
5.4.1 字符型单行函数 84
5.4.2 数字型单行函数 88
5.4.3 日期型单行函数 89
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 条件表达式 97
5.6.1 CASE表达式 97
5.6.2 DECODE函数 98
5.7 分组函数 99
5.7.1 AVG和SUM函数 100
5.7.2 MAX和M1N函数 100
5.7.3 COUNT函数 101
5.7.4 GROUP BY子句 101
5.7.5 分组函数的嵌套使用 102
5.7.6 HAVING子句 102
5.8 数据操纵语言(DML) 103
5.8.1 INSERT语句 103
5.8.2 UPDATE语句 105
5.8.3 DELETE语句 107
5.9 本章小结 107
第6章 数据字典 108
6.1 数据字典中的内容 108
6.2 使用和操作数据字典视图 108
6.3 数据字典视图分类 109
6.4 使用数据字典视图 113
6.5 动态性能视图及使用 115
6.6 本章小结 118
第7章 网络配置管理 119
7.1 Oracle的网络连接 119
7.2 服务器端监听器配置 120
7.2.1 动态注册 122
7.2.2 静态注册 124
7.2.3 连接测试 127
7.2.4 监听程序管理 129
7.3 客户端配置 130
7.3.1 本地命名 130
7.3.2 简单命名 131
7.4 Oracle数据库服务器支持的两种连接方式 132
7.4.1 服务器进程 133
7.4.2 共享连接 133
7.4.3 共享连接涉及初始化参数 134
7.4.4 共享连接的工作过程 134
7.4.5 共享连接的配置 135
7.4.6 共享连接的一些问题 139
7.4.7 专有连接 139
7.5 数据库驻留连接池 140
7.5.1 DRCP的工作原理 140
7.5.2 如何配置DRCP 141
7.6 本章小结 144
第8章 内存管理 145
8.1 内存架构 145
8.1.1 PGA概述 146
8.1.2 SGA概述 147
8.1.3 UGA概述 150
8.2 内存管理 150
8.2.1 配置内存组件 150
8.2.2 SGA与PGA的自动调整 152
8.2.3 配置数据库smart flash缓存 153
8.3 本章小结 154
第9章 用户管理和资源文件 155
9.1 创建用户 155
9.1.1 初试创建新用户 155
9.1.2 创建用户语法及参数含义 157
9.1.3 改变用户参数 158
9.2 删除用户 160
9.3 用户和数据库模式 161
9.4 用户管理中的重要文件——概要文件 162
9.4.1 什么是概要文件 162
9.4.2 使用资源管理和口令管理的概要文件步骤 162
9.4.3 使用概要文件管理会话资源 163
9.4.4 口令管理参数以及含义 164
9.4.5 创建口令管理的概要文件 167
9.5 修改和删除概要文件 168
9.6 本章小结 169
第10章 控制文件和数据库启动 170
10.1 控制文件和数据库启动概述 170
10.2 如何获得控制文件的信息 171
10.3 控制文件的内容 172
10.3.1 控制文件中所存的内容 172
10.3.2 如何查看控制文件中所存内容的记录信息 172
10.4 存储多重控制文件 174
10.4.1 多重控制文件 174
10.4.2 移动控制文件 175
10.4.3 添加控制文件 178
10.5 备份和恢复控制文件 179
10.5.1 控制文件的备份 179
10.5.2 控制文件的恢复 180
10.6 本章小结 183
第11章 重做日志管理 184
11.1 Oracle为何引入重做日志 184
11.2 读取重做日志文件信息 185
11.2.1 v$1og视图 185
11.2.2 v$logfile视图 186
11.2.3 判断是否归档 187
11.2.4 设置数据库为归档模式 187
11.3 重做日志组及其管理 188
11.3.1 添加重做日志组 188
11.3.2 删除联机重做日志组 190
11.4 重做日志成员及维护 192
11.4.1 添加重做日志成员 192
11.4.2 删除联机重做日志成员 193
11.4.3 重设联机重做日志的大小 194
11.5 清除联机重做日志 197
11.6 日志切换和检查点事件 197
11.7 归档重做日志 198
11.8 本章小结 198
第12章 管理归档日志 199
12.1 归档模式 199
12.2 设置归档模式 200
12.3 设置归档进程与归档目录 201
12.4 维护归档目录 207
12.5 本章小结 211
第13章 表空间与数据文件管理 212
13.1 Oracle数据库的逻辑结构 212
13.2 表空间的分类以及创建表空间 214
13.3 表空间磁盘管理的两种方案 217
13.3.1 数据字典管理的表空间磁盘管理 217
13.3.2 本地管理的表空间磁盘管理 217
13.4 创建表空间 217
13.4.1 创建数据字典管理的表空间 218
13.4.2 创建本地管理的表空间 219
13.4.3 创建还原表空间 220
13.4.4 创建临时表空间 222
13.4.5 默认临时表空间 224
13.4.6 创建大文件表空间 226
13.5 表空间管理 229
13.5.1 脱机管理 229
13.5.2 只读管理 231
13.6 表空间和数据文件管理 234
13.6.1 修改表空间大小 234
13.6.2 修改表空间的存储参数 237
13.6.3 删除表空间 238
13.6.4 迁移数据文件 238
13.6.5 数据字典和本地管理的表空间 241
13.7 本章小结 242
第14章 UNDO表空间管理 243
14.1 引入还原段的作用 243
14.2 还原段如何完成读一致性 244
14.2.1 Oracle如何实现读一致性 244
14.2.2 读一致性的进一步复杂化分析 244
14.2.3 读一致性的具体步骤 245
14.3 还原段的实例恢复与事务回滚 246
14.4 UNDO SEGMENT的选择算法 246
14.5 讨论undo_retention参数 246
14.6 还原段分类 248
14.7 Oracle的自动还原段管理 249
14.8 创建还原表空间 250
14.9 维护还原表空间 251
14.10 切换还原表空间 253
14.10.1 UNDO表空间切换示例 253
14.10.2 UNOD表空间切换涉及状态 254
14.10.3 删除UNDO表空间示例 254
14.11 dba_undo_extents数据字典 256
14.12 本章小结 257
第15章 事务(Transaction) 258
15.1 Oracle事务的由来 258
15.2 什么是事务 258
15.3 事务的特点 259
15.4 事务控制 259
15.4.1 使用COMMIT的显式事务控制 259
15.4.2 使用ROLLBACK实现事务控制 261
15.4.3 程序异常退出对事务的影响 262
15.4.4 使用AUTOCOMMIT实现事务的自动提交 264
15.5 本章小结 265
第16章 角色管理 266
16.1 什么是角色 266
16.2 创建角色 267
16.3 修改角色 269
16.4 赋予角色权限 270
16.5 赋予用户角色 271
16.6 默认角色 274
16.7 禁止和激活角色 277
16.8 回收和删除角色 279
16.9 Oracle预定义的角色 281
16.10 本章小结 283
第17章 管理和维护表 284
17.1 Oracle基本的数据存储机制——表 284
17.1.1 数据的存储类型 284
17.1.2 行ID(ROWID) 286
17.2 创建表 287
17.2.1 Oracle创建表的规则 287
17.2.2 创建普通表 287
17.2.3 创建临时表 289
17.3 段空间管理 291
17.4 理解高水位线(HWM) 292
17.5 理解行迁移 292
17.6 创建索引组织表(IOT) 293
17.6.1 IOT表的结构 293
17.6.2 创建IOT表 294
17.7 表参数以及参数维护 295
17.8 维护列 297
17.9 删除和截断表 302
17.10 本章小结 304
第18章 索引 305
18.1 索引的概念 305
18.2 Oracle实现数据访问的方法 305
18.2.1 全表扫描(FULL TABLE SCAN) 306
18.2.2 通过行ID(ROWID) 306
18.2.3 使用索引 307
18.3 索引扫描类型 308
18.3.1 索引唯一扫描(INDEX UNIQUE SCAN) 308
18.3.2 索引范围扫描(INDEX RANGE SCAN) 309
18.3.3 索引全扫描(INDEX FULL SCAN) 309
18.3.4 索引快速扫描(INDEX FAST FULL SCAN) 310
18.4 限制索引使用的情况 310
18.4.1 使用不等于运算符 310
18.4.2 使用IS NULL或IS NOT NULL 311
18.4.3 使用函数 312
18.4.4 比较不匹配的数据类型 313
18.5 集群因子 314
18.6 二元高度 314
18.7 直方图 315
18.8 建立索引 316
18.9 查看索引 319
18.10 B树索引 320
18.10.1 B树索引的工作原理 320
18.10.2 B树索引的注意事项 321
18.11 位图索引 321
18.11.1 位图索引的使用讨论 321
18.11.2 创建位图索引 322
18.11.3 B位图索引的插入问题 323
18.12 Hash索引 324
18.13 反向键索引 326
18.14 基于函数的索引 326
18.15 监控索引的使用 328
18.16 重建索引 329
18.17 维护索引 331
18.18 删除索引 332
18.19 本章小结 333
第19章 系统和对象权限管理 334
19.1 权限的概念和分类 334
19.2 系统权限 334
19.3 授予用户系统权限 335
19.4 SYSDBA和SYSOPER系统特权 339
19.5 回收用户系统权限 340
19.6 授予对象权限 343
19.7 回收对象权限 345
19.8 本章小结 346
第20章 视图 347
20.1 什么是视图 347
20.2 创建视图 347
20.3 使用视图的WITH子句 350
20.4 视图的修改 352
20.5 Oracle的视图管理 354
20.5.1 通过数据字典查询视图 354
20.5.2 Oracle视图查询的内部过程 354
20.6 视图DML操作的限制 355
20.6.1 简单视图 355
20.6.2 复杂视图 355
20.7 视图的优点 356
20.8 删除视图 356
20.9 物化视图 357
20.9.1 什么是物化视图 357
20.9.2 查询重写的概念 357
20.9.3 物化视图的同步 358
20.9.4 创建物化视图 359
20.9.5 物化视图的使用环境 361
20.10 本章小结 362
第21章 序列号和同义词 363
21.1 什么是序列号 363
21.2 创建和使用序列号 363
21.3 修改序列号 366
21.4 删除序列号 369
21.5 什么是同义词 369
21.6 创建公有同义词 370
21.7 创建私有同义词 371
21.8 删除同义词 372
21.9 切换用户模式 373
21.10 本章小结 373
第22章 RMAN备份与恢复数据库 374
22.1 RMAN概述 374
22.2 RMAN的独特之处 374
22.3 RMAN系统架构详解 375
22.4 快闪恢复区(flash recovery area) 376
22.4.1 修改快闪恢复区大小 376
22.4.2 解决快闪恢复区的空间不足问题 378
22.5 建立RMAN到数据库的连接 379
22.6 RMAN的相关概念与配置参数 380
22.7 RMAN备份控制文件 382
22.8 RMAN实现脱机备份 384
22.9 RMAN联机备份 385
22.9.1 联机备份前的准备工作 385
22.9.2 联机备份整个数据库 387
22.9.3 联机备份一个表空间 390
22.9.4 联机备份一个数据文件 391
22.9.5 RMAN备份坏块处理方式 392
22.10 RMAN的增量备份 393
22.11 快速增量备份 395
22.12 在映像副本上应用增量备份 396
22.13 创建和维护恢复目录 398
22.14 RMAN的脚本管理 401
22.15 使用RMAN非归档模式下的完全恢复 403
22.15.1 控制文件、数据文件以及重做日志文件丢失的恢复 403
22.15.2 只有数据文件丢失的恢复 407
22.15.3 联机重做日志文件和数据文件损坏的恢复 409
22.15.4 如何将数据文件恢复到其他磁盘目录下 412
22.16 使用RMAN归档模式下的完全恢复 412
22.16.1 非系统表空间损坏的恢复 412
22.16.2 系统表空间损坏的恢复 415
22.16.3 所有数据文件丢失的恢复 416
22.17 RMAN实现数据块恢复 416
22.18 RMAN的备份维护指令 420
22.18.1 RMAN的VALIDATE BACKUPSET指令 420
22.18.2 RMAN的RESTORE...VALIDATE指令 421
22.18.3 RMAN的RESTORE...PREVIEW指令 422
22.18.4 RMAN的LIST指令 423
22.18.5 RMAN的REPORT指令 426
22.19 本章小结 427
第23章 Oracle闪回技术 428
23.1 理解闪回级别 428
23.2 闪回数据库 428
23.2.1 闪回数据库概述 428
23.2.2 启用闪回数据库 429
23.2.3 关闭闪回数据库 432
23.2.4 闪回数据库方法 434
23.2.5 使用闪回数据库 434
23.2.6 监控闪回数据库 437
23.2.7 使用闪回数据库的限制 438
23.3 闪回删除 439
23.3.1 闪回删除原理 439
23.3.2 回收站的使用 440
23.3.3 恢复删除的表 442
23.3.4 恢复多个同名的表 446
23.3.5 应用Purge永久删除表 448
23.4 闪回表 450
23.5 闪回版本查询 453
23.6 闪回事务查询 454
23.7 闪回查询 455
23.8 复原点技术 456
23.9 本章小结 457
第24章 手工管理的备份恢复 459
24.1 备份恢复的概念 459
24.1.1 物理备份 459
24.1.2 逻辑备份 460
24.1.3 冷备份与热备份 460
24.1.4 数据库恢复 460
24.2 非归档模式下的冷备与恢复 461
24.2.1 冷备的步骤 462
24.2.2 冷备下的恢复 464
24.2.3 缺少重做日志文件的恢复方法 466
24.3 归档模式与非归档模式 468
24.3.1 设置数据库的归档模式 468
24.3.2 设置归档进程相关参数 470
24.3.3 管理归档文件和归档目录 471
24.4 手工热备数据库的步骤 474
24.5 热备过程中对数据库崩溃的处理方法 477
24.6 热备的原理 480
24.7 备份控制文件 481
24.8 介质恢复的原理 484
24.9 档模式下的完全恢复 489
24.9.1 数据文件在有备份情况下的恢复 490
24.9.2 数据文件在无备份情况下的恢复 493
24.9.3 系统表空间数据文件损坏的完全恢复 495
24.9.4 当前UNDO表空间损坏的完全恢复 497
24.9.5 非当前UNDO表空间损坏的完全恢复 499
24.10 何时使用不完全恢复 502
24.10.1 不完全恢复的场合 502
24.10.2 不完全恢复的类型 502
24.11 所有控制文件丢失的恢复方法 503
24.11.1 使用备份的控制文件 503
24.11.2 重建控制文件 507
24.12 本章小结 511
第25章 OEM管理与使用 512
25.1 OEM架构 512
25.2 OEM的安装 513
25.2.1 第一种安装方式 513
25.2.2 第二种安装方式 514
25.2.3 第三种安装方式 516
25.3 OEM的启动与关闭 518
25.4 OEM监控数据库运行 520
25.4.1 Home目录 521
25.4.2 Performance部分 522
25.4.3 Availablity部分 523
25.4.4 Server部分 528
25.4.5 Schema部分 530
25.4.6 Data Movement部分 531
25.4.7 Software and Support部分 531
25.5 本章小结 533
第26章 Oracle数据库实例优化 534
26.1 详解SGA与实例优化 534
26.2 将程序常驻内存 539
26.2.1 创建软件包DBMS_SHARED_POOL 539
26.2.2 将程序常驻内存的过程 541
26.2.3 从DBMSPOOL脚本理解软件包DBMS_SHARED_POOL 543
26.3 将数据常驻内存 545
26.3.1 再论数据块缓存池 545
26.3.2 将数据常驻内存的过程 546
26.3.3 将常驻内存的程序恢复为默认缓冲池 549
26.4 优化重做日志缓冲区 550
26.4.1 深入理解重做日志缓冲区的工作机制 550
26.4.2 重做日志缓冲区相关的等待事件 552
26.4.3 设置重做日志缓冲区大小 554
26.5 优化共享池(Shared Pool) 556
26.5.1 库高速缓存 556
26.5.2 使用绑定变量 556
26.5.3 调整CURSOR_SHARING参数 559
26.5.4 设置共享池的大小 560
26.6 优化数据库高速缓存(DB Cache) 561
26.6.1 调整数据库缓冲区大小 561
26.6.2 使用缓冲池 563
26.7 优化PGA内存 565
26.8 本章小结 568