第一篇 数据库体系结构 2
第1章 Oracle产品系列 2
1.1 Oracle产品组成 2
1.1.1数据库组件 3
1.1.2开发套件 4
1.1.3应用服务器 5
1.1.4协作套件 6
1.1.5应用软件 6
1.2 Oracle各版本异同 6
1.2.1 Oracle 8i和Oracle 9i 6
1.2.2 Oracle l0g和Oracle llg 7
1.2.3 Oracle 12c 8
1.2.4 Oracle企业版、标准版及其他版本的异同 8
1.3 Oracle 12c新特性 9
1.3.1支持多线程模式 9
1.3.2加强Defaults功能 11
1.3.3更新了多种数据类型长度限制 11
1.3.4增强PL/SQL性能 12
1.3.5实现Native TOP N查询 12
1.3.6加强行模式匹配 13
1.3.7增加Adaptive Plans 13
1.3.8改进分区特性 13
1.3.9增强数据优化 14
1.3.10加强应用连续性 15
1.3.11引入临时UNDO段 15
1.3.12支持PDB 15
1.3.13提供CDB容器 17
1.3.14支持表级别恢复 18
1.3.15支持网络恢复 19
1.3.16增添了Flex ASM 19
第2章 Oracle体系结构及其基本概念 20
2.1 Oracle总体结构 20
2.1.1 Oracle实例 20
2.1.2数据库 21
2.1.3 Oracle相关的几个概念 21
2.1.4 Oracle的结构划分 23
2.2 Oracle内存结构 23
2.2.1系统全局区SGA 24
2.2.2数据库缓冲区 25
2.2.3重做日志缓冲区 26
2.2.4共享池 26
2.2.5数据字典缓冲区 27
2.2.6程序全局区PGA 27
2.2.7排序区 28
2.2.8软件代码区 29
2.2.9大池 29
2.2.10 Java池 29
2.2.11 Streams池 29
2.3 Oracle进程 30
2.3.1用户进程 30
2.3.2服务器进程 31
2.3.3专用服务器和共享服务器 31
2.4 Oracle后台进程结构 34
2.4.1 SMON系统监控进程 35
2.4.2 PMON进程监控进程 35
2.4.3 DBWR数据库写入进程 35
2.4.4 LGWR日志写入进程 36
2.4.5 CKPT检查点进程 37
2.4.6 RECO恢复进程 38
2.4.7 ARCH归档进程 38
2.4.8 SNPn作业队列进程 38
2.4.9 LCKn锁进程 39
2.4.10 Dnnn调度进程 39
2.4.11 Snnn共享服务器进程 39
2.4.12 QMNn队列监视进程 39
2.5 Oracle物理结构 39
2.5.1数据文件 40
2.5.2控制文件 40
2.5.3重做日志文件 41
2.5.4参数文件 42
2.5.5跟踪文件 42
2.5.6警告日志文件 43
2.6 Oracle逻辑结构 43
2.6.1逻辑结构概述 43
2.6.2表空间 44
2.6.3 System表空间、SYSAUX表空间以及其他表空间 45
2.6.4段 46
2.6.5区 48
2.6.6数据块 48
2.6.7用户与模式 50
2.6.8表 50
2.6.9列与数据类型 51
2.6.10 ROWID伪列 53
2.6.11约束条件 54
2.6.12索引 55
2.6.13视图 58
2.6.14序列 59
2.6.15过程与过程包 59
2.6.16函数 60
2.6.17触发器 60
2.6.18同义词 61
2.6.19权限及角色 61
2.6.20快照 62
2.6.21聚集 62
2.6.22散列聚集 63
2.6.23数据库链 64
2.7数据分区 64
2.7.1分区表 64
2.7.2分区表的类型 65
2.7.3分区索引 68
2.7.4索引的类型 68
2.7.5表分区和分区管理 69
2.8数据库访问 69
2.8.1竞争性、并发性与一致性概念 69
2.8.2事务之间的冲突 70
2.9锁 71
2.9.1 锁级别 71
2.9.2 DML锁 72
2.9.3 DDL锁 75
2.10 SQL语句的处理过程 75
2.10.1 SQL语句的处理过程 76
2.10.2分析 76
2.10.3执行 77
2.10.4返回结果 77
2.10.5 SELECT语句的处理步骤 77
2.10.6其他语句的处理步骤 78
2.10.7 SCN的运行机制 79
2.10.8 Commit的处理 80
2.10.9 Rollback回滚的处理 81
2.11 Oracle数据字典 81
2.11.1静态数据字典 82
2.11.2查看各类静态对象 84
2.11.3动态数据字典 86
2.11.4各类数据字典区分 87
2.11.5动态数据字典结构 87
2.11.6动态数据字典分类 89
第3章 Oracle Net体系结构和云体验 93
3.1 Oracle网络概述 93
3.1.1网络的连接方式 93
3.1.2 Oracle的网络连接方式 94
3.2 Oracle Net Services 96
3.2.1 Oracle Net 97
3.2.2 Oracle网络监听 98
3.2.3 Oracle连接管理器 99
3.2.4网络工具 101
3.2.5 Oracle高级安全性 102
3.3 Oracle网络体系结构 103
3.3.1 Oracle Net C/S连接的栈结构 103
3.3.2 Java的连接栈结构 106
3.3.3 Web连接的栈结构 107
3.3.4网络监听体系结构 107
3.3.5数据库服务器体系结构 108
3.3.6连接管理器体系结构 111
3.4 Oracle网络的概念 113
3.4.1连接的概念 113
3.4.2配置管理概念 115
3.4.3命名方法 116
3.5 Oracle云数据库 119
3.5.1云数据库基本介绍和申请 119
3.5.2构建和发布数据库应用 121
第4章 安装与配置 124
4.1通用安装工具OUI简介 124
4.2 Optimal Flexible Architecture简介 124
4.3数据库软件版本说明 126
4.4 Windows下Oracle的安装 126
4.4.1安装的基本硬件要求 126
4.4.2安装过程 127
4.4.3安装后的环境变量 135
4.4.4安装后文件目录 138
4.5 Oracle的简单网络配置 139
4.5.1服务器网络配置 140
4.5.2 Oracle客户端的配置 142
4.5.3如何查看安装的数据库版本号 146
4.6 Oracle完全卸载 147
第5章 创建数据库 151
5.1手动创建数据库 151
5.1.1狭义数据库和广义数据库 151
5.1.2准备前提条件 151
5.1.3规划物理文件的存放 152
5.1.4手动创建数据库的步骤概述 153
5.1.5设定环境变量 153
5.1.6创建参数文件 154
5.1.7创建服务器参数文件 155
5.1.8创建数据库 156
5.1.9建立数据字典 158
5.2通过DBCA创建数据库 159
5.2.1 DBCA简介 159
5.2.2进入DBCA 159
5.2.3创建数据库 160
5.2.4手动卸载数据库 167
5.2.5使用DBCA卸载数据库 168
5.3配置数据库全球化支持 169
5.3.1国际语言支持 169
5.3.2数据库字符集 170
5.3.3数据库字符集类型 170
5.3.4字节长度和字符长度 173
5.3.5数据库字符集与国际语言字符集 173
5.3.6各种语言支持的字符集 174
5.3.7 Oracle字符集配置结构 176
5.3.8 NLS的参数说明 179
5.3.9语言和区域参数 181
5.3.10 NLS的日期时间参数 187
5.3.11 NLS的货币参数 189
5.3.12数字表示格式 190
5.3.13排序参数 191
5.3.14其他参数 192
5.3.15 NLS的参数设置方法 192
5.3.16更改初始化参数中的NLS值 193
5.3.17 NLS的session级设值 193
5.3.18 NLS的环境变量设置 195
5.3.19使用NLS参数的SQL函数 196
5.3.20 Oracle客户端字符集设置 198
5.4查询全球化参数信息 199
5.4.1查询数据库级的NLS设置 199
5.4.2查询实例级的NLS信息 200
5.4.3查询SESSION级的NLS信息 200
5.4.4查询NLS可设置的值 201
5.4.5查询NLS所有参数 201
5.5更改数据库字符集 202
5.5.1用ALTER命令更改字符集 202
5.5.2使用导入导出更改字符集 203
5.6配置多个数据库 204
5.6.1创建另一个新的数据库 204
5.6.2更改默认数据库 205
5.6.3配置数据库监听 206
5.7 Oracle系统用户和系统权限 206
5.7.1 SYS用户 206
5.7.2 SYSTEM用户 207
5.7.3 SYSDBA和SYSOPER系统权限 207
5.8数据库名、实例名等的区分 208
5.8.1数据库名 208
5.8.2数据库实例名 209
5.8.3环境变量ORACLE SID 209
第二篇 数据库管理 212
第6章 管理数据库实例 212
6.1 Enterprise Manager Database Express 12c 212
6.1.1 EM 12c体系结构 212
6.1.2启动EM 12c 213
6.1.3使用EM 12c 214
6.2使用Oracle SQL Developer 217
6.2.1启动Oracle SQL Developer 217
6.2.2连接数据库 218
6.3初始化参数文件 220
6.3.1初始化参数文件的作用 221
6.3.2 PFILE和SPFILE 221
6.3.3初始化参数文件的优先级 222
6.3.4创建初始化参数文件的技巧 223
6.3.5导出服务器参数文件 224
6.3.6修改初始化参数文件 224
6.3.7数据库关闭时修改SPFILE 225
6.3.8判断使用了SPFILE还是PFILE文件 225
6.4使用口令文件 227
6.4.1口令文件的创建 227
6.4.2设置初始化参数REMOTE LOGIN PASSWORDFILE 227
6.4.3向口令文件中增加、删除用户 228
6.4.4使用口令文件登录 229
6.4.5维护口令文件 229
6.5管理初始化参数 230
6.5.1初始化参数的分类 231
6.5.2 Oraclel2c基本参数 232
6.5.3 Oracle 12c其他常见参数 241
6.5.4查询设置的初始化参数 249
6.5.5修改动态参数 250
6.5.6使用SQL*Plus修改参数 255
6.5.7使用EM 12c管理初始化参数 256
6.5.8修改参数文件 258
6.6启动和关闭数据库 260
6.6.1数据库的启动(STARTUP) 260
6.6.2数据库的关闭(SHUTDOWN) 262
6.6.3停顿数据库 264
6.6.4挂起和恢复数据库 265
6.6.5使用PFILE和SPFILE启动 266
6.6.6使用EM 12c启动关闭数据库 267
6.6.7关闭自启动 268
6.7更改SID名称 270
第7章 管理数据库存储 273
7.1管理表空间 273
7.1.1默认的表空间 273
7.1.2创建表空间 274
7.1.3表空间创建的几个参数 277
7.1.4删除表空间 279
7.1.5修改表空间 280
7.1.6查询表空间信息 282
7.2管理段 284
7.2.1数据段和索引段的管理 284
7.2.2临时段的管理 284
7.2.3回滚段的管理 287
7.2.4查询回滚段 290
7.3管理撤销表空间 293
7.3.1自动撤销管理概述 293
7.3.2回滚保持 294
7.3.3创建、删除撤销表空间 295
7.3.4切换回滚表空间 296
7.4管理区 296
7.4.1区的参数 296
7.4.2区的分配和回收 298
7.4.3查询区的信息 298
7.5管理数据块 299
7.5.1管理数据块参数 299
7.5.2设置数据块参数 301
第8章 管理物理文件 303
8.1管理数据文件 303
8.1.1数据文件概述 303
8.1.2建立数据文件 304
8.1.3调整数据文件大小 304
8.1.4重命名和移动数据文件 305
8.1.5删除数据文件 307
8.1.6校验数据块 307
8.1.7查询数据文件信息 308
8.2管理日志文件 309
8.2.1日志文件概述 310
8.2.2建立日志文件 310
8.2.3配置日志文件 311
8.2.4控制日志切换 312
8.2.5控制检查点 312
8.2.6镜像日志文件 314
8.2.7增加日志文件组成员 315
8.2.8移动日志文件 316
8.2.9删除日志文件组 317
8.2.10删除日志文件组成员 318
8.2.11清除日志文件 318
8.2.12查看日志文件信息 319
8.3管理控制文件 320
8.3.1创建初始的控制文件 321
8.3.2创建新的控制文件 321
8.3.3镜像控制文件 323
8.3.4删除控制文件 323
8.3.5恢复控制文件 323
8.3.6查询控制文件信息 324
8.4管理归档日志文件 326
8.4.1归档日志文件概述 326
8.4.2 NOARCHIVELOG与ARCHIVELOG模式 327
8.4.3控制归档方式 328
8.4.4设置归档目的地 330
8.4.5设置日志文件传送模式 332
8.4.6管理归档目的地点失败 333
8.4.7控制归档进程的跟踪输出 334
8.4.8查看归档日志文件信息 335
8.5管理警告日志文件 338
8.5.1查看警告日志文件 338
8.5.2警告日志中的消息 339
8.5.3归档警告日志 342
8.6使用EM管理物理文件 342
8.6.1用EM 12c管理数据文件 342
8.6.2用EM 12管日志文件 344
8.6.3使用EM 12c管理控制文件 348
8.6.4使用EM 12c管理其他物理文件 351
第9章 逻辑对象管理 352
9.1管理表 352
9.1.1创建表 352
9.1.2管理完整性约束 353
9.1.3修改表 355
9.1.4删除表 357
9.1.5查询表的信息 358
9.2管理索引 360
9.2.1创建索引 360
9.2.2修改索引 362
9.2.3删除索引 363
9.2.4查询索引信息 363
9.3管理分区 364
9.3.1分区表的创建 365
9.3.2添加分区 368
9.3.3接合分区 369
9.3.4删除分区 369
9.3.5转换分区 370
9.3.6合并分区 370
9.3.7修改缺省属性 371
9.3.8修改分区的属性 371
9.3.9修改列表分区的值 371
9.3.10移动分区 372
9.3.11重命名分区 372
9.3.12分割分区 373
9.3.13截断分区 374
9.3.14删除分区 375
9.3.15 分区表的查询 375
9.4管理聚集 377
9.4.1创建聚集 377
9.4.2创建聚集表 378
9.4.3创建聚集索引 379
9.4.4修改聚集 379
9.4.5删除聚集 380
9.4.6查询聚集 380
9.5管理散列聚集 381
9.5.1创建散列聚集 381
9.5.2设置散列聚集参数 382
9.5.3修改删除散列聚集 383
9.5.4查询散列聚集 383
9.6管理视图 383
9.6.1创建视图 384
9.6.2创建连接视图 385
9.6.3更改视图 385
9.6.4删除视图 386
9.6.5查询视图信息 386
9.7管理序列 387
9.7.1创建序列 387
9.7.2修改序列 388
9.7.3删除序列 388
9.7.4使用序列 389
9.7.5查询序列信息 389
9.8同义词管理 390
9.8.1创建同义词 390
9.8.2删除同义词 390
9.8.3查询同义词信息 391
9.9管理数据库链 391
9.9.1创建数据库链 391
9.9.2删除数据库链 392
9.9.3查询数据库链信息 392
9.10管理数据库触发器 393
9.10.1创建触发器 393
9.10.2启用和禁用触发器 395
9.10.3删除触发器 395
9.10.4查询触发器信息 395
9.11使用Oracle SQL Developer管理数据库对象 396
9.11.1使用Oracle SQL Developer管理表 397
9.11.2使用Oracle SQL Developer管理索引 399
9.11.3使用Oracle SQL Developer管理视图 401
9.11.4使用Oracle SQL Developer管理同义词 404
9.11.5使用Oracle SQL Developer管理序列 406
9.11.6使用Oracle SQL Developer管理触发器 409
第10章 数据库安全管理 412
10.1数据库安全的概念 412
10.1.1数据库级安全性 412
10.1.2表级安全性 413
10.1.3行级安全性 413
10.1.4列级安全性 414
10.2用户管理 414
10.2.1用户的验证方式 414
10.2.2创建和修改用户账号 416
10.2.3删除用户 418
10.3查询用户信息 418
10.3.1查询用户会话信息 418
10.3.2查询用户会话统计信息 419
10.3.3查询用户基本信息 420
10.3.4查询用户详细信息 420
10.3.5查询用户表空间配额 421
10.4权限管理 421
10.4.1系统权限分类详解 422
10.4.2授予系统权限 427
10.4.3回收系统权限 428
10.4.4对象权限分类 428
10.4.5授予对象权限 430
10.4.6回收对象权限 431
10.4.7查看权限信息 431
10.5角色管理 434
10.5.1创建角色 435
10.5.2定义角色的权限 435
10.5.3授予角色给用户 436
10.5.4给用户指定默认角色 436
10.5.5修改角色 437
10.5.6删除角色 437
10.5.7控制角色可用性 438
10.5.8预定义的角色 438
10.5.9查询角色信息 439
10.6资源管理 441
10.6.1 Oracle概要文件 442
10.6.2建立概要文件 442
10.6.3修改概要文件 443
10.6.4删除概要文件 444
10.6.5概要文件的参数 444
10.6.6概要文件的口令管理 446
10.6.7查询资源和口令信息 448
10.7使用EM进行安全管理 451
10.7.1使用EM 12c管理用户 451
10.7.2使用EM 12c管理角色 456
第11章 数据库审计管理 460
11.1启动数据库审计 460
11.2语句审计 461
11.2.1启动语句审计 461
11.2.2查询语句审计 464
11.2.3删除语句审计 464
11.2.4查看审计记录 465
11.3权限审计 465
11.3.1启动权限审计 465
11.3.2查询权限审计 466
11.3.3删除权限审计 467
11.4对象审计 467
11.4.1启动对象审计 467
11.4.2查询对象审计 468
11.4.3删除对象审计 469
11.5精细审计 469
11.5.1创建精细审计 469
11.5.2启动关闭精细审计 470
11.5.3删除精细审计 471
11.5.4查询精细审计定义 471
11.5.5查询精细审计记录 471
11.6删除审计记录 472
第12章 数据库备份 473
12.1数据库备份与恢复概述 473
12.1.1数据库故障 474
12.1.2数据库备份的分类 475
12.1.3备份方法比较 478
12.2用户管理的备份 479
12.2.1全数据库脱机备份 479
12.2.2表空间和数据文件的脱机备份 480
12.2.3全数据库联机备份 481
12.2.4表空间或数据文件联机备份 482
12.2.5处理联机备份失败 484
12.2.6备份控制文件 485
12.2.7备份归档日志文件 487
12.3数据库逻辑备份工具Export 488
12.3.1 Export的配置与启动 488
12.3.2 Export的各个选项 490
12.4 Oracle逻辑备份工具数据泵 493
12.4.1使用数据泵导出数据 493
12.4.2设置并行导出 495
12.4.3数据泵导出参数 496
12.5 DBVERIFY工具 497
12.5.1 DBVERIFY参数 498
12.5.2验证数据文件 499
12.5.3验证表或索引数据块 500
12.6 DBNEWID工具 501
12.6.1更改全局数据库名 502
12.6.2更改DBID 502
12.6.3更改DBNAME 504
第13章 数据库恢复 507
13.1完全介质恢复 507
13.1.1 SYSTEM表空间数据文件的介质恢复 508
13.1.2非SYSTEM表空间数据文件的介质恢复 510
13.1.3恢复控制文件 511
13.1.4恢复重做日志文件 515
13.1.5恢复临时文件 518
13.2数据库不完全恢复 519
13.2.1基于时间的恢复 520
13.2.2基于取消的恢复 521
13.2.3基于SCN的恢复 522
13.3用户管理的表空间及时点恢复 523
13.3.1表空间及时点恢复的概念 523
13.3.2表空间及时点恢复的准备 524
13.3.3执行用户管理的TSPITR 526
13.4数据库逻辑恢复 529
13.4.1使用IMP导入 529
13.4.2 Import的各个参数 532
13.4.3使用IMPDP导入 534
13.4.4数据泵导入参数 536
13.4.5搬移表空间 539
13.5数据库闪回恢复 540
13.5.1行级闪回 541
13.5.2使用闪回表 544
13.6数据库闪回恢复 547
13.6.1数据库闪回的语法 547
13.6.2配置数据库闪回 548
13.6.3闪回数据库到某个时间点 549
13.6.4闪回数据库到某个SCN 550
13.7 LogMiner 552
13.7.1 LogMiner的概念 552
13.7.2 LogMiner配置要求 553
13.7.3使用LogMiner的步骤 554
13.7.4 LogMiner分析日志文件举例 561
13.7.5查询LogMiner信息 562
第三篇 数据库高级特性 566
第14章 使用RMAN 566
14.1 RMAN体系结构 566
14.2启动与配置RMAN 568
14.2.1启动RMAN 568
14.2.2连接RMAN 569
14.2.3运行RMAN各类命令 570
14.2.4 RMAN的环境配置 572
14.3使用RMAN备份 576
14.3.1备份整个数据库 576
14.3.2备份部分数据库 577
14.3.3差异增量备份和累积增量备份 579
14.3.4建立镜像副本 581
14.3.5查询备份信息 583
14.4使用RMAN恢复 586
14.4.1数据库完全恢复 586
14.4.2数据库不完全恢复 590
14.4.3块级别的恢复 592
14.5 RMAN维护命令 594
14.5.1 Report命令 594
14.5.2 LIST命令 597
14.5.3 CROSSCHECK命令 602
14.5.4 DELETE命令 604
14.5.5 CHANGE命令 605
14.5.6 CATALOG命令 607
14.6管理恢复目录 608
14.6.1创建恢复目录 609
14.6.2维护恢复目录 610
14.6.3使用存储脚本 611
14.6.4查询恢复目录 614
第15章 自动存储管理 619
15.1自动存储管理概述 619
15.1.1自动存储管理和文件系统管理的区别 619
15.1.2自动存储管理概念 620
15.2配置自动存储管理 623
15.2.1准备ASM的硬件条件 623
15.2.2 配置ASM 625
15.3管理ASM实例 627
15.3.1启动关闭ASM实例 627
15.3.2 ASM的初始化参数 628
15.4管理ASM磁盘组 629
15.4.1添加磁盘戳记 629
15.4.2创建磁盘组 630
15.4.3删除磁盘组 631
15.4.4修改磁盘组 631
15.5 ASM文件 636
15.5.1 ASM文件类型 637
15.5.2创建数据库对象 639
15.6查询ASM信息 640
第16章 管理Oracle网络 642
16.1配置Oracle服务器网络 642
16.1.1 Oracle服务器网络配置概述 642
16.1.2使用Oracle Net Manager配置监听 643
16.1.3使用Isnrctl工具管理监听 649
16.1.4动态服务注册 653
16.1.5诊断服务器连接 654
16.1.6使用Oracle Net Configuration Assistant管理监听 656
16.2配置Oracle客户端网络 657
16.2.1客户端名称解析方法 658
16.2.2主机命名方法 658
16.2.3简单命名方法 660
16.2.4本地命名方法 661
16.2.5 Sqlnet.ora文件 664
16.3 Oracle共享服务器 666
16.3.1何时使用共享服务器 667
16.3.2监听器在共享服务器中的作用 667
16.3.3共享服务器参数 669
16.3.4使用DBCA配置共享服务器 673
16.3.5查询共享服务器信息 676
16.3.6在共享服务器中配置专用连接 680
16.3.7调节共享服务器 682
第17章 使用SQL*Plus 686
17.1启动SQL*Plus 686
17.2登录SQL*Plus 687
17.3执行命令 688
17.3.1执行SQL语句 688
17.3.2执行PL/SQL语句块 689
17.3.3执行SQL*Plus内部命令 690
17.3.4执行操作系统命令 690
17.3.5退出SQL*Plus 691
17.3.6使用帮助 691
17.3.7清屏命令 693
17.4 SQL*Plus编辑命令 693
17.4.1 APPEND命令 694
17.4.2 CHANGE命令 695
17.4.3 CLEAR命令 696
17.4.4 DEL命令 696
17.4.5 INPUT命令 696
17.4.6 LIST命令 697
17.5 SQL*Plus文件操作命令 697
17.5.1保存文件 698
17.5.2在文件内加注释 699
17.5.3读命令文件到缓冲区 700
17.5.4运行命令文件 701
17.6格式化查询结果 702
17.6.1格式化列 702
17.6.2使用SQL*Plus制作报表 708
17.7存取数据库 712
17.7.1连接到本地数据库 712
17.7.2连接到远程数据库 714
17.7.3将A数据库数据复制到B数据库 715
17.8配置SQL*Plus环境 717
17.8.1使用环境变量 717
17.8.2设置环境参数 720