本书特色
汇聚Oracle专家集体智慧
内容贴近实战,讲解透彻精彩
DBA修炼内力必读秘籍
“本书作者阵容强大,内容全面实用,期待更多这种形式的技术书。”——亚马逊读者评论
本书由15位知名技术专家联手打造,每位作者分别用一章的篇幅介绍他们最擅长的PL/SQL相关主题,涵盖了PL/SQL开发的方方面面。本书作者要么是Oracle社区中坚分子,要么是大名鼎鼎的OakTable成员,而且经常活跃在Oracle技术培训第一线,对PL/SQL均有着深入透彻的理解,对解释复杂问题有着简单独到的方法。一册在手,众多PL/SQL牛人的真知灼见尽收眼底,你还等什么?
本书着重介绍了PL/SQL最新、最实用的特性,从什么该做和什么不该做、怎么做对,以及怎么做更有效率、效果更好等三个部分全面阐释了PL/SQL相关的各个主题。而且,每一章都配有非常贴切的示例代码、跟踪图以及输出结果,辅以深入浅出的讲解,令人在恍然大悟之后不禁拍案叫绝。各章内容均涵盖了PL/SQL实际开发中的最佳实践,反映了作者多年积累的经验和教训,其价值非同一般。
本书适合具有一定PL/SQL经验的读者学习参考。
本书主要内容如下:
掌握使用以及避免使用PL/SQL的最佳时机;
使用批量SQL操作高效地加载数据;
使用管道指令、并行操作和代码剖析,提高代码的扩展性;
为应用选择正确的PL/SQL游标类型;
借助单元测试等有效的开发实践,减少编码错误;
在运行时动态创建和执行SQL以及PL/SQL。
目录
第1章 避免误用
1.1 逐行处理
1.2 嵌套的逐行处理
1.3 查找式查询
1.4 对DUAL的过度访问
1.4.1 日期的算术运算
1.4.2 访问序列
1.4.3 填充主—从行
1.5 过多的函数调用
1.5.1 不必要的函数调用
1.5.2 代价高昂的函数调用
1.6 数据库链接调用
1.7 过度使用触发器
1.8 过度提交
1.9 过度解析
1.10 小结
第2章 动态SQL:处理未知
2.1 动态SQL的三种方式
2.1.1 本地动态SQL
2.1.2 动态游标
2.1.3 DBMS_SQL
2.2 动态思考的样例
2.3 安全问题
2.4 性能和资源利用率
2.4.1 反模式
2.4.2 比较动态SQL的实现
2.5 对象的依赖关系
2.5.1 负面影响
2.5.2 正面影响
2.6 小结
第3章 PL/SQL和并行处理
3.1 为什么需要并行处理
3.2 影响并行处理的定律
3.3 大数据的崛起
3.4 并行与分布式处理
3.5 并行硬件体系结构
3.6 确定目标
3.6.1 加速
3.6.2 按比例扩展
3.6.3 并行度
3.7 用于并行处理的候选工作负载
3.7.1 并行和OLTP
3.7.2 并行和非OLTP工作负载
3.8 MapReduce编程模型
3.9 在使用PL/SQL之前
3.10 可用于并行活动的进程
3.11 使用MapReduce的并行执行服务器
3.11.1 管道表函数
3.11.2 指导
3.11.3 并行管道表函数小结
3.12 小结
第4章 警告和条件编译
4.1 PL/SQL 警告
4.1.1 基础
4.1.2 使用警告
4.1.3 升级警告为错误
4.1.4 忽略警告
4.1.5 编译和警告
4.1.6 关于警告的结束语
4.2 条件编译
4.2.1 基础
4.2.2 正在运行代码的哪部分
4.2.3 预处理代码的好处
4.2.4 有效性验证
4.2.5 控制编译
4.2.6 查询变量
4.2.7 关于条件编译的结束语
4.3 小结
第5章 PL/SQL单元测试
5.1 为什么要测试代码
5.2 什么是单元测试
5.2.1 调试还是测试
5.2.2 建立测试的时机
5.3 单元测试构建工具
5.3.1 utPLSQL:使用命令行代码
5.3.2 Quest Code Tester for Oracle
5.3.3 Oracle SQL Developer
5.4 准备和维护单元测试环境
5.4.1 创建单元测试资料档案库
5.4.2 维护单元测试资料档案库
5.4.3 导入测试
5.5 构建单元测试
5.5.1 使用单元测试向导
5.5.2 创建第一个测试实施
5.5.3 添加启动和拆除进程
5.5.4 收集代码覆盖率统计信息
5.5.5 指定参数
5.5.6 添加进程验证
5.5.7 保存测试
5.5.8 调试和运行测试
5.6 扩大测试的范围
5.6.1 创建查找值
5.6.2 植入测试实施
5.6.3 创建动态查询
5.7 支持单元测试功能
5.7.1 运行报告
5.7.2 创建组件库
5.7.3 导出、导入和同步测试
5.7.4 构建套件
5.8 从命令行运行测试
5.9 小结
第6章 批量SQL操作
6.1 五金商店
6.2 设置本章的例子
6.3 在PL/SQL中执行批量操作
6.3.1 批量获取入门
6.3.2 三种集合风格的数据类型
6.3.3 为什么要自找麻烦
6.3.4 监控批量收集的开销
6.3.5 重构代码以使用批量收集
6.4 批量绑定
6.4.1 批量绑定入门
6.4.2 度量批量绑定性能
6.4.3 监视内存的使用
6.4.4 11g中的改进
6.5 批量绑定的错误处理
6.5.1 SAVE EXCEPTIONS和分批操作
6.5.2 LOG ERRORS子句
6.5.3 健壮的批量绑定
6.7 真正的好处:客户端批量处理
6.8 小结
第7章 透识你的代码
7.1 本章内容取舍
7.2 自动代码分析
7.2.1 静态分析
7.2.2 动态分析
7.3 执行分析的时机
7.4 执行静态分析
7.4.1 数据字典
7.4.2 PL/Scope
7.5 执行动态分析
7.5.1 DBMSPROFILER和DBMSTRACE
7.5.2 DBMS_HPROF
7.6 小结
第8章 合同导向编程
8.1 契约式设计
8.1.1 软件合同
8.1.2 基本合同要素
8.1.3 断言
8.1.4 参考文献
8.2 实现PL/SQL合同
8.2.1 基本的ASSERT程序
8.2.2 标准的包本地断言
8.2.3 使用ASSERT执行合同
8.2.4 其他改进
8.2.5 合同导向函数原型
8.3 示例:测试奇数和偶数
8.4 有用的合同模式
8.4.1 用NOT NULL输入且输出NOT NULL
8.4.2 函数返回NOT NULL
8.4.3 布尔型函数返回NOT NULL
8.4.4 检查函数:返回TRUE或ASSERTFAIL
8.5 无错代码的原则
8.5.1 严格地断言先决条件
8.5.2 一丝不苟地模块化
8.5.3 采用基于函数的接口
8.5.4 在ASSERTFAIL处崩溃
8.5.5 对后置条件进行回归测试
8.5.6 避免在正确性和性能之间取舍
8.5.7 采用Oracle 11g优化编译
8.6 小结
第9章 从SQL调用PL/SQL
9.1 在SQL中使用PL/SQL函数的开销
9.1.1 上下文切换
9.1.2 执行
9.1.3 欠理想的数据访问
9.1.4 优化器的难点
9.1.5 读一致性陷阱
9.1.6 其他问题
9.2 降低PL/SQL函数的开销
9.2.1 大局观
9.2.2 使用SQL的替代品
9.2.3 减少执行
9.2.4 协助CBO
9.2.5 调优PL/SQL
9.3 小结
第10章 选择正确的游标
10.1 显式游标
10.1.1 解剖显式游标
10.1.2 显式游标和批量处理
10.1.3 REF游标简介
10.2 隐式游标
10.2.1 解剖隐式游标
10.2.2 隐式游标和额外获取的理论
10.3 静态REF游标
10.3.1 详细的游标变量限制清单
10.3.2 客户端和REF游标
10.3.3 有关解析的话题
10.4 动态REF游标
10.4.1 例子和最佳用法
10.4.2 SQL注入的威胁
10.4.3 描述REF游标中的列
10.5 小结
第11章 大规模PL/SQL编程
11.1 将数据库作为基于PL/SQL的应用服务器
11.1.1 案例研究:Avaloq银行系统
11.1.2 在数据库中使用PL/SQL实现业务逻辑的优势
11.1.3 用数据库作为基于PL/SQL的应用程序服务器的限制
11.1.4 软因素
11.2 大规模编程的要求
11.3 通过规范实现一致性
11.3.1 缩写词
11.3.2 PL/SQL标识符的前缀和后缀
11.4 代码和数据的模块化
11.4.1 包和相关的表作为模块
11.4.2 含有多个包或子模块的模块
11.4.3 模式作为模块
11.4.4 在模式内部模块化
11.4.5 用模式模块化与在模式内模块化的比较
11.5 使用PL/SQL面向对象编程
11.5.1 使用用户定义类型的面向对象编程
11.5.2 使用PL/SQL记录面向对象编程
11.5.3 评估
11.6 内存管理
11.6.1 测量内存使用
11.6.2 集合
11.7 小结
第12章 渐进式数据建模
12.1 从二十年的系统开发中总结的经验
12.2 数据库和敏捷开发
12.3 渐进式数据建模
12.4 重构数据库
12.5 通过PL/SQL创建访问层
12.6 敏捷宣言
12.7 用PL/SQL进行渐进式数据建模
12.7.1 定义接口
12.7.2 思考可扩展性
12.7.3 测试驱动开发
12.7.4 明智地使用模式和用户
12.8 小结
第13章 性能剖析
13.1 何谓性能
13.1.1 功能需求
13.1.2 响应时间
13.1.3 吞吐量
13.1.4 资源利用率
13.1.5 性能是功能的一种
13.2 什么是剖析
13.2.1 顺序图
13.2.2 概要文件之神奇
13.2.3 性能剖析的好处
13.3 性能测量
13.3.1 这个程序为什么慢
13.3.2 测量嵌入
13.3.3 识别
13.3.4 条件编译
13.3.5 内建的剖析器
13.3.6 扩展的SQL跟踪数据(事件10046)
13.3.7 针对Oracle的测量工具库(ILO)
13.4 问题诊断
13.4.1 R方法
13.4.2 ILO示例
13.4.3 剖析示例
13.5 小结
第14章 编码规范和错误处理
14.1 为什么要制订编码规范
14.2 格式化
14.2.1 大小写
14.2.2 注释
14.2.3 比较
14.2.4 缩进
14.3 动态代码
14.4 包
14.5 存储过程
14.5.1 命名
14.5.2 参数
14.5.3 调用
14.5.4 局部变量
14.5.5 常量
14.5.6 类型
14.5.7 全局变量
14.5.8 本地存储过程和函数
14.5.9 存储过程元数据
14.6 函数
14.7 错误处理
14.7.1 错误捕获
14.7.2 错误报告
14.7.3 错误恢复
14.7.4 先测试再显示
14.8 小结
第15章 依赖关系和失效
15.1 依赖链
15.2 缩短依赖链
15.3 数据类型引用
15.4 用于表修改的视图
15.5 把组件添加到包
15.6 依赖链中的同义词
15.7 资源锁定
15.8 用触发器强制执行依赖
15.9 创建最初禁用的触发器
15.10 小结
作者介绍
译者简介
卢涛
1995年参加工作,高级程序员、系统分析师、高级工程师。2004年起接触Oracle数据库,获得Oracle数据库管理9i至11g、PL/SQL开发、性能优化、RAC管理、数据仓库等多个OCP、OCE、OCS认证。ITPUB社区Oracle开发版版主,《剑破冰山——Oracle开发艺术》一书合著者。做过需求分析、系统分析、架构设计、数据库和应用程序性能优化等工作。参与数次全国性普查数据处理系统的设计、开发和运维。
审校人简介
苏旭晖
在IT行业摸爬滚打20多年,1997年至今一直致力于Oracle开发,擅长用SQL、PL/SQL。ITPUB社区Oracle开发版版主,以及《剑破冰山——Oracle开发艺术》一书合著者。现居加拿大多伦多,从事数据库应用系统的设计与开发工作。出国前任职于厦门巨龙软件公司。多年来致力于金融、公安、医疗、社保等行业软件的研发。
李颖
2006年毕业于渤海大学英语系,主修英语教育专业。英语爱好者
贾书民
河北省统计局数据管理中心调研员,高级程序员、高级工程师。有多年Unix系统管理、数据库系统管理与设计、数据处理软件开发经验。1993年起开始使用Oracle开发了《河北省综合数据库系统》等多个大型应用系统。参与过《第五次全国人口普查数据处理系统》等多个国家级项目的设计和开发。擅长使用SQL、PL/SQL进行高效数据分析处理。所开发项目获第四届全国统计科学技术进步一等奖。此外,他还参与编写《剑破冰山——Oracle开发艺术》一书。
相关文章
1推荐
I worked for Lockheed right after college. In my first year, I was part of a team assigned to evaluate Manufacturing Resources Planning (MR…...
lt
发表于 2012-03-03
3推荐
图灵社区按:
TEAP是什么?TEAP是Turingbook Early Access Program的简称,即早期试读,它公布的是图灵在途新书未经编辑的内容。一本书的翻译周期约为3到6个月,如果在翻译过程中,译者就能与读者进行沟通和交流,对整本书的翻译品质是有帮助的。通过T…...
lt
发表于 2012-03-14
3推荐
图灵社区按:
TEAP是什么?TEAP是Turingbook Early Access Program的简称,即早期试读,它公布的是图灵在途新书未经编辑的内容。一本书的翻译周期约为3到6个月,如果在翻译过程中,译者就能与读者进行沟通和交流,对整本书的翻译品质是有帮助的。通过T…...
lt
发表于 2012-03-16
推荐
图灵社区按:
TEAP是什么?TEAP是Turingbook Early Access Program的简称,即早期试读,它公布的是图灵在途新书未经编辑的内容。一本书的翻译周期约为3到6个月,如果在翻译过程中,译者就能与读者进行沟通和交流,对整本书的翻译品质是有帮助的。通过T…...
lt
发表于 2012-03-19
5推荐
图灵社区按:
TEAP是什么?TEAP是Turingbook Early Access Program的简称,即早期试读,它公布的是图灵在途新书未经编辑的内容。一本书的翻译周期约为3到6个月,如果在翻译过程中,译者就能与读者进行沟通和交流,对整本书的翻译品质是有帮助的。通过T…...
lt
发表于 2012-03-22
8推荐
1.现在很多外版书越来越多采用彩色或双色印刷,书中描述也经常提及颜色(如:《算法》第4版的红黑树),如果能印成彩色或双色的,就不用费心去改图,改描述了,也不必增加彩页。更大的好处是,读者得到了和原版书一样的体验。
2.代码部分,如果有文字版,建议用文字版,这样如果译者挑出了错…...
lt
发表于 2012-08-21
8推荐
刚拿到这本书的时候,真有点不敢相信,一本书竟然有15位作者。这是多么强大的作者阵容啊!先看看作者都什么来头。Lewis Cunningham,在IT领域已经工作了20多年。自1993年以来一直与Oracle数据库打交道。他的专长是应用程序设计、数据库设计,以及大容量的VLDB数…...
薄荷糖
发表于 2012-09-26
16推荐
其实只能算诀窍或技巧,故意用个大名字吸引注意力。
还要说明,本文只适用英文原版技术书的译文。考虑到图灵的大部分书属于此类,因此不在标题中写出。
我曾经是一名程序员,程序讲究严谨,因此对书的文字也把它当程序看了。
1.常识
必须对欲勘误的书的知识领域有些了解,比如《影响物…...
lt
发表于 2012-10-10
推荐
运行在Oracle 11.2,按照回退半条路也不行的规则
------------------
| 1 || 3 |
| || |
--- --------
0 56
--- …
...
lt
发表于 2012-11-10
1推荐
文档格式确实有了质的提高,文档结构图层次分明,采用的字体也更美观,
虽然代码用了图片,但打印效果和文字基本相同。
有些不适的是:
专门对原文一些地方的错误作的注解,被忽略了。
一些词语特别是术语被修改了,有些单词有多种中文译法,专门为了与另一个英文单词区分而保留的,现在…...
lt
发表于 2012-09-01
明日提交第一批译文
lt 发表于 2012-01-04 20:58:33
听说快译完了。
武卫东 发表于 2012-03-13 05:17:10
还早呢5月31日完成
lt 发表于 2012-03-13 12:15:19
听说下周差不多能编辑完了
lt 发表于 2012-07-27 16:13:34
收到排版稿了,美观了,但是还要校对
lt 发表于 2012-08-31 15:49:41
此书有出版了吗?在哪可以买到?
Winhanverky 发表于 2012-10-21 16:45:11
当当上已经有预售了
lt 发表于 2012-10-28 19:46:35
china-pub.com也预售
lt 发表于 2012-11-02 13:57:33
今天在OTN嘉年华听紫风说amazon也有售了
lt 发表于 2012-11-09 18:27:31
已经交稿了
lt 发表于 2012-06-05 13:10:53
听说已经进入编辑期了
lt 发表于 2012-06-27 16:38:31