剑破冰山—Oracle开发艺术 前言

简介:

前言

 

长久以来,Oracle管理类的书籍遍地开花,并涌现出了一批优秀的实战作品,但在Oracle开发方面,却多数都是基础性的语法书籍,很少有较为深入的实战性的作品问世。久而久之,大多数人认为Oracle开发就是selectinsert之类的DML语句最多再有点集合操作外加触发器、函数之类的存储过程,但这就好像冰山一样,粗略的一看,只是看到冰山露出水面的尖角而已。而我们知道,冰山在水面下的部分,远比其水面上的部分要巨大得多。要想探究水面下的冰山,其中之一的方法就是分而治之深入研究,跟随七位有多年丰富Oracle开发经验的作者的指引,欣赏他们各自的拿手好戏,学习他们的思路与方法,破开冰山深入其中,从而提升自己的Oracle开发水平。

 

本书是一本通过讲解Oracle数据库开发案例来说明Oracle数据库功能特性以及编程思路和设计方法的书籍。通过对每个案例的详细分析和讲解,使读者了解对同一类开发任务应如何做并能够领会为何这么做,达到融会贯通的目的。

 

本书主要面向中、高级用户,所以读者最好具有一定的Oracle数据库使用基础和程序设计基础(例如,熟悉基本SQL语句和任何一种过程语言),最好有一定的程序设计经验。但初级用户也能从中学到很多有用的东西,包括设计思想和技巧等。通过本书的学习,相信读者的Oracle开发水平会上一个新的台阶。

 

本书的案例内容涉及面比较广泛,包括编程规范、表结构设计、表压缩、分析函数以及高级查询,从常规数据处理的设计到各类行列转换技巧,从Oracle的各种实用工具的用法到问题诊断、优化等步骤都进行了讲解。另外,还针对Oracle某些容易错的陷阱作了介绍,并提出了相应的解决办法,对某些操作提出了提高效率的措施并进行了验证。

 

在众多内容中,本书也有所侧重,力求将作者理解最深入的部分介绍给读者。例如动态SQL,PL/SQL块的使用、影响执行计划的因素、减少日志生成以及并行技术等。选择这些作为侧重点的原因有4个方面:第一,目前市面上类似书籍对这些方面的内容涉及不多,而且不够深入;第二,这些内容在通常的程序设计中使用非常频繁;第三,这些内容能使读者更加了解Oracle系统的工作机制;第四,消除很多读者的认识误区,例如,认为Oracle数据库的SQL只是在数据查询方面很强大,并因此将SQL仅仅定位在查询语言上。事实上,通过阅读本书,读者将会发现 OracleSQL功能是如此强大。在开发中,很多过去必须依靠过程语言实现的功能,比如循环、行间运算,通过分析函数、递归子查询等,SQL基本上都能实现。而且,利用SQL能使开发工作事半功倍,极大地提高开发效率和效率。

 

本书精选了10多个有独特的设计思想和编写技巧的案例来进行分析讲解。出版社网站提供包含所有案例的源程序下载,读者可复制这些代码到自己的系统中,随时查看程序的运行结果,以加深对代码的理解。

 

我们7Oracle技术专家来自北京、加拿大、上海、福建、海南、河北等地,在电信、制造、统计、航空、金融、证券等行业工作多年,工作领域包括项目管理、系统架构、数据库、数据仓库和数据挖掘等。

 

本书共分20章。

苏旭晖(newkid)是一名定居境外的资深程序员,也是ITPUB上最为活跃的热心网友之一,非常关注国内Oracle数据库领域,在百忙之际还为我们送来了大礼:第18章“11gR2的新特性:递归子查询”,让读者有机会使用Oracle提供的最新的技术开发项目。他更认真审核了我们每个人的文章,指出了很多错误和不完善的地方,为本书的完成发挥了重要的作用。

王保强(bq_wang)编著了第1章、第10章、第11章和第20章。丁俊(dingjun123)编著了第4章、第5章、第6章和第7章。梁敬彬(wabjtam123)编著了第2章、第3章、第13章、第14章、第15章、第16章和第17章。怀晓明(lastwinner)编著了第12章。贾书民编著了第7章。卢涛(〇〇)编著了第8章、第19章,并对第2章、第7章的部分内容作了补充。

各章的主要内容如下:

 

1章“大话数据库编程规范”通过风趣的语言讲解了Oracle开发过程中的书写规范、命名规范、变量命名、注释规范、语法规范、脚本规范的一些规则和建议。

2“Oracle开发常用工具及使用“AWR工具与性能优化一节描述了AWR的基本功能和使用步骤,并通过几个经典案例的演示让读者加深了印象,同时证实该工具的强大。“SQL_TRACE/10046事件一节描述了如何通过该工具了解SQL的解析过程、执行计划、绑定变量、递归调用等详细信息。最后通过系列10046事件跟踪的成功案例来阐述该如何一步一步打开各扇SQL困惑大门。计时和剖析工具一节主要介绍了利用DBMS_PROFILER包分析PL/SQL代码的方法和步骤,并根据剖析结果对代码进行精细地调整。

3探索MERGE方法介绍了MERGE存在的原因、具备的特性及那些注意点,通过实例讲述了MERGE用于复杂更新时的优势所在,希望读者能记住这些经典的方法,给自己的项目开发带来便利。

4章 神秘的NULL和令人讨厌的CHAR分两部分,第1部分通过大量的实例分析NULL的理论和使用,使读者对NULL了然于胸,从而更好地使用NULL。第2部分通过对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,PL/SQL的使用方法和技巧。

10章“趣谈Oracle分析函数”讲述了分析函数在BI场景中的一些应用以及自定义聚集函数的实现。

11章“Oracle层次查询”介绍了基本的层次查询语法SELECT...START WITH... CONNECT BY ...语法、以及SYS_CONNECT_BY_PATHWMSYS.WM_CONCAT函数的应用。

12章 号段选取 主要利用层次查询和分析函数,通过对常见的号段选取的四种情况进行剖析解答,并通过 扩展环节拓展了这几种情况的应用范围,循序渐进带你全面掌握此类问题的攻克方法。

13分析SQL执行计划的关注点并未对各种调优知识进行特别深入的描述,而是将最实用部分提炼出告之读者,力求读者在读完本章后能面对纷繁复杂的执行计划而保持清晰的头脑,以最敏锐的视角去关注最需了解的信息,从而能迅速准确抓出主要矛盾,快速解决问题。

14“Oracle开发误区探索来源于日常工作中开发人员所经历的各个易错环节,具有较强的隐蔽性和欺骗性,希望读者在阅读完本章后能借鉴经验,在项目开发中少犯错。

15“PL/SQL开发性能漫谈主要从重视解析、关注调用、简洁为王、细致入微四个角度入手,结合详细的案例说明和读者共同探索PL/SQL开发优化的方法和思想。

16管道函数的学习与实战应用” 结合详细的示例描述了管道函数的特性、注意点、使用管道函数的场合等知识点。适当的使用管道函数技术将给项目开发带来很大的便利。

17巧用锁特性避免重复启动同一程序来源于笔者项目中一次未考虑周全而导致系统数据错误的经验教训,文中描述的技术方案是将锁机制和异常捕获巧妙结合,完美的解决了笔者的问题,并成功将该技术广泛的应用到各个项目中。

18章介绍11GR2的新功能:递归WITH子查询。本章中的大部分例子看起来像是趣味数学题,似乎实用性不强,读者们不妨视之为工作之余放松脑筋的益智类游戏,并从中得到某些启发。也许在你解决下一个工作中的难题时,递归的思想就会大放异彩!

19不可能的任务,挑战Oracle”讲解了用Oracle内部和第三方过程语言实现数据立方体的方法及提高效率的优化方法,说明了在特定条件下,不用SQL,而采用高级语言编程解决高性能要求问题的必要性和可能性。

20章“动态SQL扩展”通过一些翔实的案例讲解了动态SQL的不同应用场景。

 

书中案例的基本运行环境是Oracle 10g R2,除非有特殊说明,在Oracle 9i中也能运行。个别Oracle 11g的新特性都专门指出。

 

本书在很多案例的重要部分都有提示、注意等特殊说明。目的是为了加深读者的印象,避免不必要的错误,以使读者能够更高效地利用Oracle强大的功能和开发工具。

 

感谢 ITPUB 网站的创始人黄志洪(tigerfish) 为本书写序,他在推动中国Oracle 数据库的发展上功不可没。本书正是在他的倡议和帮助下完成的。

感谢 杨廷琨(yangtingkun)、罗海雄(rollingpig)、张涵(zhangfengh)、杨向勇(yxyup)和 侯圣文(secooler),他们都是国内顶尖的Oracle 专家,感谢他们审核了书稿,并提出了宝贵意见。

感谢 ITPUB 的王蓓小姐(贝贝),在本书的出版过程中,她做了大量的协调工作,才保证这本书的顺利出版。

感谢梁敬弘博士对梁敬彬的章节作的仔细修改。

感谢电子工业出版社的张月萍策划和许艳编辑,是她的努力让本书更具可读性和完整性。

由于作者水平有限,书中难免还存在一些错误和不当之处,敬请批评指正。

 

编者

20108







本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/419812,如需转载请自行联系原作者


相关文章
|
6月前
|
Oracle Java 关系型数据库
JSP struts2工资管理系统myeclipse开发oracle数据库bs框架java编程网结构
JSP 工资管理系统是一套完善的struts2设计系统MVC结构,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle10g,使用java语言开发,系统主要采用B/S模式开发。
46 1
|
6月前
|
Oracle Java 关系型数据库
JSP停车场车位管理系统myeclipse开发oracle数据库BS模式java编程网
JSP 停车场车位管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet+bean+dao (mvc模式开发),系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle 10g,使用java语言开发系统主要采用B/S模式开发。
38 0
|
12月前
|
SQL Oracle 关系型数据库
开发必备:EsayCode使用以及Oracle自定义模板
写前先问一句,不会还有人在手动写这些基础的sql语句吧?! 最近在做Oracle的项目,手写mapper和entity文件真是写到手软,以前MySQL都是找的线上自动生成的,现在也不行了。 找了很长时间,也试验了一下mybaties-plus,后来要感谢掘金群里的老哥(图片已同意)。虽然默认模板很难用,但是自定义模板优化后,凑合可以使用吧。
|
存储 SQL Oracle
oracle数据库实际项目中开发经验总结(上)
  1、在ORACLE中返回游标结果集   写包:   create or replace package pag_cs_power as   type c_Type is ref cursor;   FUNCTION FUN_CS_GETDICTLIST(   v_DictIndex in varchar2) return c_Type;   end pag_cs_power;   函数:
283 0
|
SQL Oracle 关系型数据库
Oracle/Mysql迁移到Postgresql事务回滚行为差异(开发避坑系列)
Mysql或Oracle迁移到Postgresql系产品后,经常会发生事务回滚导致的问题,具体问题一般都是类似于: **为什么我没rollback,我的事务就自己回滚了?** 下面我举一个简单的例子,说明下PG和其他两款DB在事务回滚行为上的差异 ## Oracle事务内报错后的行为 (完整代码贴在文章最后) ```java Class.fo
906 0
|
SQL Oracle 关系型数据库
|
SQL 关系型数据库 Unix
Shell_Oracle Erp基于主机文件Host开发详解(案例)
2014-06-20 Created By BaoXinjian 一、摘要 Oracle 并发程式中Host Type的可执行程式,它的作用是用于调用Unix Shell去执行某些需求 个人觉得Oracle EBS中引入Host去调用unix shell其弥补了很多PLSQL类型程式无法做的...
1045 0
|
Oracle 关系型数据库 数据库
Oracle免客户端For .Net(只为用NewLife.XCode开发Oracle的同学服务)
自从发布了一篇博客Oracle免客户端For .Net(增加分析Devart和DataDirect)后,非常非常多的同学前来问各种Oracle客户端运行时安装配置的问题,严重影响了我们团队的正常工作和日常交流。
723 0

推荐镜像

更多