第1章 Oracle体系结构和存储 1
1.1 体系结构 2
1.1.1 实例 2
1.1.2 数据组织结构 5
1.2 数据类型 8
1.2.1 字符数据类型 8
1.2.2 BFILE 9
1.2.3 数值型数据类型 9
1.2.4 RAW和LONG RAW 11
1.2.5 其他数据类型 11
1.3 小结 11
第2章 使用SQL 13
2.1 SQL语句的处理流程 14
2 1.1 连接到数据库 14
2.1.2 建立游标 15
2.1.3 提交SQL语句 16
2.1.4 接收数据 18
2.2 性能问题 18
2.2.1 检索的性能 18
2.2.2 使用绑定变量 19
2.2.3 并行操作 21
2.3 小结 22
第3章 多用户控制 23
3.1 目的 24
3.1.1 数据完整性 24
3.1.2 隔离 25
3.1.3 串行化 25
3.2 事务 25
3.3 同时发生的用户完整性问题 26
3.4 锁 28
3.5 争用 29
3.6 Oracle解决方案 29
3.6.1 多版本读取一致性 29
3.6.2 完整性结论 31
3.6.3 性能结论 31
3.6.4 隔离级别 31
3.7 实现问题 33
3.7.1 写争用 33
3.7.2 避免数据改变 33
3.8 小结 35
第4章 数据库设计基础 37
4.1 数据库设计阶段 39
4.1.1 概念数据库设计 39
4.1.2 逻辑数据库设计 39
4.1.3 物理设计 40
4.1.4 实践设计 41
4.1.5 数据库设计具 42
4.1.6 数据库设计技术 43
4.2 数据库设计学习案例 46
4.3 规范化 47
4.3.1 第一范式 49
4.3.2 第二范式&5 1
4.3.3 第三范式 52
4.3.4 其他键 52
4.3.5 规范化小结 53
4.4 定义附加实体(表) 54
4.5 反规范化 54
4.6 其他物理设计选项 56
4.7 Oracle面向对象的设计选项 57
4.8 小结 57
第5章 Oracle安全性 59
5.1 安全概念 59
5.1.1 机密性及保密 60
5.1.2 完整性 60
5.1.3 保证数据库层安全的原因 60
5.2 身份验证 61
5.2.1 用户及密码 61
5.2.2 智能卡和物理标识 62
5.2.3 Oracle语法 62
5.3 授权 65
5.3.1 系统特权 65
5.3.2 对象特权 65
5.3.3 角色 66
5.3.4 存储过程 69
5.4 访问控制 70
5.4.1 视图 70
5.4.2 加密 71
5.4.3 虚拟私有数据库 73
5.4.4 Oracle标记安全选择 75
5.5 可说明性 76
5.5.1 审计 76
5.5.2 触发器 79
5.6 企业安全 79
5.6.1 LDAP 80
5.6.2 企业用户 80
5.6.3 共享模式 80
5.6.4 数据库安全 80
5.6.5 网络安全 80
5.7 安全实践 82
5.8 小结 83
第6章 Oracle数据字典 85
6.1 数据字典的概念 85
6.2 Oracle数据字典的结构 86
6.2.1 USER_TABLES 87
6.2.2 ALL_TABLES 88
6.2.3 DBA_TABLES 88
6.2.4 TAB 89
6.2.5 V_$FIXED_TABLE 90
6.3 开发期间的Oracle数据字典 90
6.3.1 定位及描述数据字典视图 91
6.3.2 哪一个视图组 92
6.3.3 更新数据字典 95
6.4 执行时的Oracle数据字典 96
6.4.1 SQL到生成SQL 96
6.4.2 动态SQL 98
6.5 小结 100
第7章 安装Oracle 101
7.1 获得Oracle软件 101
7.2 安装Oracle服务器软件 104
7.2.1 系统需求 104
7.2.2 安装软件 104
7.3 访问Oracle数据库 108
7.4 安装Oracle客户端软件 109
7.4.1 Java驱动程序 109
7.4.2 Oracle客户端软件 110
7.4.3 安装Oracle Instant Client 110
7.4.4 哪一个驱动程序 111
7.5 小结 112
第8章 SQL概述 113
8.1 历史回顾 113
8.2 标准 114
8.3 SQL语句分组 114
8.4 数据定义语言(DDL) 115
8.4.1 CREATE 115
8.4.2 ALTER 117
8.4.3 DROP 118
8.4.4 Caveat! 118
8.5 数据处理语言(DML) 118
8.6 SQL:面向集合和非过程化特性 118
8.6.1 SELECT语句 119
8.6.2 多表访问 127
8.6.3 子查询 130
8.6.4 INSERT 132
8.6.5 UPDATE 133
8.6.6 DELETE 134
8.6.7 COMMIT/ROLLBACK/SAVEPOINT 134
8.7 小结 135
第9章 扩展的SQL 137
9.1 扩展条件 137
9.1.1 LIKE及REGEXP_LIKE 137
9.1.2 IN及EXISTS 138
9.1.3 ALL、SOME及ANY 141
9.2 扩展集合操作 142
9.2.1 UNION 143
9.2.2 INTERSECT 144
9.2.3 MINUS 145
9.3 MERGE 146
9.3.1 示例 147
9.3.2 警告 149
9.4 TRUNCATE 149
9.5 ROWNUM及Ranking 149
9.5.1 使用ROWNUM 149
9.5.2 使用分析单 152
9.6 闪回查询 153
9.6.1 工作原理 154
9.6.2 语法 154
9.6.3 闪回查询示例 154
9.6.4 警告 156
9.6.5 扩展的闪回能力 156
9.7 根据写操作返回数据 157
9.8 其他扩展 157
9.9 小结 157
第10章 索引 159
10.1 索引基础 160
10.1.1 索引的运作方式 160
10.1.2 键 163
10.1.3 索引属性 163
10.2 B-树索引 165
10.2.1 B-树索引的工作原理 165
10.2.2 关于B-树索引的不实之辞 166
10.3 逆键索引 168
10.4 基于函数的索引 169
10.4.1 基于函数索引的应用程序 170
10.4.2 潜在问题 172
10.5 域索引 173
10.6 位图索引 173
10.6.1 位图索引的结构 174
10.6.2 位图索引的影响 174
10.7 位图连接索引 176
10.8 索引组织表 176
10.9 索引群集 177
10.10 散列群集 178
10.11 关于设计与性能的建议 178
10.11.1 从小处着手 178
10.11.2 键压缩 179
10.11.3 SQL Access Advisor 180
10.12 小结 180
第11章 约束 181
11.1 数据库完整性特性 182
11.1.1 数据类型定义 182
11.1.2 约束 183
11.1.3 触发器与存储过程 183
11.2 约束类型 184
11.2.1 NOT NULL 185
11.2.2 PRIMARY KEY 186
11.2.3 UNIQUE 188
11.2.4 FOREIGN KEY 189
11.2.5 CHECK 193
11.2.6 DEFAULT 195
11.2.7 REF约束 197
11.3 约束应用 198
11.3.1 AlterTable 198
11.3.2 约束状态 199
11.3.3 约束与索引 201
11.3.4 可延期的约束 203
11.3.5 直接路径操作 203
11.3.6 约束与导出/导入 204
11.3.7 对变异表触发器的影响 204
11.3.8 对视图的约束 204
11.3.9 将数据库约束用于应用程序端的规则检查 204
11.4 小结 205
第12章 其他数据库结构 207
12.1 表空间 207
12.1.1 临时表空间 208
12.1.2 撤消表空间 209
12.2 压缩 209
12.3 分区 210
12.4 视图 211
12.5 物化视图 213
12.6 序列 213
12.7 全局临时表 214
12.8 回收站 215
12.9 同义词 217
12.9.1 使用同义词的理由 217
12.9.2 同义词应用 217
12.10 数据库链接 218
12.11 Advanced Queuing与Streams技术 219
12.11.1 Streams AQ 219
12.11.2 Streams(流) 220
12.11.3 流小结 221
12.12 对象 222
12.13 存储过程、函数和触发器 222
12.14 访问普通文件 223
12.14.1 外部表 223
12.14.2 UTL_FILE 223
12.15 SGA缓冲池的分配 223
12.16 Workflow 224
12.17 Workspace Manager 225
12.18 小结 226
第13章 函数 227
13.1 函数的定义 227
13.2 自定义函数 228
13.2.1 函数的创建权限 228
13.2.2 函数的适用范围 229
13.2.3 定义Java函数 229
13.2.4 查看关于自定义函数的信息 229
13.2.5 删除函数 230
13.3 Oracle的内置SQL函数 230
13.3.1 聚集函数 230
13.3.2 数值函数 237
13.3.3 字符函数 243
13.3.4 日期与时间函数 251
13.3.5 转换函数 257
13.3.6 集合函数 265
13.3.7 其他Oracle函数 265
13.3.8 XML函数 271
13.4 小结 275
第14章 分布式查询、事务与数据库 277
14.1 链接分布式Oracle数据库 278
14.2 分布式事务和两阶段提交 281
14.3 同类服务 282
14.3.1 ODBC 282
14.3.2 透明网关 284
14.4 小结 284
第15章 PL/SQL基础 285
15.1 代码体系结构 286
15.1.1 块头标 286
15.1.2 声明节 287
15.1.3 执行节 288
15.1.4 异常节 288
15.1.5 异常处理方法 289
15.1.6 与错误相关的函数 289
15.1.7 作用域与表示法 289
15.2 PL/SQL语言 290
15.3 实现逻辑 294
15.3.1 条件逻辑 294
15.3.2 分支 297
15.3.3 循环 298
15.3.4 什么都不做 299
15.4 创建PL/SQL程序 299
15.4.1 示例过程的目标 300
15.4.2 开始编码 300
15.4.3 添加变量 300
15.4.4 添加逻辑 301
15.4.5 添加异常处理 301
15.5 使用PL/SQL代码 302
15.5.1 编译准备 303
15.5.2 编译PL/SQL代码 303
15.5.3 运行PL/SQL代码 304
15.5.4 编译、源代码与依赖性 304
15.6 安全性 306
15.6.1 授权对PL/SQL的访问 306
15.6.2 程序单元的权限 306
15.7 本机编译 307
15.8 使用PL/SQL程序单元 307
15.9 小结 308
第16章 PL/SQL与SQL 309
16.1 PL/SQL中的SQL基础知识 309
16.2 游标 310
16.2.1 创建游标 310
16.2.2 打开游标 310
16.2.3 取数据 310
16.2.4 关闭游标 311
16.2.5 游标属性 311
16.3 使用单个游标 311
16.3.1 声明变量 311
16.3.2 声明游标 311
16.3.3 打开游标 312
16.3.4 取数据 312
16.3.5 资源释放 313
16.3.6 运行过程 314
16.4 特殊数据类型 315
16.4.1 %TYPE 315
16.4.2 %ROWTYPE 315
16.5 FOR游标 316
16.5.1 语法 316
16.5.2 修改示例 316
16.6 隐式游标 317
16.7 REF游标 318
16.8 PL/SQL记录和集合 319
16.8.1 PL/SQL记录 320
16.8.2 PL/SQL记录与SQL 320
16.8.3 关联数组 321
16.8.4 嵌套表 322
16.8.5 可变数组 322
16.8.6 使用集合 322
16.8.7 集合操作 323
16.8.8 集合的适用性 324
16.9 BULK COLLECT 325
16.10 FORALL 328
16.10.1 语法 328
16.10.2 异常情形 328
16.10.3 FORALL的改进 328
16.11 动态SQL 329
16.11.1 EXECUTE IMMEDIATE 330
16.11.2 包含动态SQL的BULK操作 330
16.11.3 关于动态SQL的补充 331
16.12 小结 331
第17章 PL/SQL包 333
17.1 包的定义 333
17.2 包的作用 334
17.2.1 结构 334
17.2.2 可见性 335
17.2.3 作用域 335
17.2.4 依赖性 335
17.2 5 运行库内存的使用 336
17.2.6 Oracle的承诺 336
17.3 示例 336
17.3.1 包规范 337
17.3.2 包主体 338
17.3.3 运行示例 343
17.4 使用多个包 344
17.4.1 第2个包 344
17.4.2 包代码 345
17.4.3 修改第1个包 346
17.4.4 对第2个包的影响 346
17.5 小结 348
第18章 Java数据库编程简介 349
18.1 Java体系结构 350
18.1.1 Java:语言 350
18.1.2 Java虚拟机和字节码 350
18.1.3 性能 351
18.1.4 J2SE和J2EE 351
18.2 Oracle的Java体系结构 357
18.2.1 JDBC和持久性框架 358
18.2.2 数据库外Java 361
18.2.3 数据库内Java 361
18.3 构建示例应用程序 362
18.3.1 设置CLASSPATH 362
18.3.2 使用JDBC的Java应用程序——基本成分 363
18.3.3 使用OracleAS TopLink的Java应用程序 368
18.3.4 Java存储过程 373
18.4 小结 379
第19章 触发器 381
19.1 触发器的定义 381
19.1.1 触发器的类型 381
19.1.2 执行次序 382
19.2 使用触发器 382
19.2.1 命名触发器 382
19.2.2 创建触发器的权限 383
19.2.3 创建触发器 383
19.2.4 :new和:old 384
19.2.5 更新触发器 385
19.2.6 删除触发器 385
19.2.7 控制触发器激活的时机 386
19.2.8 插入或更新 387
19.3 特定环境 387
19.3.1 INSTEAD OF触发器 387
19.3.2 用于引用完整性的触发器 390
19.4 其他语言里的触发器 391
19.5 触发器和变异表 392
19.6 删除触发器 393
19.6.1 删除/卸载触发器 393
19.6.2 屏蔽触发器 394
19.6.3 重新编译触发器 394
19.7 在数据字典中查看触发器 394
19.8 触发器限制 395
19.9 小结 395
第20章 正则表达式和表达式过滤器 397
20.1 正则表达式 398
20.1.1 正则表达式概念 398
20.1.2 与数据库应用程序的相关性 401
20.1.3 Oracle正则表达式 402
20.1.4 使用场合 408
20.1.5 体系结构和性能 412
20.2 表达式过滤器 413
20.2.1 Expression Filter(表达式过滤器)概念 414
20.2.2 与数据库应用程序的关联 419
20.3 小结 420
第21章 对象关系与Oracle的交互 421
21.1 对象关系 422
21.2 Oracle对象介绍 423
21.2.1 对象类型 424
21.2.2 对象类型方法 426
21.2.3 对继承的支持 430
21.2.4 模式改进 432
21.2.5 UML概念的映射 432
2 1.3 使用Oracle对象类型 433
21.3.1 用作持久化对象类型的已存在Java类 433
21.3.2 在数据库中创建对象类型的实例 436
21.3.3 使用Java与数据库对象进行交互 437
21.4 关系数据上的对象视图 441
21.5 Oracle JPublisher(JPub) 445
21.5.1 配置和运行时 445
21.5.2 发布SQL和DML语句 446
21.5.3 发布Java存储过程 447
21.5.4 发布对象类型 448
21.5.5 对Web服务的支持 448
21.6 小结 449
第22章 Oracle XML DB 451
22.1 XML DB库简介 451
22.1.1 对Oracle库中的XML进行基于协议的访问 452
22.1.2 对Oracle库中的XML数据进行基于SQL的访问 458
22.1.3 使用XDB库启用新模式 462
22.1.4 Oracle XML库上基于ACL的安全 462
22.2 XMLType 464
22.2.1 创建XMLType列和表 465
22.2.2 XML视图 466
22.3 XML模式 468
22.4 SQ/XML和查询重写 479
22.5 SQL到XML 480
22.6 转换XML 483
22.7 内容管理示例 484
22.7.1 创建内容管理应用程序前端 484
22.7.2 数据库外的OracleXML——Oracle XDK 496
22.8 小结 499
第23章 HTML-DB 501
23.1 HTML-DB介绍 501
23.2 HTML-DB环境 502
23.3 安装HTML-DB 503
23.4 准备开发环境 507
23.4.1 创建工作区 507
23.4.2 创建应用程序开发人员 510
23.5 导入数据 511
23.6 创建应用程序 514
23.7 示例HTML-DB应用程序的功能 520
23.8 加入新页面 524
23.9 修改页面属性 526
23.10 运行应用程序 528
23.11 其他功能 528
23.12 下一步 529
23.13 小结 529
第24章 高速数据移动 531
24.1 Export/Import和“Data Dump” 532
24.2 Transportable Tablespaces 534
24.2.1 使用注意事项 534
24.2.2 Transportable Tablespaces示例 534
24.3 流 536
24.3.1 Streams的阶段和过程 536
24.3.2 配置和监视高级队列 537
24.4 小结 539
第25章 数据装载和管理 541
25.1 SQL*Loader 542
25.2 外部表数据库特性 543
25.2.1 定义外部表 543
25.2.2 从外部表进行装载 544
25.3 转换 545
25.4 改变数据捕获 546
25.5 分区和ETL的速度 546
25.6 Oracle Warehouse Builder 548
25.6.1 使用OWB的建立和部署步骤 548
25.6.2 使用OWB的例子 548
25.6.3 非关系型目标 551
25.7 小结 551
第26章 业务智能化查询 553
26.1 业务智能化模式 554
26.1.1 尺度和层次 558
26.1.2 创建尺度 559
26.2 摘要表和物化视图 559
26.2.1 使用SQL Access Advisor(Summary Advisor) 561
26.2.2 创建和编辑物化视图 562
26.3 通过SQL:Rollup和Cube进行聚合 563
26.4 复杂查询工作量的预管理 565
26.5 小结 566
第27章 业务智能化分析 567
27.1 SQL分析和统计 568
27.1.1 分阶和百分比划分 568
27.1.2 用于累积和移动聚合的Windows函数 571
27.1.3 迟延和领先分析 573
27.1.4 第一/最后分析 574
27.1.5 线性衰退和其他高级函数 574
27.2 OLAP 576
27.3 数据挖掘 579
27.4 小结 580
第28章 优化 581
28.1 优化的概念 581
28.2 Oracle优化器 582
28.3 优化器模式 583
28.3.1 不再支持的优化器模式 583
28.3.2 设置优化器模式 583
28.4 统计 584
28.4.1 统计和代价 584
28.4.2 统计类型 584
28.4.3 搜集统计信息 585
28.4.4 统计和改变 585
28.4.5 产品环境和测试环境 586
28.4.6 直方图 586
28.4.7 处理直方图 587
28.5 执行计划 589
28.5.1 执行计划 589
28.5.2 数据操作 589
28.6 执行统计 591
28.6.1 全面执行统计 592
28.6.2 详细统计 592
28.6.3 执行计划和统计示例 593
28.7 浏览执行计划和统计 596
28.7.1 AUTOTRACE 596
28.7.2 EXPLAIN PLAN 597
28.7.3 SQL Trace和TKPROF 598
28.7.4 Enterprise Manager 601
28.7.5 V$SQL_PLAN和V$SQL_PLAN_STATISTICS 602
28.8 提示 602
28.8.1 提示的语法 602
28.8.2 可用提示 602
28.8.3 并行操作提示 606
28.8.4 现在不要使用它们 606
28.9 存储概要 607
28.9.1 创建存储概要 608
28.9.2 使用存储概要 608
28.9.3 编辑存储概要 608
28.10 小结 609