译者序
前言
第1章 构建应用程序的正确方法
1.1 团队协作
1.2 阅读资料文档
1.2.1 指南的指南
1.2.2 阅读路线
1.3 避免黑盒综合症
1.3.1 数据库独立与数据库依赖
1.3.2 黑盒综合症的危害
1.4 是数据库而不是一堆数据
1.4.1 使用主键和外部键
1.4.2 测试参考完整性的开销
1.4.3 中间层检查不是万能药
1.5 建立测试环境
1.5.1 用有代表性的数据进行测试
1.5.2 不要用单个用户进行测试
1.5.3 不要在无菌实验室中进行测试
1.6 设计出性能而不是调整出性能
1.6.1 不要使用通用数据模型
1.6.2 设计自己的高效数据模型
1.7 开始就定义性能目标
1.7.1 在清晰明确的标准下工作
1.7.2 随时收集并记录标准
1.7.3 别因为“所有人都知道你应该做”而做某件事情
1.8 测试.测试.再测试
1.8.1 小基准测试
1.8.2 大基准测试
1.9 仪表化系统
1.9.1 追踪asktom.oracle.com
1.9.2 远程调试仪表化
1.9.3 使用dbms_application_info
1.9.4 在pl/sql中使用debug.f
1.9.5 在应用系统中打开sql_trace
1.9.6 使用业内标准的api
1.9.7 建立自己的例程
1.9.8 审计不仅仅是个词
1.10 敢于怀疑权威
1.10.1 当心泛泛的“最好”
1.10.2 怀疑“法定”和“神话”
1.11 不要走捷径
1.12 保持简单
1.12.1 考虑备选方法
1.12.2 让数据库充分发挥自己的能力
1.13 使用已有的功能
1.13.1 我们听说x特性慢
1.13.2 我们听说x特性复杂
1.13.3 我们不想
1.13.4 我们以前不知道
1.13.5 我们希望数据库独立
1.14 本章小结
第2章 性能工具包
2.1 sql * plus
2.1.1 建立sql * plus
2.1.2 定制sql * plus环境
2.1.3 阅读文档
2.2 explain plan
2.2.1 设置explain plan
2.2.2 使用explain plan
2.2.3 如何阅读查询计划
2.2.4 避免explain plan陷阱
2.2.5 使用dbms_xplan和v$sql_plan
2.3 autotrace
2.3.1 建立autotrace
2.3.2 使用autotrace
2.3.3 格式化autotrace的输出
2.3.4 了解autotrace的输出
2.3.5 autotrace输出中感兴趣的内容
2.4 tkprof
2.4.1 启用tkprof
2.4.2 运行丁tkprof
2.4.3 读tkprof报告
2.4.4 各种群体对tkprof的使用
2.5 runstats
2.5.1 建立runstats
2.5.2 使用runstats
2.6 statspack
2.6.1 建立statspack
2.6.2 使用statspack
2.6.3 使用statspack易犯的错误
2.6.4 statspack概览
2.7 dbms_profiler
2.7.1 为什么要使用配置文件管理器
2.7.2 配置文件管理器的资源
2.8 jdeveloper(及调试)
2.9 本章小结
第3章 体系结构选择
3.1 了解共享服务器与专用服务器连接
3.1.1 专用服务器如何工作
3.1.2 共享服务器连接如何工作
3.1.3 关于共享服务器配置的常见错误观点
3.1.4 专用服务器与共享服务器小结
3.2 利用集群
3.2.1 rac如何工作
3.2.2 rac的优点
3.2.3 集群小结
3.3 了解何时使用分区
3.3.1 分区概念
3.3.2 神秘的分区
3.3.3 为什么使用分区
3.3.4 分区小结
3.4 知道何时使用并行操作
3.4.1 并行神话
3.4.2 并行管理
3.4.3 并行查询
3.4.4 并行dml
3.4.5 打造自己的并行
3.4.6 并行处理小结
3.5 本章小结
第4章 高效的管理
4.1 用spfile启动数据库
4.1.1 pfile的问题
4.1.2 spfile如何工作
4.1.3 让数据库使用spfile
4.1.4 保存系统参数的改动
4.1.5 pfile过时了吗
4.1.6 求助.我的spfile坏了.我不能启动了
4.1.7 spfile小结
4.2 让oracle来管理你的数据文件
4.2.1 何时使用omf
4.2.2 omf如何工作
4.2.3 omf小结
4.3 可靠的恢复
4.3.1 备份准则
4.3.2 备份和恢复小结
4.4 使用本地管理的表空间
4.4.1 为什么要废除dmt
4.4.2 在不知道对象会变得有多大时使用系统管理的lmt
4.4.3 在知道对象的最终尺寸时使用统一的区尺寸
4.4.4 关于lmt的某些忠告
4.4.5 lmt和dmt小结
4.5 让oracle管理你的段空间
4.5.1 理解可用列表和可用列表组
4.5.2 pctfree和pctused怎样控制可用列表
4.5.3 assm的案例
4.5.4 assm小结
4.6 让oracle管理回退段
4.6.1 设置undo retention
4.6.2 undo表空间忠告
4.6.3 undo表空间小结
4.7 本章小结..
第5章 语句处理
5.1 理解sql语句的类型
5.2 语句怎样执行
5.2.1 分析
5.2.2 优化和行资源生成
5.2.3 执行
5.2.4 语句执行小结
5.3 查询的处理过程
5.3.1 快速返回的查询
5.3.2 慢速返回的查询
5.3.3 一致性读取
5.4 dml语句的处理
5.5 ddl处理
5.6 使用绑定变量
5.6.1 绑定变量的优点
5.6.2 对java和vb使用绑定变量
5.6.3 每项规则都有例外
5.6.4 绑定变量窥视
5.7 尽可能少做分析
5.7.1 分析的成本
5.7.2 使用pl/sql减少分析
5.7.3 把sql移出触发器以减少分析
5.7.4 准备一次;执行多次
5.8 本章小结
第6章 从基于成本的优化程序获得最大输出
6.1 为什么停用rbo
6.2 使cbo发挥最大的作用
6.2.1 调整optimizer_index_caching和optimizer_index_cost_adj参数
6.2.2 使用system统计数据
6.3 优化cbo
6.3.1 为升级设置compatible
6.3.2 设置db_file_multiblock_read_count以减少全扫描的成本
6.3.3 设置hash_join_enabled控制散列连接
6.3.4 设置optimizer_dynamic_sampling动态收集统计数据
6.3.5 设置offimizer_features_enable控制特性选择
6.3.6 设置optimizer_max_permutations控制排列
6.3.7 设置optimizer_mode选择模式
6.3.8 用query_rewrite_enabled和query_rewrite_integrityt重写查询
6.3.9 用bitmap_merge_area_size、sort_area_size、hash_area_size控制pga内存
6.3.10 对星查询使用star_transformation_enabled
6.3.11 设置影响优化程序的其他几个参数
6.4 使用10 053事件跟踪cbo选择
6.5 本章小结
第7章 高效的模式设计
7.1 基本模式设计原则
7.1.1 让数据库实现数据完整性
7.1.2 使用正确的数据类型
7.1.3 对最经常提的问题进行优化
7.2 表类型概述
7.3 b*树索引集群表
7.3.1 创建群
7.3.2 使用群
7.3.3 群小结
7.4 索引组织表
7.4.1 用iot替代关联表以节省空间
7.4.2 利用iot集中放置随机插入的数据
7.4.3 iot小结
7.5 外部表
7.5.1 建立外部表
7.5.2 修改外部表
7.5.3 将外部表用于直接路径装载
7.5.4 将外部表用于并行直接路径装载
7.5.5 将外部表用于合并
7.5.6 处理外部表的错误
7.6 索引技术
7.6.1 使用fbi——打破常规
7.6.2 使用域索引
7.7 压缩
7.7.1 使用索引键压缩
7.7.2 对于只读或主要是读的表进行压缩
7.7.3 压缩小结
7.8 本章小结
第8章 高效的sql
8.1 编写高效sql所需的知识
8.2 访问路径
8.2.1 全扫描
8.2.2 rowid访问
8.2.3 索引扫描
8.2.4 群扫描
8.3 连接概念
8.3.1 嵌套循环
8.3.2 散列连接
8.3.3 排序合并连接
8.3.4 笛卡儿连接
8.3.5 反连接
8.3.6 全外部连接
8.4 模式问题(物理的)
8.5 真正理解sql
8.5.1 rownum伪列
8.5.2 标量子查询
8.5.3 分析函数
8.6 不调整查询
8.6.1 理解问题
8.6.2 概念验证的例子
8.7 其他sql技术概览
8.8 本章小结
第9章 高效的pl/sql程序设计
9.1 为什么要使用pl/sql
9.1.1 pl/sql是数据操纵的最高效语言
9.1.2 pl/sql。具有可移植性和可重用性
9.2 尽可能少地编写代码
9.2.1 不用程序实现
9.2.2 让代码行数适合于屏幕显示
9.3 使用程序包
9.3.1 程序包的优点
9.3.2 断开依赖链
9.3.3 程序包小结
9.4 使用静态sql
9.4.1 静态sql的优点
9.4.2 寻找替换动态sql的机会
9.4.3 静态sql小结
9.5 批量处理
9.5.1 使用批量处理效果很好时再使用它
9.5.2 对etl操作使用bulk处理
9.5.3 批量处理小结
9.6 返回数据
9.6.1 ref游标的优点
9.6.2 使用ref游标返回结果集
9.7 使用%type和%rowtype
9.7.1 基于表的记录类型
9.7.2 基于游标的记录类型
9.7.3 基于列的数据类型
9.8 使用调用者的权限
9.8.1 调用者权限和多模式
9.8.2 调用者权限的条件
9.9 使查找高效地工作
9.9.1 查找的单行取
9.9.2 查找的批量处理
9.9.3 查找的单语句操作
9.9.4 查找小结
9.10 当心独立事务处理
9.10.1 独立事务处理的条件
9.10.2 独立事务处理会影响数据完整性
9.11 选择使用隐式游标还是显式游标
9.11.1 将隐式游标用于单行选择
9.11.2 对有限行数的结果集使用隐式游标
9.11.3 隐式/显式游标小结
9.12 本章小结
第10章 故障排除
10.1 找出差异
10.1.1 开始收集今天的历史记录
10.1.2 侦探性工作
10.2 一次只更改一样东西
10.3 更改一样东西要有充分理由
10.3.1 有目标
10.3.2 验证你的假设
10.4 能够恢复到更改前的状态
10.5 建立测试用例
10.5.1 测试用例需求
10.5.2 使测试用例尽可能小
10.6 本章小结
附录 设置和一些脚本
· · · · · · (
收起)