第1章 开发成功的Oracle应用程序 1
1.1 我的方法 2
1.2 黑盒子方法 3
1.3 如何开发(如何妨碍开发)数据库应用程序 5
1.3.1 理解Oracle的体系结构 6
1.3.2 理解并行控制 10
1.3.3 与数据库无关 17
1.3.4 如何使他们运行更快 27
1.3.5 数据库管理员与开发人员之间的关系 28
1.4 小结 29
第2章 体系结构 30
2.1 服务器 30
2.2 文件 36
2.2.1 参数文件 37
2.2.2 数据文件 39
2.2.3 临时文件 41
2.2.4 控制文件 42
2.2.5 重做日志文件 42
2.2.6 文件总结 46
2.3 内存结构 46
2.3.1 PGA和UGA 46
2.3.2 SGA 51
2.3.3 内存结构总结 60
2.4 进程 61
2.4.1 服务器进程 61
2.4.2 后台进程 65
2.4.3 从属进程 72
2.5 小结 73
第3章 封锁和并行性 74
3.1 锁定 74
3.2 封锁问题 76
3.2.1 丢失更新 76
3.2.2 阻塞 79
3.2.3 死锁 80
3.2.4 锁定扩大 84
3.3 锁定类型 84
3.3.1 DML锁定 85
3.3.2 DDL锁定 91
3.3.3 锁存器和内部锁定(入队) 94
3.3.4 手动封锁和用户自定义锁定 95
3.4.1 事物隔离等级 96
3.4 什么是并行控制 96
3.4.2 READ UNCOMMITTED 隔离等级 97
3.4.3 READ COMMITTED 隔离等级 99
3.4.4 REPEATABLE READ 隔离等级 100
3.4.5 SERIALIZABLE 隔离等级 103
3.4.6 只读事务 104
3.5 小结 105
第4章 事务 106
4.1 事务控制语句 106
4.2 完整性约束和事务 111
4.3 处理事务的不良习惯 114
4.4 分布式事务 119
4.5 重做和回滚 121
4.6 小结 124
5.1 重做 125
第5章 重做和回滚 125
5.1.1 COMMIT 126
5.1.2 回滚 131
5.1.3 产生多少重做 132
5.1.4 能够不让重做日志产生吗 142
5.1.5 不能分配一个新日志吗 145
5.1.6 块清除 146
5.1.7 日志竞争 149
5.1.8 临时表和重做/回滚 151
5.1.9 分析重做 153
5.2 回滚 154
5.2.1 什么产生最多/最少的撤销 154
5.2.2 SET TRANSACTION 154
5.2.3 "ORA-01555: Snapshot too old" 155
5.3 小结 164
第6章 数据库表 166
6.1 表的类型 166
6.2 术语 167
6.2.1 高水标记 167
6.2.2 自由列表 168
6.2.3 PCTFREE和PCTUSED 170
6.2.4 INITIAL,NEXT和PCTINCREASE 176
6.2.5 MINEXTENTS和MAXEXTENTS 177
6.2.6 LOGGING和NOLOGGING 177
6.2.7 INITRANS和MAXTRANS 177
6.3 堆组织表 177
6.4 索引组织表 181
6.6 索引聚簇表 194
6.5 索引组织表总结 194
6.7 索引聚簇表总结 201
6.8 散列聚簇表 201
6.9 散列聚簇总结 210
6.10 嵌套表 211
6.10.1 嵌套表语法 211
6.10.2 嵌套表存储 219
6.11 嵌套表总结 222
6.12 临时表 222
6.13 对象表 230
6.14 对象表总结 238
6.15 小结 238
7.1 Oracle 索引概述 239
第7章 索引 239
7.2 B*Tree 索引 240
7.2.1 反向码索引 244
7.2.2 降序索引 245
7.2.3 应该在何时使用B*Tree 索引 247
7.3 B*Trees 总结 254
7.4 位图索引 254
7.5 位图索引总结 257
7.6 基于函数的索引 257
7.6.1 重要的实现细节 257
7.6.2 基于函数索引的例子 258
7.6.3 警告 266
7.7 基于函数的索引总结 267
7.8 应用程序域索引 267
7.10 关于索引的常见问题解答 268
7.9 应用程序域索引总结 268
7.10.1 索引能在视图中使用吗 269
7.10.2 索引和空 269
7.10.3 外码上的索引 272
7.10.4 为什么索引没有使用 273
7.10.5 索引使用了吗 278
7.10.6 神话:在索引中空间从来不会重用 278
7.10.7 神话:大部分有差别的元素应该在前边 281
7.11 小结 285
第8章 导入和导出 286
8.1 例子 286
8.2 为什么可以使用IMP和EXP 287
8.2.4 传输表空间 288
8.2.3 克隆模式 288
8.2.2 抽取DDL 288
8.2.1 检测冲突 288
8.2.5 重构实例 289
8.2.6 在平台之间复制数据 289
8.3 IMP/EXP的工作原理 289
8.3.1 选项 289
8.3.2 大量导出 293
8.3.3 数据子集 297
8.3.4 数据传输 297
8.3.5 获得DDL 303
8.3.6 备份和恢复 309
8.3.7 IMP/EXP不(再)是一个重新组织工具 310
8.3.8 导入到不同结构 310
8.4.1 克隆 315
8.3.9 直接路径导出 315
8.4 警告和错误 315
8.4.2 跨版本使用IMP/EXP 323
8.4.3 索引哪里去了 324
8.4.4 命名与默认名的约束 326
8.4.5 NLS问题 330
8.4.6 表跨越多个表空间 332
8.5 小结 336
第9章 数据装载 337
9.1 SQL*LOADER简介 337
9.2 如何装载 343
9.2.1 装载定界数据 343
9.2.2 装载固定格式的数据 346
9.2.3 装载日期 348
9.2.4 利用序列和其他函数装载数据 349
9.2.5 更新现有的行和插入新的行 355
9.2.6 装载报表类型的插入数据 357
9.2.7 装载一个文件到一个长RAW或长字段中 360
9.2.8 装载嵌入换行符的数据 361
9.2.9 卸载数据 371
9.2.10 装载LOB 382
9.2.11 用SQLLDR装载VARRAYS/嵌套表 392
9.2.12 在存储过程中调用SQLLDR 395
9.3 警告 399
9.3.1 不能选择欲使用的回滚段 399
9.4 小结 400
9.3.4 命令行取代控制文件 400
9.3.3 SQLLDR默认为CHAR(255) 400
9.3.2 TRUNCATE的不同作用 400
第10章 优化策略与工具 401
10.1 标识问题 401
10.2 我的方法 402
10.3 绑定变量与分析 407
10.4 绑定变量与分析总结 423
10.5 SQL_TRACE、TIMED_STATISTICS与TKPROF 423
10.5.1 设置跟踪 424
10.5.2 使用并解释TKPROF输出 426
10.5.3 使用并说明原始跟踪文件 435
10.6 SQL_TRACE、TIMED_STATISTICS与TKPROF总结 446
10.8 说明 447
10.7 DBMS_PROFILER 447
10.9 StatsPack 449
10.9.1 安装StatsPack 449
10.9.2 StatsPack总结 467
10.10 V$表 467
10.10.1 V$EVENT_NAME 467
10.10.2 V$FILESTAT和V$TEMPSTAT 468
10.10.3 V$LOCK 468
10.10.4 V$MYSTAT 468
10.10.5 V$OPEN_CURSOR 469
10.10.6 V$PARAMETER 471
10.10.7 V$SESSION 471
10.10.13 V$SQL, V$SQLAREA 474
10.10.12 V$SESS_IO 474
10.10.11 V$SESSTAT 474
10.10.10 V$SESSION_WAIT 474
10.10.8 V$SESSION_EVENT 474
10.10.9 V$SESSION_LONGOPS 474
10.10.14 V$STATNAME 475
10.10.15 V$SYSSTAT 475
10.10.16 V$SYSTEM_EVENT 475
10.11 小结 475
第11章 优化器方案稳定性 476
11.1 概述 476
11.2 优化器方案稳定性的使用 479
11.2.1 实现优化的方法 480
11.2.2 开发工具 484
11.2.4 查看应用程序执行的是什么SQL语句 486
11.3 优化器方案稳定性是如何工作的 486
11.2.3 查看所使用的索引 486
11.4 创建存储大纲 489
11.4.1 存储大纲需要具备的权限 489
11.4.2 使用DDL 489
11.4.3 使用ALTER SESSION 490
11.5 OUTLN用户 491
11.6 在数据库之间移动大纲 492
11.7 得到正确的大纲 492
11.8 管理大纲 495
11.8.1 通过DDL管理大纲 495
11.8.2 OUTLN-PKG程序包 498
11.9 警告 501
11.9.1 大纲表的命名和使用场合 501
11.9.4 “CURSOR-SHARING=FORCE”与大纲 503
11.9.2 ALTER SESSION的问题 503
11.9.3 Drop User不删除大纲 503
11.9.5 大纲使用简单的文本匹配 504
11.9.6 默认情况下大纲在SYSTEM表空间中 505
11.9.7 OR扩展 505
11.9.8 性能 506
11.9.9 大纲的名称空间是全局变量 510
11.10 可能遇到的失误 511
11.11 小结 512
第12章 分析函数 513
12.1 范例 513
12.2 分析函数是如何工作的 517
12.2.1 语法 517
12.2.2 分析函数 531
12.3 范例 533
12.3.1 前N个记录的查询 534
12.3.2 Pivot(行列转换)查询 544
12.3.3 访问当前行周围的行 552
12.4 警告 556
12.4.1 PL/SQL与分析函数 556
12.4.2 Where子句中的分析函数 558
12.4.3 NULL与排序 559
12.4.4 性能 561
12.5 小结 561
第13章 物化视图 562
13.1 简短历史 562
13.3 例子 563
13.2 运行范例需要什么 563
13.4 物化视图的使用 570
13.5 物化视图如何工作 571
13.5.1 设置 571
13.5.2 内部机制 572
13.6 确保视图可以使用 574
13.6.1 约束 574
13.6.2 维数 579
13.7 DBMS_OLAP 588
13.7.1 估计大小 589
13.7.2 维的验证 590
13.7.3 推荐物化视图 592
13.8.1 物化视图不是为OLTP系统设计的 594
13.8 警告 594
13.8.2 查询重写的完整性 595
13.9 小结 595
第14章 分区 596
14.1 分区的使用 596
14.1.1 提高可用性 596
14.1.2 减轻管理负担 598
14.1.3 增强DML和查询的性能 599
14.2 分区如何工作 601
14.2.1 表分区模式 601
14.2.2 分区索引 606
15.2.2 避免出现变异表的方法 621
14.3 小结 625
第15章 自治事务 626
15.1 范例 626
15.2.1 不能回滚的审计 628
15.2 为什么使用自治事务 628
15.2.3 在触发器中执行DDL语句 633
15.2.4 写入数据库 638
15.2.5 开发更多的模块化代码 647
15.3 它自治事务如何工作 648
15.3.1 事务控制 648
15.3.2 作用范围 650
15.3.3 结束自治事务 656
15.3.4 保存点 657
15.4 警告 659
15.4.1 非分布式事务 659
15.4.2 只有PL/SQL 659
15.4.3 整个事务回滚 659
15.4.4 事务级临时表 662
15.4.5 变异表 663
15.5 可能遇见的错误 665
15.6 小结 666
第16章 动态SQL 668
16.1 动态SQL与静态SQL 668
16.2 为什么使用动态SQL 670
16.3 如何使用动态SQL 672
16.3.1 DBMS-SQL 672
16.3.2 本地动态SQL 679
16.3.3 DBMS-SQL与本地动态SQL 683
16.4 警告 707
16.4.1 依赖链中断 708
16.5 小结 709
16.4.3 更难以优化 709
16.4.2 代码更脆弱 709
第17章 interMedia 710
17.1 简要历史 710
17.2 interMedia Text 的用途 711
17.2.1 搜索文本 711
17.2.2 管理多种文档 714
17.2.3 从多种数据源中对文本建立索引 714
17.2.4 它毕竟是一个Oracle数据库 717
17.2.5 生成主题 718
17.2.6 搜索XML应用程序 720
17.3 interMedia Text 如何工作 720
17.3.1 interMedia Text索引 724
17.3.2 关于ABOUT操作符 727
17.3.3 节搜索 728
17.4 警告 734
17.4.1 inter Media Text不是文档管理解决方案 734
17.4.2 索引同步 734
17.4.3 在数据库外部索引信息 735
17.4.4 文档服务 736
17.4.5 目录索引 736
17.5 可能遇到的错误 738
17.5.1 过期索引 738
17.5.2 外部过程错误 739
17.6 展望 739
17.7 小结 740
第18章 基于C的外部过程 741
18.1 如何使用外部过程 741
18.2 如何实现外部过程 742
18.3 配置服务器 744
18.3.1 验证外部过程程序 746
18.3.2 验证数据库环境 747
18.3.3 验证监听器 748
18.4第一个测试 748
18.4.1 编译extproc.c代码 749
18.4.2 建立SCOTT/TIGER账户 750
18.4.3 创建demolib库 750
18.4.4 安装和运行 751
18.5第一个外部过程 752
18.5.1 封装函数 753
18.5.2 C程序代码 763
18.5.3 建立外部过程 788
18.5.4 安装和运行 791
18.6 LOB到文件的外部过程(LOB-IO) 793
18.6.1 LOB-IO调用规范 793
18.6.2 LOB-IO的Pro*C程序代码 795
18.6.3 建立外部过程 799
18.6.4 LOB-IO的安装和使用 802
18.7 错误信息 807
18.8 小结 814
第19章 Java 存储过程 815
19.1 为什么使用Java存储过程 815
19.2 Java存储过程如何工作 816
19.2.1 传递数据 820
19.2.2 范例 830
19.3.1 ORA-29549 Java会话状态被清除 837
19.3 错误信息 837
19.3.2 权限错误 838
19.3.3 ORA-29531类Y中没有方法X 838
19.4 小结 839
第20章 使用对象关系特性 840
20.1 使用对象关系特性的原因 840
20.2 对象关系特性如何工作 841
20.3 在系统中增加数据类型 841
20.4 增加数据类型总结 856
20.5 利用类型扩展PL/SQL 856
20.5.1 创建新的PL/SQL数据类型 856
20.5.2 集合的独特应用 868
20.6 利用数据类型扩展PL/SQL总结 873
20.7 对象关系视图 873
20.7.2 O-R视图 874
20.7.1 数据类型 874
20.8 小结 887
第21章 精细存取控制 889
21.1 范例 889
21.2 为什么使用这一特性 890
21.2.1 易于维护 890
21.2.2 在服务器上执行 891
21.2.3 避免共享用户账户 892
21.2.4 支持共享用户账户 892
21.2.5 在ASP中放置应用程序 892
21.3 该特性是如何工作的 893
21.3.1 范例1:实施安全策略 894
21.3.2 范例2:使用应用程序上下文 899
21.4.1 参照完整性 918
21.4 警告 918
21.4.2 游标隐藏 923
21.4.3 导出/导入 929
21.4.4 调试 933
21.5 错误信息 934
21.6 小结 938
第22章 多层身份验证 939
22.1 为什么使用多层身份验证 939
22.2 多层身份验证机制 941
22.3 审计代理账户 951
22.4 警告 953
22.5 小结 954
23.1 范例 955
第23章 调用者权限和定义者权限 955
23.2 何时使用调用者权限 958
23.2.1 开发通用实用程序 958
23.2.2 数据字典应用程序 963
23.2.3 通用对象类型 965
23.2.4 实现您自己的访问控制 966
23.3 何时使用定义者权限 969
23.3.1 性能和可伸缩性 969
23.3.2 安全性 969
23.4 调用者权限和定义者权限如何工作 970
23.4.1 定义者权限 970
23.4.2 调用者权限 975
23.5 警告 985
23.5.1 调用者权限和共享池利用率 985
23.5.2 性能 989
23.5.3 程序必须在错误处理上更健壮 991
23.5.4 使用SELECT*的副作用 993
23.5.5 注意“隐藏”列 994
23.5.6 Java和调用者权限 996
23.6 错误信息 1002
23.7 小结 1002
附录A 必须提供的程序包 1004
A.1 DBMS_ALERT和DBMS_PIPE 1007
A.2 DBMS_APPLICATION_INFO 1017
A.3 DBMS_JAVA 1025
A.4 DBMS_JOB 1033
A.5 DBMS_LOB 1047
A.6 DBMS_LOCK 1066
A.7 DBMS_LOGMNR 1071
A.8 DBMS_OBFUSCATION_TOOLKIT 1097
A.9 DBMS_OUTPUT 1119
A.10 DBMS_PROFILER 1136
A.11 DBMS_UTILITY 1148
A.12 UTL_FILE 1177
A.13 UTL_HTTP 1185
A.14 UTL_RAW 1206
A.15 UTL_SMTP和发送邮件 1208
A.16 UTL_TCP 1221
附录B 技术支持、勘误表和p2p.wrox.com网站 1236
B.1 p2p.wrox.com网站的在线论坛 1236
B.2 在www.wrox.com网站在线检查勘误表 1237
B.3 如何确切地告诉我们您的想法 1239