第Ⅰ部分 数据库核心概念 3
第1章 Oracle Database 12c架构选件 3
1.1 数据库和实例 4
1.2 数据库技术 5
1.2.1 存储数据 6
1.2.2 数据保护 7
1.2.3 可编程的结构 8
1.3 选择体系结构和选件 9
第2章 安装Oracle Database 12c和创建数据库 11
2.1 许可证和安装选项概览 13
2.2 安装Oracle软件 13
2.2.1 安装Grid Infrastructure 13
2.2.2 安装Oracle数据库 16
第3章 升级到Oracle Database 12c 19
3.1 选择升级方法 20
3.2 升级之前的准备 21
3.3 升级Grid Infrastructure和数据库 22
3.3.1 升级Grid Infrastructure 22
3.3.2 升级数据库 25
3.4 升级之后的工作 32
第4章 规划Oracle应用程序——方法、风险和标准 33
4.1 协作方法 34
4.2 每个人都有“数据” 35
4.3 熟悉的Oracle语言 36
4.3.1 存储信息的表 36
4.3.2 结构化查询语言 37
4.3.3 简单的Oracle查询 37
4.3.4 为什么称作“关系” 39
4.4 一些通用的、常见的示例 40
4.5 风险所在 42
4.6 新视角的重要性 43
4.6.1 变化的环境 43
4.6.2 代码、缩写和命名标准 43
4.7 如何减少混淆 45
4.7.1 规范化 45
4.7.2 表和列的英文名称 49
4.7.3 数据中的英文单词 50
4.8 名称和数据中的大写 51
4.9 规范化名称 51
4.10 人性化和优秀的设计 52
4.10.1 理解应用程序的任务 52
4.10.2 任务概要 53
4.11 理解数据 55
4.11.1 原子数据模型 56
4.11.2 原子业务模型 57
4.11.3 业务模型 57
4.11.4 数据项 57
4.11.5 查询和报告 57
4.12 关于对象名称的规范化 58
4.12.1 级别-名称完整性 58
4.12.2 外键 59
4.12.3 单数名称 59
4.12.4 简洁 60
4.12.5 对象名辞典 60
4.13 智能键和列值 60
4.14 建议 61
第Ⅱ部分 SQL和SQL*Plus 65
第5章 SQL中的基本语法 65
5.1 样式 67
5.2 创建NEWSPAPER表 67
5.3 用SQL从表中选择数据 68
5.4 select、from、where和order by 71
5.5 逻辑和值 73
5.5.1 单值测试 74
5.5.2 值列表的简单测试 79
5.5.3 组合逻辑 81
5.6 WHERE的另一个用途:子查询 82
5.6.1 从子查询得到单值 83
5.6.2 从子查询得到值列表 84
5.7 组合表 85
5.8 创建视图 87
5.9 扩展视图 89
第6章 基本的SQL*Plus报表和命令 91
6.1 构建简单的报表 93
6.1.1 REMARK 95
6.1.2 SET HEADSEP 96
6.1.3 TTITLE和BTITLE 96
6.1.4 COLUMN 96
6.1.5 BREAK ON 97
6.1.6 COMPUTE AVG 98
6.1.7 SET LINESIZE 99
6.1.8 SET PAGESIZE 99
6.1.9 SET NEWPAGE 99
6.1.10 SPOOL 100
6.1.11 /** 101
6.1.12 关于列标题的一些说明 101
6.2 其他特性 102
6.2.1 命令行编辑器 102
6.2.2 设置停顿 105
6.2.3 保存 106
6.2.4 存储 106
6.2.5 编辑 106
6.2.6 HOST 107
6.2.7 添加SQL*Plus命令 108
6.2.8 START 108
6.3 检查SQL*Plus环境 108
6.4 构件块 110
第7章 文本信息的收集与更改 111
7.1 数据类型 112
7.2 什么是串 112
7.3 表示法 113
7.4 连接符(‖) 114
7.5 剪切和粘贴串 116
7.5.1 RPAD和LPAD 116
7.5.2 LTRIM、RTRIM和TRIM 117
7.5.3 组合两个函数 118
7.5.4 使用TRIM函数 120
7.5.5 再次使用填充函数 121
7.5.6 LOWER、UPPER和INITCAP 121
7.5.7 LENGTH 122
7.5.8 SUBSTR 123
7.5.9 INSTR 126
7.5.10 ASCII和CHR 130
7.6 在ORDER BY和WHERE子句中使用串函数 130
7.6.1 SOUNDEX 132
7.6.2 国际语言支持 133
7.6.3 正则表达式支持 133
7.7 小结 133
第8章 正则表达式搜索 135
8.1 搜索串 136
8.2 REGEXP_SUBSTR 139
8.3 REGEXP_INSTR 141
8.4 REGEXP_LIKE 142
8.5 REPLACE和REGEXP_REPLACE 143
8.6 REGEXP_COUNT 148
第9章 数值处理 151
9.1 三类数值函数 151
9.2 表示法 152
9.3 单值函数 152
9.3.1 加减乘除 153
9.3.2 NULL 153
9.3.3 NVL:空值置换函数 154
9.3.4 ABS:绝对值函数 155
9.3.5 CEIL 155
9.3.6 FLOOR 156
9.3.7 MOD 156
9.3.8 POWER 157
9.3.9 SQRT:求平方根 157
9.3.10 EXP、LN和LOG 158
9.3.11 ROUND和TRUNC 158
9.3.12 SIGN 160
9.3.13 SIN、SINH、COS、COSH、TAN、TANH、ACOS、ATAN、ATAN2和ASIN 160
9.4 聚集函数 160
9.4.1 组值函数中的NULL 160
9.4.2 单值函数和组值函数的示例 162
9.4.3 AVG、COUNT、MAX、MIM和SUM 162
9.4.4 组值函数和单值函数的组合 163
9.4.5 STDDEV和VARIANCE 165
9.4.6 组函数中的DISTINCT 165
9.5 列表函数 166
9.6 使用MAX或MIN函数查找行 168
9.7 优先级和圆括号的应用 169
9.8 小结 170
第10章 日期:过去、现在及日期的差 173
10.1 日期算法 173
10.1.1 SYSDATE、CURRENT_DATE及SYSTIMESTAMP 174
10.1.2 两个日期的差 175
10.1.3 添加月份 176
10.1.4 减少月份 176
10.1.5 GREATEST和LEAST 176
10.1.6 NEXT_DAY 178
10.1.7 LAST_DAY 179
10.1.8 MOMTHS_BETWEEN 179
10.1.9 组合日期函数 180
10.2 日期计算中的ROUND和TRUNC 181
10.3 使用TO DATE和TO_CHAR设置日期格式 181
10.3.1 最常见的TO_CHAR错误 186
10.3.2 NEW_TIME:切换时区 187
10.3.3 TO_DATE计算 187
10.4 WHERE子句中的日期 189
10.5 处理多个世纪 191
10.6 使用EXTRACT函数 191
10.7 使用TIMESTAMP数据类型 192
第11章 转换函数与变换函数 195
11.1 基本的转换函数 197
11.1.1 数据类型的自动转换 199
11.1.2 关于自动转换的注意事项 202
11.2 特殊的转换函数 202
11.3 变换函数 203
11.3.1 TRANSLATE 203
11.3.2 DECODE 204
11.4 小结 205
第12章 分组函数 207
12.1 GROUP BY和HAVING的用法 207
12.1.1 添加ORDER BY子句 209
12.1.2 执行顺序 210
12.2 分组视图 212
12.3 用别名重命名列 213
12.4 分组视图的功能 214
12.4.1 在视图中使用ORDER BY 215
12.4.2 HAVING子句中的逻辑 216
12.4.3 对列和分组函数进行排序 217
12.4.4 连接列 218
12.5 更多分组可能性 218
第13章 当一个查询依赖于另一个查询时 219
13.1 高级子查询 219
13.1.1 相关子查询 220
13.1.2 并列的逻辑测试 221
13.1.3 EXISTS及其相关子查询的使用 223
13.2 外部连接 225
13.2.1 Oracle 9i以前版本中的外部连接语法 225
13.2.2 现在的外部连接语法 227
13.2.3 用外部连接代替NOT IN 228
13.2.4 用NOT EXISTS代替NOT IN 230
13.3 自然连接和内部连接 231
13.4 UNION、INTERSECT和MINUS 232
13.4.1 IN子查询 235
13.4.2 UNION、INTERSECT和MINUS的限制 235
第14章 一些复杂的技术 237
14.1 复杂的分组 237
14.2 使用临时表 239
14.3 使用ROLLUP、GROUPING和CUBE 240
14.4 家族树和CONNECT BY 244
14.4.1 排除个体和分支 248
14.4.2 向根遍历 249
14.4.3 找出叶节点 251
14.4.4 基本规则 252
第15章 更改数据:插入、更新、合并和删除 253
15.1 插入 253
15.1.1 插入时间 254
15.1.2 用SELECT插入 255
15.1.3 使用APPEND提示改善插入性能 256
15.2 ROLLBACK、COMMIT和AUTOCOMMIT命令 256
15.2.1 使用SAVEPOINT 257
15.2.2 隐式提交 258
15.2.3 自动回滚 258
15.3 多表插入 259
15.4 DELETE命令 263
15.5 UPDATE命令 264
15.5.1 用嵌入式SELECT进行更新 265
15.5.2 用NULL更新 266
15.6 使用MERGE命令 266
15.7 处理错误 269
第16章 DECODE和CASE:SQL中的if-then-else 271
16.1 if-then-else 271
16.2 通过DECODE替换值 275
16.3 DECODE中的DECODE 276
16.4 DECODE中的大于和小于 279
16.5 使用CASE 281
16.6 使用PIVOT 284
第17章 创建和管理表、视图、索引、集群和序列 287
17.1 创建表 287
17.1.1 字符宽度和数值精度 289
17.1.2 在插入时进行舍入 290
17.1.3 在CREATE TABLE中定义约束 292
17.1.4 指定索引表空间 293
17.1.5 命名约束 294
17.2 删除表 295
17.3 更改表 296
17.3.1 添加或修改列的规则 298
17.3.2 创建只读表 299
17.3.3 更改当前使用的表 299
17.3.4 创建虚拟列 300
17.3.5 删除列 301
17.4 根据一个表创建另一个表 302
17.5 创建索引组织表 303
17.6 创建视图 304
17.6.1 视图的稳定性 305
17.6.2 视图中的ORDER BY 306
17.6.3 创建只读视图 306
17.7 索引 307
17.7.1 创建索引 307
17.7.2 实施唯一性 308
17.7.3 创建唯一索引 308
17.7.4 创建位图索引 309
17.7.5 何时创建索引 310
17.7.6 创建不可见索引 310
17.7.7 索引列的变化 310
17.7.8 一个表能使用的索引数目 311
17.7.9 在数据库中放置索引 311
17.7.10 重建索引 312
17.7.11 基于函数的索引 312
17.8 集群 313
17.9 序列 314
第18章 分区 317
18.1 创建分区表 318
18.2 列表分区 320
18.3 创建子分区 320
18.4 创建引用分区和间隔分区 321
18.4.1 引用分区 321
18.4.2 间隔分区 322
18.5 索引分区 323
18.6 管理分区表 323
第19章 Oracle基本安全 325
19.1 用户、角色和权限 325
19.1.1 创建用户 326
19.1.2 密码管理 326
19.1.3 标准角色 330
19.1.4 GRANT命令的格式 331
19.1.5 撤消权限 331
19.2 可以授予用户何种权限 332
19.2.1 使用CONNECT切换到另一个用户 334
19.2.2 创建同义词 337
19.2.3 使用未授权的权限 337
19.2.4 权限的传递 337
19.2.5 创建角色 339
19.2.6 为角色授权 339
19.2.7 将一个角色授予另一个角色 340
19.2.8 为用户授予角色 340
19.2.9 为角色添加密码 340
19.2.10 删除角色的密码 341
19.2.11 启用和禁用角色 341
19.2.12 撤消角色的权限 342
19.2.13 删除角色 342
19.2.14 给指定的列授予UPDATE权限 343
19.2.15 撤消对象权限 343
19.2.16 用户安全性 343
19.2.17 给public授予访问权 345
19.3 有限资源的授权 345
第Ⅲ部分 进阶 349
第20章 高级安全性——虚拟专用数据库 349
20.1 初始配置 350
20.2 创建应用程序上下文 351
20.3 创建登录触发器 353
20.4 创建安全策略 354
20.5 将安全策略应用于表 355
20.6 测试VPD 355
20.7 如何实现列级别的VPD 357
20.8 如何禁用VPD 357
20.9 如何使用策略组 359
第21章 高级安全性:透明数据加密 361
21.1 列的透明数据加密 361
21.1.1 设置TDE以便使用加密列 362
21.1.2 RAC数据库的额外设置 363
21.1.3 钱夹的打开和关闭 363
21.1.4 列的加密和解密 364
21.2 表空间的加密 365
21.2.1 在表空间上设置TDE 365
21.2.2 创建加密的表空间 366
第22章 使用表空间 367
22.1 表空间与数据库的结构 367
22.1.1 表空间内容 368
22.1.2 表空间中的RECYCLEBIN空间 370
22.1.3 只读表空间 371
22.1.4 无日志表空间 371
22.1.5 临时表空间 372
22.1.6 用于系统管理撤消的表空间 372
22.1.7 大文件表空间 372
22.1.8 加密的表空间 373
22.1.9 支持闪回数据库 373
22.1.10 移动表空间 373
22.2 规划表空间的使用 374
22.2.1 分离活动表与静态表 374
22.2.2 分离索引与表 374
22.2.3 分离大对象与小对象 374
22.2.4 将应用程序表与核心对象分开 375
第23章 用SQL*Loader加载数据 377
23.1 控制文件 378
23.2 开始加载 379
23.3 逻辑记录与物理记录 382
23.4 控制文件语法注释 383
23.5 管理数据加载 385
23.6 重复数据加载 385
23.7 调整数据加载 386
23.8 直接路径加载 387
23.9 SQL*Loader Express Mode 389
23.10 附加功能 390
第24章 使用Data Pump Export和Data Pump Import 391
24.1 创建目录 392
24.2 Data Pump Export选项 392
24.3 启动Data Pump Export作业 395
24.3.1 停止和重新启动运行的作业 396
24.3.2 从另一个数据库中导出 397
24.3.3 使用EXCLUDE、INCLUDE和QUERY 397
24.4 Data Pump Import选项 398
24.5 启动Data Pump Import作业 401
24.5.1 停止和重新启动运行的作业 402
24.5.2 EXCLUDE、INCLUDE和QUERY 403
24.5.3 生成SQL 403
第25章 访问远程数据 407
25.1 数据库链接 407
25.1.1 数据库链接是如何工作的 408
25.1.2 利用数据库链接进行远程查询 408
25.1.3 对同义词和视图使用数据库链接 409
25.1.4 利用数据库链接进行远程更新 410
25.1.5 数据库链接的语法 411
25.2 为位置透明性使用同义词 414
25.3 在视图中使用USER伪列 415
第26章 使用物化视图 417
26.1 功能 417
26.2 必需的系统权限 418
26.3 必需的表权限 419
26.4 只读物化视图与可更新的物化视图 419
26.5 创建物化视图的语法 419
26.5.1 物化视图的类型 423
26.5.2 基于ROWID和基于主键的物化视图 423
26.5.3 使用预建表 423
26.5.4 为物化视图表创建索引 424
26.6 用物化视图更改查询执行路径 424
26.7 使用DBMS ADVISOR 425
26.8 刷新物化视图 428
26.8.1 可执行何种刷新 428
26.8.2 用CONSIDER FRESH快速刷新 431
26.8.3 自动刷新 432
26.8.4 人工刷新 432
26.9 创建物化视图日志的语法 434
26.10 更改物化视图和日志 435
26.11 删除物化视图和日志 435
第27章 使用Oracle Text进行文本搜索 437
27.1 将文本添加到数据库中 437
27.2 文本查询和文本索引 439
27.2.1 文本查询 439
27.2.2 可用的文本查询表达式 440
27.2.3 精确匹配单个单词的搜索 440
27.2.4 精确匹配多个单词的搜索 441
27.2.5 短语精确匹配的搜索 445
27.2.6 搜索互相接近的单词 446
27.2.7 在搜索中使用通配符 446
27.2.8 搜索具有相同词根的单词 447
27.2.9 模糊匹配搜索 448
27.2.10 搜索发音相似的词 449
27.2.11 使用ABOUT运算符 450
27.2.12 索引同步 451
27.3 索引集 451
第28章 使用外部表 453
28.1 访问外部数据 454
28.2 创建外部表 455
28.2.1 外部表创建选项 458
28.2.2 创建时加载外部表 464
28.3 更改外部表 465
28.3.1 ACCESS PARAMETERS子句 465
28.3.2 ADD COLUMN子句 466
28.3.3 DEFAUIT DIRECTORY子句 466
28.3.4 DROP COLUMN子句 466
28.3.5 LOCATION子句 466
28.3.6 MODIFY COLUMN子句 466
28.3.7 PARALLEL子句 466
28.3.8 PROJECT COLUMN子句 466
28.3.9 REJECT LIMIT子句 466
28.3.10 RENAME TO子句 466
28.4 外部表的优缺点和潜在用途 467
第29章 使用闪回查询 469
29.1 基于时间的闪回示例 470
29.2 保存数据 471
29.3 基于SCN的闪回示例 472
29.4 闪回查询失败的后果 473
29.5 什么SCN与每一行关联 474
29.6 闪回版本查询 475
29.7 闪回计划 478
第30章 闪回:表和数据库 479
30.1 FLASHBACK TABLE命令 479
30.1.1 必需的权限 480
30.1.2 恢复删除的表 480
30.1.3 启用和禁用回收站 481
30.1.4 闪回SCN或时间戳 482
30.1.5 索引和统计信息 483
30.2 FLASHBACK DATABASE命令 483
第31章 SQL重放 487
31.1 高级别配置 487
31.1.1 分离和连接 488
31.1.2 创建工作负载目录 488
31.2 捕获工作负载 489
31.2.1 定义过滤器 489
31.2.2 启动捕获 490
31.2.3 停止捕获 491
31.2.4 导出AWR数据 491
31.3 处理工作负载 491
31.4 重放工作负载 492
31.4.1 控制和启动重放客户 492
31.4.2 初始化和运行重放 493
31.4.3 导出AWR数据 494
第Ⅳ部分 PL/SQL 497
第32章 PL/SQL简介 497
32.1 PL/SQL概述 497
32.2 声明部分 498
32.3 可执行命令部分 501
32.3.1 条件逻辑 503
32.3.2 循环 504
32.3.3 case语句 512
32.4 异常处理部分 514
第33章 应用程序在线升级 517
33.1 高可用数据库 517
33.1.1 Oracle Data Guard(数据卫士)体系结构 518
33.1.2 创建备用数据库配置 519
33.1.3 管理角色——切换和故障转移 521
33.2 最小化DDL变更的影响 524
33.2.1 创建虚拟列 524
33.2.2 改变正在使用的表 525
33.2.3 添加NOT NULL列 525
33.2.4 在线对象重新组织 525
33.2.5 删除列 528
第34章 触发器 531
34.1 必需的系统权限 531
34.2 必需的表权限 532
34.3 触发器的类型 532
34.3.1 行级触发器 532
34.3.2 语句级触发器 532
34.3.3 BEFORE和AFTER触发器 533
34.3.4 INSTEAD OF触发器 533
34.3.5 模式触发器 533
34.3.6 数据库级触发器 533
34.3.7 复合触发器 534
34.4 触发器语法 534
34.4.1 DML触发器类型的组合 536
34.4.2 设置插入值 537
34.4.3 维护复制的数据 538
34.4.4 定制错误条件 539
34.4.5 在触发器中调用过程 541
34.4.6 命名触发器 542
34.4.7 创建DDL事件触发器 542
34.4.8 创建数据库事件触发器 546
34.4.9 创建复合触发器 546
34.5 启用和禁用触发器 548
34.6 替换触发器 549
34.7 删除触发器 549
第35章 过程、函数与程序包 551
35.1 必需的系统权限 552
35.2 必需的表权限 553
35.3 过程与函数 553
35.4 过程与程序包 554
35.5 CREATE PROCEDURE语法 554
35.6 CREATE FUNCTION语法 556
35.6.1 在过程中引用远程表 558
35.6.2 调试过程 559
35.6.3 创建自己的函数 560
35.6.4 定制错误条件 561
35.6.5 命名过程和函数 563
35.7 CREATE PACKAGE语法 563
35.8 查看过程对象的源代码 566
35.9 编译过程、函数和程序包 567
35.10 替换过程、函数和程序包 567
35.11 删除过程、函数和程序包 568
第36章 使用本地动态SQL和DBMS_SQL 569
36.1 使用EXECUTE IMMEDIATE 569
36.2 使用绑定变量 571
36.3 使用DBMS_SQL 572
36.3.1 OPEN_CURSOR 573
36.3.2 PARSE 573
36.3,3 BIND_VARIABLE和BIND_ARRAY 574
36.3.4 EXECUTE 574
36.3.5 DEFINE_COLUMN 574
36.3.6 FETCH_ROWS、EXECUTE_AND_FETCH和COLUMN_VALUE 575
36.3.7 CLOSE_CURSOR 575
第37章 PL/SQL调整 577
37.1 调整SQL 577
37.2 调整PL/SQL的步骤 578
37.3 在SQL语句中使用PL/SQL 579
37.4 使用DBMS_PROFILE识别问题 580
37.5 将PL/SQL特性用于批量操作 585
37.5.1 forall 586
37.5.2 bulk collect 588
第Ⅴ部分 面向对象数据库 593
第38章 实现对象类型、对象视图和方法 593
38.1 使用对象类型 593
38.1.1 对象类型的安全性 594
38.1.2 索引对象类型属性 597
38.2 实现对象视图 598
38.2.1 通过对象视图操作数据 601
38.2.2 使用INSTEAD OF触发器 601
38.3 方法 604
38.3.1 创建方法的语法 604
38.3.2 管理方法 606
第39章 收集器(嵌套表和可变数组) 607
39.1 可变数组 607
39.1.1 创建可变数组 608
39.1.2 描述可变数组 608
39.1.3 向可变数组中插入记录 609
39.1.4 从可变数组中选择数据 611
39.2 嵌套表 613
39.2.1 指定嵌套表的表空间 614
39.2.2 向嵌套表中插入记录 615
39.2.3 使用嵌套表 616
39.3 嵌套表与可变数组的附加函数 617
39.4 嵌套表和可变数组的管理问题 618
39.4.1 收集器的可变性 618
39.4.2 数据的位置 619
第40章 使用大对象 621
40.1 可用的数据类型 621
40.2 为LOB数据指定存储参数 623
40.3 LOB值的操作和选择 625
40.3.1 初始化值 626
40.3.2 用子查询插入数据 628
40.3.3 更新LOB值 628
40.3.4 使用串函数处理LOB值 629
40.3.5 使用DBMS LOB操作LOB值 630
40.3.6 删除LOB 646
第41章 面向对象的高级概念 647
41.1 行对象和列对象 648
41.2 对象表和OID 648
41.2.1 把行插入对象表 649
41.2.2 从对象表中选择值 649
41.2.3 从对象表中更新和删除数据 650
41.2.4 使用REF函数 651
41.2.5 使用DEREF函数 651
41.2.6 使用VALUE函数 654
41.2.7 无效引用 655
41.3 具有REF的对象视图 655
41.3.1 对象视图的简要回顾 655
41.3.2 包含引用的对象视图 656
41.4 对象PL/SQL 659
41.5 数据库中的对象 661
第Ⅵ部分 Java相关知识 665
第42章 Java简介 665
42.1 Java与PL/SQL概述 666
42.2 开始 666
42.3 声明 667
42.4 可执行命令 667
42.4.1 条件逻辑 668
42.4.2 循环 672
42.4.3 异常处理 674
42.4.4 保留字 675
42.5 类 675
第43章 JDBC程序设计 681
43.1 使用JDBC类 682
43.2 使用JDBC进行数据操作 685
第44章 Java存储过程 691
44.1 将类加载到数据库中 693
44.2 如何访问类 697
44.2.1 直接调用Java存储过程 699
44.2.2 在何处执行命令 699
第Ⅶ部分 指南 703
第45章 Oracle数据字典指南 703
45.1 关于名称的说明 704
45.2 Oracle Database 12c中引入的新视图 704
45.3 Oracle Database 11g中引入的新视图 711
45.4 路线图:DICTIONARY(DICT)和DICT_COLUMNS 714
45.5 从表、列、视图、同义词和序列中选择 716
45.5.1 目录:USER_CATALOG(CAT) 716
45.5.2 对象:USER_OBJECTS(OBJ) 716
45.5.3 表:USER_TABLES(TABS) 717
45.5.4 列:USER_TAB_COLUMNS(COLS) 719
45.5.5 视图:USER_VIEWS 720
45.5.6 同义词:USER_SYNONYMS(SYN) 722
45.5.7 序列:USER_SEQUENCES(SEQ) 723
45.6 回收站:USER_RECYCLEBIN和DBA_RECYCLEBIN 723
45.7 约束和注释 724
45.7.1 约束:USER_CONSTRAINTS 724
45.7.2 约束列:USER_CONS_COLUMNS 725
45.7.3 约束异常:EXCEPTIONS 726
45.7.4 表注释:USER_TAB_COMMENTS 727
45.7.5 列注释:USER_COL_COMMENTS 727
45.8 索引和集群 728
45.8.1 索引:USER_INDEXES(IND) 728
45.8.2 索引列:USER_IND_COLUMNS 730
45.8.3 集群:USER_CLUSTERS(CLU) 731
45.8.4 集群列:USER_CLU_COLUMNS 732
45.9 抽象数据类型和LOB 732
45.9.1 抽象数据类型:USER_TYPES 732
45.9.2 LOB:USER_LOBS 734
45.10 数据库链接和物化视图 735
45.10.1 数据库链接:USER_DB_LINKS 735
45.10.2 物化视图 736
45.10.3 物化视图日志:USER_MVIEW_LOGS 737
45.11 触发器、过程、函数和程序包 738
45.11.1 触发器:USER_TRIGGERS 738
45.11.2 过程、函数和程序包:USER_SOURCE 738
45.12 维度 740
45.13 包括分区和子分区的空间分配和使用情况 741
45.13.1 表空间:USER_TABLESPACES 741
45.13.2 空间限额:USER_TS_QUOTAS 742
45.13.3 段和区:USER_SEGMENTS和USER_EXTENTS 742
45.13.4 分区和子分区 743
45.13.5 可用空间:USER_FREE_SPACE 746
45.14 用户和权限 746
45.14.1 用户:USER_USERS 746
45.14.2 资源限制:USER_RESOURCE_LIMITS 746
45.14.3 表的权限:USER_TAB_PRIVS 747
45.14.4 列权限:USER_COL_PRIVS 747
45.14.5 系统权限:USER_SYS_PRIVS 747
45.15 角色 748
45.16 审计 749
45.17 监控对象使用 749
45.18 其他视图 750
45.19 监控:V$动态性能表 750
45.19.1 CHAINED_ROWS 750
45.19.2 PLAN_TABLE 751
45.19.3 相互依赖性:USER_DEPENDENCIES和IDEPTREE 751
45.19.4 只属于DBA的视图 751
45.19.5 OracleLabelSecurity 751
45.19.6 SQL*Loader直接加载视图 752
45.19.7 全球支持视图 752
45.19.8 库 752
45.19.9 异构服务 752
45.19.10 索引类型和运算符 752
45.19.11 存储概要 753
45.19.12 顾问程序 753
45.19.13 调度程序 753
第46章 应用程序和SQL调整指南 755
46.1 数据库性能调整概览 755
46.2 调整——最佳实践 757
46.2.1 尽可能少做 757
46.2.2 尽可能简单地完成 760
46.2.3 告诉数据库需要知道什么 761
46.2.4 最大化环境中的吞吐量 761
46.2.5 分开处理数据 763
46.2.6 正确测试 763
46.3 生成并读取说明计划 765
46.3.1 使用SET AUTOTRACE ON命令 765
46.3.2 使用EXPLAIN PLAN命令 769
46.4 说明计划中的主要操作 770
46.4.1 TABLE ACCESS FULL 770
46.4.2 TABLE ACCESS BY INDEX ROWID 771
46.4.3 相关提示 771
46.4.4 使用索引的操作 772
46.4.5 何时使用索引 773
46.4.6 操纵数据集的操作 778
46.4.7 执行连接的操作 784
46.4.8 Oracle如何处理两个以上的表的连接 785
46.4.9 并行化和缓存问题 790
46.5 小结 791
第47章 SQL结果缓存和客户端查询缓存 793
47.1 SQL结果缓存的数据库参数设置 801
47.2 DBMS_RESULT_CACHE程序包 802
47.3 SQL结果缓存的字典视图 803
47.4 SQL结果缓存的更多细节 803
47.5 Oracle调用接口(OCI)客户端查询缓存 803
47.6 Oracle调用接口(OCI)客户端查询缓存的限制 804
第48章 关于调整的示例分析 805
48.1 案例分析1:等待、等待、再等待 805
48.2 案例分析2:破坏应用程序的查询 808
48.3 案例分析3:长期运行的批处理作业 811
第49章 可插入数据库漫游指南 815
49.1 可插入数据库的概念 816
49.1.1 CDB的组成 816
49.1.2 CDB用户 816
49.1.3 先决条件 817
49.2 创建CDB和PDB 817
49.2.1 创建CDB 817
49.2.2 创建PDB 819
49.2.3 管理PDB 821
49.2.4 拔出PDB 821
49.2.5 删除PDB 822
49.2.6 插入PDB 822
49.2.7 监控PDB 822
第50章 Oracle RAC集群 825
50.1 安装前的准备 826
50.2 安装RAC 826
50.2.1 存储 827
50.2.2 初始化参数 827
50.3 启动和停止RAC实例 829
50.4 透明应用程序故障切换 831
50.5 为集群添加节点和实例 832
第51章 数据库管理指南 833
51.1 创建数据库 834
51.2 启动和停止数据库 835
51.3 设置和管理内存区域大小 835
51.4 分配和管理对象的空间 838
51.4.1 存储子句的含义 838
51.4.2 表段 840
51.4.3 索引段 841
51.4.4 系统管理的Undo 841
51.4.5 临时段 842
51.4.6 可用空间 843
51.4.7 设置数据库对象的大小 844
51.5 监控Undo表空间 846
51.6 自动存储管理 846
51.7 段空间管理 847
51.8 移动表空间 848
51.8.1 生成可移动表空间集 848
51.8.2 插入可移动表空间集 849
51.9 进行备份 850
51.9.1 Data Pump Export和Data Pump Import 850
51.9.2 脱机备份 850
51.9.3 联机备份 851
51.9.4 Recovery Manager 854
51.10 展望 855
第52章 Oracle中的XML指南 857
52.1 文档类型定义、元素及属性 857
52.2 XML模式 861
52.3 使用XSU选择、插入、更新和删除XML值 863
52.3.1 使用XSU进行插入、更新和删除 865
52.3.2 XSU和Java 866
52.3.3 定制查询过程 867
52.4 使用XMLType 868
52.5 其他功能 870