基本信息
【插图】

编辑推荐
TPUB开发版几位资深版主联手之作
覆盖Oracle开发必备的重要知识点,还有大量案例
阅读的过程彷佛就是在与高手一起解决问题
带您破开冰山深入了解Oracle。
内容简介
计算机书籍
《剑破冰山:Oracle开发艺术》内容简介:Oracle数据库是目前市场占有率最高的商业数据库,功能非常强大,随着Oracle管理工具的智能化,如Oracle EM提供了强大的管理和调优功能,Oracle DBA的管理工作逐渐趋于简单化。正因为如此,当前国内Oracle开发人员的岗位需求大幅度增加,投身Oracle开发的人数也日益增多。
一个好的0racIe开发人员不仅要知道一些基本语法和常见用法,还需要知道何时用、如何用、怎么避免相关误区、写出高质量的代码。《剑破冰山:Oracle开发艺术》面向有0racle使用经验或有其他数据库使用经验的人,重点讲述利用好Oracle的特色功能进行高效开发的思路和技巧,帮助读者快速掌握中高级Oracle开发技术。
《剑破冰山:Oracle开发艺术》主要覆盖0racle开发必备的重要知识点:数据库编程规范、Oracle开发常用工具及使用、MERGE方法、神秘的NULL和讨厌的CHAR、扩展GROUPBY、Oracle自动类型转换、Oracle分析函数、Oracle层次查询、llgR2新特性之递归WITH编程、动态SQL扩展。此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免重复启动同一程序、不可能的任务?超越Oracle等。
《剑破冰山:Oracle开发艺术》作者均有多年Oracle开发管理实战经验,他们期望以自己的经验和教训,分享分析和解决问题的方法,探讨如何用相关的技术去解决特定的需求。希望读者在看完《剑破冰山:Oracle开发艺术》后,能受到良好的启迪,进而能极大地提升自己在Oracl数据库开发方面的能力!
作译者
卢涛,ITPUB Oracle开发版版主,15年IT工作经,2004年任高级工程师,在某数据管理中心任职系统分析师;曾参与数次全国数据处理系统的设计与实现。在软件开发、数据库开发和优化、系统架构、项目管理方面有一定研究。
王保强,ITPUB数据仓库和MS SQL Setver版版主,曾获1TPUB最佳博客和ITPUB数据库大版最佳版主。11年IT工作经验,曾在多家国内外IT知名企业任职,在数据库开发和优化、数据仓库、系统架构、项目管理、Web20方面有一定研究。
怀晓明,ITPUB 0racIe开发版等版块版主,获得第一届ITPUB最佳建议奖。在多个大型IT企业多年的工作历练中,积累了大量的系统架构设计经验,擅长数据库和Web的设计、开发,精于故障诊断与处理,具有丰富的省部级电子政务行业工作经验及项目管理经验。
贾书民,1988年毕业于中国人民大学信息系,1991年获得高级程序员资格,1998年任高级IT程师。多年来,从事UNIX系统管理、数据库系统管理与设计、统计数据处理软件开发等工作,主持了河北省多项大型普查的数据处理工作,曾参加了多个国家级项目的设计和开发。
目录
1.1 编程规范概述
1.2 书写规范
1.2.1 大小写风格
1.2.2 缩进风格
1.2.3 空格及换行
1.2.4 其他
1.3 命名规范
1.3.1 表和字段命名规范
1.3.2 其他对象命名
1.4 变量命名
1.5 注释规范
1.6 语法规范
1.7 脚本规范
规则1.7.1
规则1.7.2
规则1.7.3
第2章 Oracle开发常用工具及使用
2.1 AWR工具与性能优化
2.1.1 AWR介绍
前言
本书是一本通过讲解Oracle数据库开发案例来说明Oracle数据库的功能特性、编程思路和设计方法的书籍。通过对每个案例的详细分析和讲解,使读者了解对同一类开发任务应如何做并能够领会为什么这么做,达到融会贯通的目的。
本书主要面向中、高级用户,所以读者最好具有一定的Oracle数据库使用基础和程序设计基础(如熟悉基本SQL语句和任何一种过程语言),最好有一定的程序设计经验。但初级用户也能从中学到很多有用的东西,包括设计思想和技巧等。通过对本书的学习,相信读者的Oracle开发水平会上一个新的台阶。
本书的案例内容涉及面比较广泛,包括编程规范、表结构设计、表压缩、分析函数及高级查询,从常规数据处理的设计到各类行列转换技巧,从Oracle的各种实用工具的用法到问题诊断、优化等步骤都进行了讲解。另外,还针对Oracle某些容易出错的陷阱进行了介绍,并提出了相应的解决办法,对某些操作提出了提高效率的措施并进行了验证。
在众多内容中,本书也有所侧重,力求将作者理解最深入的部分介绍给读者,例如,动态SQL、PL/SQL的使用、影响执行计划的因素、减少日志生成及并行技术等。选择这些作为侧重点的原因有4个方面:第一,目前市面上类似书籍对这些方面的内容涉及不多,而且不够深入;第二,这些内容在通常的程序设计中使用非常频繁;第三,这些内容能使读者更加了解Oracle系统的工作机制;第四,消除很多读者的认识误区,例如,认为Oracle数据库的SQL只是在数据查询方面很强大,并因此将SQL仅仅定位在查询语言上。事实上,通过阅读本书,读者将会发现 Oracle的SQL功能是非常强大的。在开发中,很多过去必须依靠过程语言实现的功能,比如循环、行间运算,通过分析函数、递归子查询等,SQL基本上都能实现。而且,利用SQL能使开发工作事半功倍,极大地提高开发效率。
本书精选了10多个有独特的设计思想和编写技巧的案例来进行分析讲解。出版社网站提供包含所有案例的源程序下载,读者可复制这些代码到自己的系统中,随时查看程序的运行结果,以加深对代码的理解。
我们7位Oracle技术专家来自北京、加拿大多伦多、上海、福建、海南、河北等地,在电信、制造、统计、航空、金融、证券等行业工作多年,工作领域包括项目管理、系统架构、数据库、数据仓库和数据挖掘等。
关于本书
苏旭晖(newkid)是一名定居境外的资深程序员,也是ITPUB上最为活跃的热心网友之一,非常关注国内Oracle数据库领域,在百忙之中还为我们送来了大礼:第18章“11g R2 新特性之递归with编程精粹”,让读者有机会使用Oracle提供的最新技术开发项目。他认真审核了我们每个人的文章,指出了很多错误和不完善的地方,为本书的完成发挥了重要的作用。
王保强(bq_wang)编著了第1章、第10章、第11章和第20章。丁俊(dingjun123)编著了第4章、第5章、第6章和第7章。梁敬彬(wabjtam123)编著了第2章、第3章、第13章、第14章、第15章、第16章和第17章。怀晓明(lastwinner)编著了第12章。贾书民编著了第9章。卢涛(〇〇)编著了第8章、第19章,并对第2章、第9章的部分内容作了补充。
各章的主要内容如下:
第1章 “大话数据库编程规范”通过风趣的语言讲解了Oracle开发过程中的书写规范、命名规范、变量命名、注释规范、语法规范、脚本规范的一些规则和建议。
第2章 “Oracle开发常用工具及使用”的“AWR工具与性能优化”一节描述了AWR的基本功能和使用步骤,并通过几个经典案例的演示让读者加深印象,同时证实该工具的强大。“SQL_TRACE/10046事件”一节描述了如何通过该工具了解SQL的解析过程、执行计划、绑定变量、递归调用等详细信息。最后通过系列10046事件跟踪的成功案例来阐述该如何一步步打开各扇SQL困惑大门。“计时和剖析工具”一节主要介绍了利用DBMS_PROFILER包分析PL/SQL代码的方法和步骤,并根据剖析结果对代码进行精细的调整。
第3章 “探索MERGE方法”介绍了MERGE存在的原因、具备的特性及哪些是注意点,通过实例讲述了MERGE用于复杂更新时的优势所在,希望读者能记住这些经典的方法,给自己的项目开发带来便利。
第4章 “神秘的NULL和令人讨厌的CHAR”,第一部分通过大量的实例分析NULL的理论和使用,使读者对NULL一目了然,从而更好地使用NULL。第二部分通过对CHAR类型多角度的分析,讲述特殊的字符类型CHAR的使用和注意点。这两个知识点是Oracle开发中很重要的知识点,也是出问题较多的知识点,希望通过本章的学习,读者能够对这两个知识点熟练掌握。
第5章 “报表开发之扩展GROUP BY”,这属于高级SQL方面的知识,在报表开发中是很常见的,本章通过对扩展GROUP BY各个知识点的讲解,并通过实例分析,讲述如何高效地实现数据的多维分析统计,从而为决策者提供强大的报表支持。
第6章 “探索Oracle自动类型转换”,这是Oracle开发中很重要的知识点,往往也是Oracle开发人员容易忽视或不完全知晓的知识点,本章通过对各种规则及实例的讲述,使读者对隐式类型转换有更深刻的认识,从而有助于检查错误和开发高效的程序。
第7章 “Where in list问题解析”,通过对一个常见应用的探讨,分析如何通过多种方法解决问题,重点讲解如何对问题进行多角度分析,从提出问题到解决问题的过程,希望读者能够从这个实例中领会到一般复杂问题的分析和解决过程。
第8章 “例说数据库表设计和大量数据处理方法”通过各种不同实现的比较讲述了一些表设计应遵循的规则,并分析了开发数据加载和卸载、数据汇总应用时可供采用的各种方法的特点。本章侧重利用数据库本身提供的SQL功能完成数据加工,而第19章侧重使用过程语言开发。两章的例子有部分重叠,读者可鉴别阅读。
第9章 “数据审核”讲述了在Oracle中对表中数据进行高效列间审核和行间审核的各种方法,包括静态SQL、PL/SQL、动态SQL的使用方法和技巧。
序言
我和本书的作者们大多在ITPUB上相识了很长时间,他们都是具有丰富行业经验的专家,也非常热心。苏旭晖(newkid)和卢涛(〇〇)Oracle是开发方面的行家,记得当初我在社区里推崇Joe Celko的《SQL puzzles and Answers》一书,结果newkid很快指出这本书里的例子的很多错误或者愚笨之处,还专门给出一个帖子来指出书中的错误,让人叹服。他对技术精益求精,非常关心国内的开发社团,解决了许多网友提出的疑难的实际问题,还经常订购国内原创的技术书籍。有一次newkid君在论坛上出了一道用SQL去求解四皇后问题的题,不久〇〇就给出了答案,我才第一次知道SQL除了可以用来查询数据外,还可以有这样的用途。王保强(bq_wang)、怀晓明(lastwinner)是ITPUB中的元老级会员,bq_wang在项目管理、数据库、数据仓库、系统架构应用上很有经验,在过去几年中一直担任大型开发项目的manager,而lastwinner在应用测试和编码上的能力让人印象深刻,他是那种天生对问题有灵敏嗅觉的人,解决问题的能力非常强,并带队完成了几个大型开发项目。丁俊(dingjun123)在电信领域有多年系统架构设计和管理经验,对Oracle数据库开发很有研究,梁敬彬(wabjtam123)对数据库管理、设计、开发均有较为深入的研究,同时有着多年的电信行业相关经验和丰富的培训经验,二人在社区中积极热心帮助别人解决疑难问题,并总结了很多精华内容,得到社区大众的认可。贾书民则早在20年前就开始使用Oracle数据库,参加了多个国家级项目的设计和开发,技术功底与行业经验相当丰厚。由这么多高手呕心沥血写出来的经验之作,我相信一定能让读者读后有所裨益。
最后我要说从2004年ITPUB第一本技术图书面世以来,6年过去了,丛书也出版到第10本。2001年9月ITPUB刚刚建立的时候,会员只有一万多人,经过9年的发展,ITPUB已拥有技术板块100多个,注册会员数量超过240万,每天更新的讨论帖数以万计。感谢苏旭晖、卢涛、王保强、怀晓明、梁敬彬、丁俊、贾书民在ITPUB即将步入第10个年头的时候,创作了这本重量级的技术图书。ITPUB的发展与这样的专家、第一线技术工作者的长期支持是分不开的,真挚感谢你们对ITPUB的支持!
——ITPUB 创始人 tigerfish
这是一本我期待已久的书,ITPUB论坛已经出版了一系列的数据库管理书籍,但是开发书籍还是第一本,我一直关注着开发板块关于SQL方面的技术讨论,其涉及技术内容的往往极其精深、有趣、广泛,将技术玩得有趣是一门艺术,这本书在我看来就是一本关于开发和SQL的艺术之书。
——盖国强(eygle) Oracle ACE Director,恩墨科技创始人,ITPUB论坛超级版主
开发,总被很多人当做是一个简单的事情,其实,若干年前我也是这么认为的,但这么多年与各种应用软件打交道,发现原来我们所需要诊断、调整、处理的大部分问题,其实,基本上都源于开发,开发看来并不是我们想象中那么浅显,就像书中所说,我们所用的,其实仅仅是浮在水面上的冰山一角,如果真的认为开发如此简单,迟早会如泰坦尼克号一般撞得头破血流,而如果早些挖掘出开发深藏的矿脉,就会找到传说中的开发宝典,而这本书,应该是我们开始寻宝之旅的钥匙了。
——李轶楠(ora-600) Oracle ACE,ITPUB Oracle入门与认证版资深版主
如果有人问我学习Oracle的经验,我会告诉他先去看Oracle的官方文档,但是如果是学习Oracle开发方面的知识,那么我会建议他找本好书去读。一本好的开发方面的书籍会包括大量生动的例子和实用的案例,这是枯燥和晦涩的官方文档所不能比拟的。
可惜国内数据库开发方面的书籍很少,精品更是凤毛麟角。幸运的是,ITPUB上几位资深的版主联手带来了这本《剑破冰山——Oracle开发艺术》,书中涵盖了开发各个方面的内容;介绍了开发易犯的错误;展示了如何合理利用现有功能来巧妙地解决复杂问题。更难得的是书中很多例子都是真实的案例,阅读的过程彷佛就是在与高手一起解决问题的过程,自然受益匪浅。
——杨廷琨(yangtingkun) Oralce ACE,海虹医药电子商务有限公司首席DBA,
ITPUB Oracle数据库管理版资深版主
尽管与本书的诸位作者大多从未见过面,但几乎每天都能在Oracle开发版见到他们的身影,最深的印象就是他们对Oracle开发的沉迷,从对每个问题的认真回复、深入讨论,到在问题不多时甚至组织一些趣味开发比赛的活动,不难看出他们在Oracle开发方面沉浸多年,功力非凡。虚拟平台里交流的点点滴滴已经让诸多朋友受益匪浅,这次能够联袂出书,更是广大网友早就期待的事。
有幸在本书出版之前先睹为快,看到部分精彩章节,本书有别于目前市面上能够买到的Oracle开发类的书籍,该书并未着眼于普通开发的SQL语法、数据结构等方面,而是从作者多年来对Oracle开发技术的研究及实际开发工作经验中,选取了一些具有较强代表性的案例,比如where IN LIST、号段选取应用等这些大家在开发中都会遇到的开发需求来进行详细分解。对于IN LIST问题我们也曾详细考虑过多种处理方案,最终因数据库兼容问题选择了临时表替代方案,此案例中的cardinality HINT与Oracle版本的问题也曾困扰过我。号段选取应用实际上对应于我们应用中的断号管理,也是ERP系统中单据号管理的一个常用需求,尽管由于数据库兼容考虑我们没有使用分析函数,但本书中对分析函数的使用及处理也能为其他解决方案提供有益的参考。看似每个案例处理了一个问题,实际包含了诸多的知识点、设计思想和技巧,作者通过对这些案例的详细分析与读者分享了自己的心得、体会与技能技巧,相信每一位从事数据库开发的读者都能从中找到自己想要的信息。希望早日看到全书。
——李奎阳(anlinew) 用友资深数据库专家、产品性能主设计师,
ITPUB Oracle专题深入讨论版资深版主
你很幸运拿到这本书,从本书你可以学到几位作者的数据库开发经验、开发技巧及数据库编程思想。几位作者均是ITPUB开发版资深版主,我深知他们的开发功底相当雄厚,几位作者聚在一起将自己多年工作中积累总结的精髓分享给大家,这是件值得我们欣喜的事儿。此书包括数据库开发规范、开发方法,以及数据库开发设计和数据库优化等精彩内容。作者们以通俗易懂、幽默风趣的语言将自己多年的工作经验展示给我们。除开发知识外,作者们还详细讲解了 AWR、SQL Trace、10046等Oracle数据库优化工具。相信作者,相信此书,能给Oracle数据库开发者很好的帮助。不要犹豫了!拿起这本书,按照书中所分享的去实践吧,相信聪明的你一定会有所收获的!
——杨向勇(yxyup) 51JOB系统经理兼首席DBA,ITPUB Oracle数据库管理版资深版主