Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版

所需积分/C币:50 2013-02-03 11:42:53 60.21MB PDF
收藏 收藏
举报

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构:第2版(世界顶级专家Thomas Kyte力作) 基本信息 原书名: Expert Oracle Database Architecture: Oracle Database Programming 9i, 10g, and 11g Techniques and Solutions, Second Edition [ 原出版社: Apress 作者: (
版权声明 Original English language edition, entitled Expert Oracle Database Architecture: Oracle Database Programming 91, 10g. and 1g Techniques and Solutions by Thomas Kyte, published by Apress, 2855 Telegraph avenue, Suite 600, Berkeley, CA94705 USA Copyright C 2010 by Thomas Kyte. Simplified Chinesc-languagc edition copyright C 2011 by Posts Telecom Press. All rights reserved 本书中文简体字版由 Apress L.P.授权人民邮电出版社独家出版。未经出版者书面许可,不得以任 何方式复制或抄袭本书内容。 版权所有,侵权必究。 译者序 Oracle Database llg的推出让关注 Oracle的人欣喜万分,不过也不免有些心,因为此前还没有 合适的书系统而深入地介绍这个新版本。要想学习和掌握它的诸多新特性,只能从 Oracle手册入手, 而数万贞的11g手册不免让人心仔畏惧,从中挑出对新特性的描述吏需要一双“火眼金睛”。 好消息!在本书第1版出版时隔4年后, Thomas Kyte及时了解了大家的这一迫切需求,根据他 的实战经验以及人们最关心的问题对这本书做了全面补充和调整,以涵盖lg最受关注的多项特性。 例如11g引 dbms parallel execut包来帮助自动实现原来需要人工实现的并行化,以及引入PSQ来 控制并行度,限制资源的过度使用,从而进一步改进并行化的实现。11g还增加了对递归调用子査询 的支持,来避免原先令人费解的 connect by语法。另外通过闪回数据归档支持长期闪回查询,这意味 着查询几个月前甚至几年前的数据不再是奇谈。延迟段创建特性的引入更让我们看到了Orac对于性 能的“锱珠必较”和精益求精。所有这些内容都在这一版中得以体现,Tom还专门增加了一章来讨论 Oracle中的数据加密。相信你的问題都能在这一版中得到解答, 这一版仍沿袭了上一版的叙事风格,Tom通过轻松交流的方式,让你从具体的例子、具体的实践 中了解技术细节,在知道“怎样做”的同时还能理解“为什么这样做”。还特别根据读者对上一版内 容的反馈,在文中追加了大量注解,另外还利用注解强调了11g与910g的区别。相信你已经迫不及 待地想要翮开下一页了,那么,进入Tom的 Oracle世界吧! 很高兴上一版出版后得到了读者的青睐,能够让更多中国读者领略Tom的这一力作,这让我们 也倍惑自豪。对于第2版的翻译,我价同样不敢马虎,尽量减少歧义,希望能让读者更轻松地阅读和 理解。不过由于水平有限,译文肯定有不当之处,敬请批评指正。 序 第一次接触到 Oracle rdbms是在1988年,也可能是1987年。那一天,经理在我的办公桌上放 下一个小盒子,对我说了几句话,大致意思是:“这是…个刚刚进入国内的新产品,名叫 Oracle。你 先试用儿个星期,看看它适合做些什么。“ 那个版本可能是5.0.22,当时学习 Oracle可比现在简单多了。全套的印刷手丹(包括 Forms20 和SQL· Report等)可以放在一个小小的公文包里, create table语句的文档只有大约3页而已。 如果查看112SQL参考手册的PDF文件,会发现从16-6页开始,直到1679页全都是 create table 语句的文档,总共有74页。我最后一次查看9手册时,总贝数已经超过了20000页。我想,对于10g 和1lg,文档的总页数应该不会低于这个数字。 由于5.0.22只有3本相当薄的手册,所以没过多久我就全面了解了 Oracle能够做些什么以及如何 高效地完成工作。那时没有太多选择余地,所以出错的机会也不多。不过如今 Oracle内核已经“深埋 在不计其数的选项和特性之下,这使得 Oracle的学习困难重重,该如何下手呢?更糟糕的是,着手学 习时,我们真正需要了解的细节并不是一目了然的,它往往被其他大量信息所“掩盖”,当然了解这 些悄息本身并不是坏事,但它们对入门来说并不是至关重要的。 答案很衙单。 第1步:阅读概念手册,对内容有个大致了解 第2步:读 Tom Kyte的这本书、通过边学习边试验,从一个初次尝试“ select' hello world"’fom dua”的“菜鸟”转变成 Oracle高手,有朝一日也能自信满满地说出一些“高深″言论,比如:“出 于某个原因,我们应该使用一个分区IOT,将这些列放在这个表的溢出区中 Tom的这本书集三点于一身:一种轻松交流的风格,使读者能够更容易地了解技术细节,在知道 “怎样做”的同时还能理解“为什么这样做”;一种结构化的“叙事方式”,你会看到,相关描述都 针对同一个目标,而不是把支离破碎的技巧简单地汇集在一起;一组精心组织的示范说明,让你了解 Oracle的[作原理,还会教你怎样做以及怎样思考。 仅以索引为例。索引有许多种,首先需要简要介绍这些不同类型。例如,如果对B-树素引的具体 工作原理有所认识,会很有好处,这样我们才能更奸地了解这种素引的优缺点。然后可以转向基于函 数的索引,也就是“尚不存在的数据的索引。由此我们不仅能知道 Oracle能够做什么,还会了解通 2序 过对 Oracle的处理我们还能进一步做些什么,接下来可以看到如何把这些综合起来,创建一个确保数 据子集唯一性的索引。还会看到如何在一个大型数据集上创建维护要求不高的小索引,只标识真正想 要访问的数据,将优化器生成“愚”执行计划的风险减至最低。 基本说来,手册中都涵盖了这些内容,不过,我们必须具备敏锐的洞竅力,能够从纷繁的命令中 挑出我们想要的内容,查看如何使用这些命令为实际问题建立解决方案。 Tom Kyte就展示了这种洞察 力,而且还鼓励我们更进一步形成自己的认识 坦率地讲,如果全世界每一位DBA和开发人员都精心研读了 Tom kyte的这本书,我可能就得改 行为 SQL Server用户提供咨询服务了,因为需要 Oracle咨询的客户肯定会显著减少。 Jonathan lewis 英国 Oracle用户群负賁人 第1版序 “ Think”(思考)。1914年, Thomas J. Watson先生加入后来成为IBM的公司时,带来了这样一个 简简单单的座右铭。后来,这成为每一位IM员工的训词,不论他们身居何职,只要需要作出决策, 并利用自己的才智完成工作,就要把“ Think”谨记于心。一时间,“ Think”成为一个象征、一个标志, 屡屡出现在出版物上,人们把它写在目历上提醒自己。而且不仅在IBM内部,就连其他一些公司的 r和企业答理者的办公室墙上也悬挂着这个牌匾,甚至《纽约客》杂志的漫里都有它的身影。 Think”在1914年是一个很好的观念,即使在今天也同样有着重要的意义。 Think different”〔不同凡想)是20世纪90年代苹果公司在其剪日持久的宣传活动中提出的一个 口号,想借此重振公司的品牌,更重要的是,想改变人们对技术在日常生活中作用的看法。苹果公司 的口号不是“ think differently”(换角度思考,暗含如何去思考),而是把“ different”用作动词" think 的宾语,暗含该思考些什么(与" think big"句式相同)。这个宜传活动强调的是创造性和有创造力的 人,暗示苹果电脑在支持创新和艺术成就方面与众不同。 我在1981年加入Orac公司(那时还叫 Relational software公司)时,包含关系模型的数据库系 统还是一种新兴技术。开发人员、程序员和队伍逐渐壮大的数据库管理员都在学习采用规范化方法的 数据库设计原则。在此之后出现了非过程性的SQL语言。尽管人们对它很陌生,但无不为其强大的能 力所折服,因为利用SQL语言能有效地管理数据,而以前同样的工作需要非常辛苦地编程才能完成。 那时要思考的东西很多,现在也依然如此。这些新技术不仅要求人学习新的观念和方法,还要以新 的思路来思考。不论是过去还是现在,做到了这一点的人最终都大获成功,他们能最大限度地利用数 据库技术,为企业遇到的问题建立有效的创新性解决方案 想一想SQL数据库语言吧,历史上是 Oracle首次推出了商业化的SQL实现。有了SQL、应用设 计人员可以利用一种非过程性语言(或称“描述性语言”)管理行集(即记录集),而不必使用传统的 过程性语言编写循环(一次只能处理一条记录)。刚开始接触SQL时,我发现自己必须“转45””考 虑问題,以确定如何使用诸如联结和子查询之类的集合处理操作来得到想要的结果。那时,集合处理 对大多数人来说还是全新的概念,不仅如此,这也是非过程性语言的概念。也就是说,只需指定想要 的结果,而无需指出如何得到这些结果。这种新技术确实要求我“换角度思考”,当然也使我有机会 不同凡想”。 集合处理比一次处理一条记录要高效得多,所以如梨应用程序能以这种方式允分利用SQL,就能 2第1版序 比那些没有使用集合处理的应用程序表现得更出色。不过,遗憾的是,应用程序的性能往往都不尽如 人意。实际上,大多数情况下,最能直接影响整体性能的是应用程序设计,而不是 oracle数设置或 其他配置选项。所以,应用程序开发人员不仅要学习数据库特性和编程接口的详细内容,还要掌握新 的思路,并在应用程序中适当地使用这些特性和接口。 在Orc社区中,针对如何对系统调优以得到最佳的性能(或者如何最佳地使用各种 Oracle特性), 有许多“常识”。这种原本明智的“常识”有时却演变成为一种“传说”甚至“神话”,这是因为开发 人员和数据库管理员可能不加任何批判地采纳这些思想,或者不做任何思考就盲目扩展它们 比如说这样一个观点:“如果一个东西很好,那么越多越好。”这种想法很普遍,但一般并不成立 以 Oracle的数组接口为例,它让开发人员只用…个系统调用就能插入或获取多行记录。显然,能减少 应用程序和数据库之间传递的网络消息数当然很好。但是再想想看,到达某个“临界”点后,情况可 能会改变。一次获取100行比一次获取1行要好得多,但是如果一次获取1000行而不是100行,这 对于提高整体性能通常意义并不大,特别是考虑到内存需求时更是如此。 再来看另一个不加判断就采纳的例子,一般主张关注系统设计或配置中有问题的地方,而不是最 有可能改善性能的方面(或者是能提高可靠性、可用性或增强安全性的方面)。请考虑一个系统调优 的“常识”:要尽可能提高级冲区的命中率。对于某些应用,要尽量保证所需数据在内存中,这会最 大限度地提高性能。不过,对于大多数应用,最好把注意力放在它的性能瓶颈上(我们称之为“等待 状态”),而不要过分强调某些系统级指标。消除应用程序设计中那些导致延迟的因素,就能得到最佳 的性能。 我发现,将一个问题分解为多个小部分再逐个解决,是一种很好的应用程序设计方法。釆用这种 方式,往往能极好地、创造性地使用SQL解决应用需求。通常,只需一条SQL语句就能完成许多工 作,而你原来可能认为这些厂作需要编写复杂的过程式程序才能实现。如果能充分利用SQL的强大能 力一次处理一个行集(可能并行处理),这不仅说明你是一个高效率的应用程序开发人员,也说明应 用程序能以更快的速度运行! 最佳灾践有时取决于(或部分取决于)事实的真实性。有时,随着事实的改变,这些最佳实践可 能不再适用。有一句古老的格言:“要得到最好的性能,应当把索引和数据放在单独的表空间中。”我 经常发现许多数据库管理员都恪守着这个格言,根本不考虑如今磁盘的速度和容量已经大为改观,也 不考虑给定工作负载的特殊要求。要评价这个“规则”是否合适,应该考虑这样一个亨实: oracle数 据库会在内存中缓存最近经常使用的数据库块(通常这些块属于某个素引)。还有一点需要考虑:对 于给定的请求, Oracle数据库会按顺序使用索引和数据块,而不是同时访问。这说明,所有并发用户 实际上应该都会执行涉及索引和数据的LO操作,而且每块磁盘上都会出现IO操作。可能你会出于 管理方面的原因(或者根据个人喜好)将紧引和数据块分鱟于不同的表空间中,但绝不能说这样做是 为了提高性能。( Thomas kyte在 ask tom网站htp/ sktom. oracle. com上对这个主题做了深入的分析, 有关文章可以在“ index data table space”中查到。)从中我们可以得到一个教训,要根据事实作出决定, 而且事实必须是当前的,完备的 不论我们的计算机速度变得多快,数据库变得多复杂,也不管编程工具的能力如何,人类的智慧 和一套正确的“思考原则”仍是无可替代的。所以,对于应用中使用的技术,尽管学习其细节很重要, 笫1版序3 但更重要的是,应该知道如何考虑适当地使用这些技术 Thomas Kyte是我认识的最聪明的人之一,他在 Oracle数据库、SQL、性能调优和应用设计方面 具有渊博的学识。我敢肯定, Thomas绝对是“ Think"和“ Think different”这两个口号不折不扣的迫 随者。中国有位智者说过“投人以鱼,为一饭之惠;投人以渔,则终身受用”,显然 Thomas对此深以 为然。 Thomas很乐于把自己的 Oracle知识与大家共享,但他井不只是罗列向问题的答案,而是尽力帮 助大家学会如何思考和推理。 在 Thomas的网站{htp:/ asktom. oracle. com)上、发言稿中以及书中,他不断鼓励人们在使用 Oracle 数据库设计数据库应用时要“换角度思考”。他从不墨守成规,而坚持通过实例,用事实证明。 Thomas 采用一种注重实效的简单方法来解决问题,按照他的建议和方法,你将成为更高效的开发人员,能开 发出更好、更快的应用。 Thomas的这本书不仅介绍 Oracle的诸多特性,教你使用这些特性,还反映了以下简单的观点。 口不要相信神话,要自己思考。 口不要墨守成规,所有人都知道的事情其实很可能是错的! Q不要相信传言,要自己测试,根据经过证明的示例作出决定。 口将问题分解为更简单的小问题,再把每一步的答案组合为一个优秀、高效的解决方案。 口如果数据库能更好、更快地完成工作,就不要事必躬亲地自已编写程序来完成 口理解理想和现实之间的差距。 对于公司制定的未加证实的技术标准,要敢于提出质疑。 口要针对当前需求从大局考虑怎样做最好 口要花时间充分地思考。 Thomas建议,不要只悬把 Oracle当做一个黑盒。你不只是在 Oracle中放入和取出数据。他会帮 助你理解 Oracle是如何工作的,如何充分利用它强大的能力。通过学习如何在深思熟虑之后创造性地 应用 Oracle技术,你会更快、更好地解决大多数应用设计问题 通过阅读这本书,你会了解到 Oracle数据库技术的许多新动态,还会掌握应用设计的一些重要概 念。如果你确实领会了这些思想,相信你肯定也会对所面对的难题“换角度思考”。 IBM的 Watson曾经说过:“自始以来,每一个进步都源自于思考。仅仅因为‘没有思考’,就造 成全世界白白浪费了无数资金。” Thomas和我都赞同这种说法。希你学完这本书后,利用你掌操的 知识和技术,为这个世界(至少为你的企业)节省无数资金,把工作干得更出色。 Ken jacob Oracle公司产品战略郜(服务嚣技术〕副总裁,公认的“DBA博 前言 过去我一直在开发 Oracle欤件,并与其他 Oracle开发人员一同工作,帮助他们构建可靠、健牡的 基于 Oracle数据库应用程序。在这个过程中积累了一些经验,正是这些经验赋予我灵感,才有了本书 中的内容。这本书实际上反映了我每天做了些什么,汇集了我所看到的人们每天遇到的问题 本书涵盖了我认为最重要的一些内容,即 Oracle数据库及其体系结构。我也可以写一本书名类似 的其他方面的书,向你解释如何用一种特定的语言和体系结构开发应用程序。例如,我可以告诉你如 何使用JSP( Java Server Pages)与EJB( Enterprise JavaBeans)通信,EJB又如何使用JDBC与 Oracle 通信。不过,归根结底,最后还是要了解 Oracle数据库及其体系结构(本书介绍的内容),才能成功 地构建这样一个应用程序。要想成功地使用 Oracle进行开发,我认为有些内容你必须了解,而不论你 是一位使用ODBC的 Visual basi程序员使用EB和JDBC的Java程序员,还是使用 DBI Perl的Perl 程序员,这本书都会介绍这些通用的知识。本书并不推崇哪一种特定的应用体系结构,在此没有比较 ¨层结构和客户/服务器结构孰优孰劣。我们只是讨论数据库能做什么,另外关于数据库如何工作,我 们J还会指出你必须了解哪些内容。由于数据库是所有应用体系结构的核心,所以这本书适用面很广。 顾名思义,本书的重点是数据库体系结构,并强调数据库本身如何工作。我会深入地分析 Oracle 数据库体系结构,包括文件、内存结构以及构成 Oracle数据库和实例的进程。然后讨论一些重要的数 据库主题,如锁定、并发控制、事务、redo和 undo,还会解释为什么了解这些内容很重要。最后, 我们再来分析数据库中的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理 结构。 本书内容 如果开发的选择余地很大,则会带来…些问题,其中一个问題是有时很难确定哪种选择最能满足 特定諾求。每个人都希望灵活性尽可能大(有尽可能多的选掸),同时又希能简单呖了,换句话说 希望尽量容易。 Oracle为开发人员提供的选择几乎无夯无尽。没有人会说“这在 Oracle中做不到 而只会说“在 Oracle中你想用多少种不同的方法来实现”。希望这本书能帮你作出正确的选择。 如果你不只是想知道做何选择,还想了解有关 Oracle特性和功能的一些原则和实现细书,这本书 就很适合你。例如, Oracle有一个很棒的特性,称为并行执行( parallel execution)。 Oracle文档会告 诉你如何使用这个特性,并说明它到底能做什么。不过, Oracle文档没有告诉你应该在什么时候用这

...展开详情
试读 127P Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
tianhama 好用好用,多谢分
2020-07-15
回复
zzcmx2008 适合提高oracle知识的学习
2019-11-26
回复
komab 很经典的oracle学习资料!
2018-05-27
回复
紧到长卜帅 相当好的资源,书签齐全,深入学习oralcle的很好的资源
2017-12-18
回复
xylcxyfc 谢谢分享,文档不错,最起码能用啊
2017-12-08
回复
威尔金斯bhf 相当好的资源,书签齐全,深入学习oralcle的很好的资源
2017-07-27
回复
li7498119 很实用的技术,赞一个
2017-01-05
回复
NBfslh 谢谢楼主,很有用
2016-10-08
回复
yuxuewawa 挺不错,只是还没看多少
2016-08-01
回复
wangy_zj 经典书籍好好学习
2016-03-28
回复
  • 分享王者

    成功上传51个资源即可获取
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版 50积分/C币 立即下载
1/127
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第1页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第2页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第3页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第4页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第5页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第6页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第7页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第8页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第9页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第10页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第11页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第12页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第13页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第14页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第15页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第16页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第17页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第18页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第19页
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版第20页

试读结束, 可继续阅读

50积分/C币 立即下载 >