资料下载网
首页 计算机 考试教辅
Oracle 9i&10g编程艺术:深入数据库体系结构_Thomas Kyte著_苏金国译_共860页 pdf电子书免费下载,百度云
首页 > 计算机 > 数据库技术 > Oracle 9i&10g编程艺术:深入数据库体系结构_Thomas Kyte著_苏金国译_共860页 pdf电子书免费下载,百度云

《Oracle 9i&10g编程艺术:深入数据库体系结构_Thomas Kyte著_苏金国译_共860页》pdf电子书免费下载


下载方式一:

百度网盘下载地址:https://pan.baidu.com/s/1z8POx0kg6P0c4PvH1bjEcw
百度网盘密码:1111

下载方式二:

http://ziliaoshare.cn/Download/ae_123562_pd_Oracle9i&10gBCYS:SRSJKTXJG_ThomasKyteZ_SJGY_G860Y.zip

 


Oracle 9i&10g编程艺术:深入数据库体系结构_Thomas Kyte著_苏金国译_共860页

作者:empty

页数:860

出版社:empty

《Oracle 9i&10g编程艺术:深入数据库体系结构_Thomas Kyte著_苏金国译_共860页》介绍

^Think”(思考) , 1914年, Thomas J.Watson先生加入后来成为IBM的公司时, 带来了这样^Think different“(不同凡想) 是20世纪90年代苹果公司在其旷日持久的直传活动中提出的一我在1981年加入Oracle公司(那时还叫Relational Software公司) 时, 包含了关系模型的数据想一想SQL数据库语言吧, 历史上是Oracle首次推出了商业化的SQL实现, 有了SQL, 应用设计集合处理比一次处理一条记录要高效得多, 所以如果应用程序能以这种方式充分利用SQL, 就能比在Oracle社区中, 关于如何对系统调优以得到最佳的性能(或者如何最佳地使用各种Oracle特性)举一个例子,比如说这样一个观点:^如果一个东西很好,那么更多——更多些——会更好.“这再来看另一个不加判渐就采纳的例子,一般主张关注系统设计或配置中有问题的地方,而不是最有我发现,将一个问题分解为多个小部分再逐个加以解决,是一种很好的应用程序设计方法,采用这种一些最佳实践取决于(或部分取决于)事实的真实性,有时,随着事实的改变,这些最佳实践可能不论我们的计算机速度变得多快,数据库变得多复杂,也不管编程工具的能力如何,人类的智慧和一Thomas Kyte是我认识的最聪明的人之一, 他在Oracle数据库、SQL、性能调优和应用设计方面具在Thomas的网站(http//ask tom.oracle.com) 上、发言稿中以及书中, 他其实不断鼓动人们在使Thomas的这本书不仅介绍Oracle的诸多特性, 教你使用这些特性, 还反映了以下简单的观点:一个简简单单的座右铭。后来, 这成为每一位IBM员工的训词, 不论他们身居何职, 只要需要做出决策,并利用自己的才智完成所承担的工作, 就要把“Think“谨记于心, 一时间, Think“成为一个象征、一个标志, 屡屡出现在出版物上, 人们把它写在日历上提醒自己, 而且不仅在IBM内部, 就连其他一些公司的IT和企业管理者的办公室墙上也瑟挂着这个牌匾, 甚至《纽约客》杂志的漫画里都有它的身影, Think“在1914年是一个很好的观念,即使在今天也同样有着重要的意义,个口号,想借此重振公司的品牌,更重要的是,想改变人们对技术在日常生活中作用的看法,苹果公司的口号不是 think differently“(换角度思考, 暗含如何去思考) , 而是把 different“用作动词”think“的宾语, 昭含该思考些什么(与”think big“句式相同) , 这个宣传活动强调的是创造性和有创造性的人,暗示苹果电脑在支持重新和艺术成就方面与之不同.库系统还是一种新兴技术,开发人员、程序员和队伍逐渐壮大的数据库管理员都在学习采用规范化方法的数据库设计原则, 在此之后出现了非过程性的SQL语言, 尽管人们对它很陌生, 但无不为其强大的能力所折服, 因为利用SQL语言能有效地管理数据, 而以前同样的工作需要进行非常辛苦地编程才能完成, 那时要思考的东西很多,现在也依然如此,这些新技术不仅要求人们学习新的概念和方法,还要以新的思想来思考,不论是过去还是现在,做到了这一点的人最终都大获成功,他们能最大限度地利用数据库技术,为企业遇到的问题建立有效的创新性解决方案,人员可以利用一种非过程性语言(或称“描述性语言“)管理行集(即记录集),而不必使用传统的过程性语言编写循环(一次只能处理一条记录) , 刚开始接触SQL时, 我发现自己必须”转45°考虑问题,以确定如何使用诸如联结和子查询之类的集合处理操作来得到我想要的结果。那时,集合处理对大多数人来说还是全新的概念,不仅如此,这也是非过程性语言的概念,也就是说,你只需指定想要的结果,而无需指出如何得到这些结果,这种新技术确实要求我”换角度思考”,当然也使我有机会”不同凡想“,那些没有使用集合处理的应用程序表现得更出色,不过,遗憾的是,应用程序的性能往往都不尽如人意,实际上, 大多数情况下, 最能直接影响整体性能的是应用程序设计, 而不是Oracle参数设置或其他配置选项、所以,应用程序开发人员不仅要学习数据库特性和编程接口的详细内容,还要掌握新的思路,并在应用程序中适当地使用这些特性和接口,有许多“常识“,这种原本明智的”常识“有时却演变成为一种”传说“甚至”神话“,这是因为开发人员和数据库管理员可能不加如何批判地采纳这些思想,或者不做如何思考就盲目扩展它们,种想法很普通, 但一般并不咸立, 以Oracle的数组接口为例, 它允许开发人员只用一个系统调用就能插入威获取多行记录,显然,能减少应用程序和数据库之间传递的网络消息数当然很好。但是再想想看,到达某个”临界“点后,情况可能会改变,一次获取100行比一次获取1行要好得多,但是如果一次获取1000行而不是100行,这对于提供整体性能通常意义并不大,特别是考虑到内存需求时更是如此可能改善性能的方面(或者是能提高可靠性、可用性或增强安全性的方面),请考虑一个系统调优的“常识“:要尽可能提高缓冲区的命中率。对于某些应用,要尽量保证所需数据在内存中,这会最大限度地提高性能。不过,对于大多数应用,最好把注意力放在它的性能瓶颈上(我们称之为”等待状态“),而不要过分强调某些系统级指标。消除应用程序设计中那些导致延迟的因素,就能得到最佳的性能,方式, 往往能极好地、创造性地使用SQL解决应用需求, 通常, 只需一条SQL语句就能充成许多工作,而你原来可能认为这些工作需要编写复杂的过程性程序才能实现, 如果能充分利用SQL的强大能力一次处理一个行集(可能并行处理),这不仅说明你是一个高效率的游泳池开发人员,也说明应用程序能以更快的速度运行!不再适用.请考虑一句古老的格言:“要得到最好的性能,应当把索引和数据放在单独的表空间中,“我经常发现许多数据库管理员都恪守着这个观点,根本不考虑如今磁盘的速度和容量已经大为改观,也不考虑给定工作负载的特殊要求, 要评价这个”规则“是否合适, 应该考虑这样一个事实:Oracle数据库会在内存中缓存最近经常使用的数据库块(通常这些块展于某个索引),还有一点需要考虑:对于给定的请求,Oracle数据库会顺序使用索引和数据块, 而不是同时访问, 这说明, 所有并发用户实际上应该都会执行涉及索引好数据的/O操作,而且每块磁盘上都会程序I/O操作,可能你会出于管理方面的原因(或者根据你的个人喜好) 将索引和数据块分置于不同的表空间中, 但就不能说这样做是为了提高性能, (Thomas Kyte在Ask Tom网站http//ask tom.oracle.com上对这个主题做了深入的分析, 有关文章可以在”index datatablespace“中查到.) 从中我们可以得到一个教训, 要根据事实做出决定, 而且事实必须是当前的.完备的,套正确的“思考原则“仍是无可替代的,所以,对于应用中使用的技术,尽管学习其细节很重要,但更重要的是,应该知道如何考虑适当地使用这些技术。有渊博的学识, 我敢肯定, Thomas绝对是“Think“和”Think different“这两个口号不折不扣的追随者, 有位中国的智者说过”授人以鱼, 为一饭之惠; 授人以渔, 则终身受用“, 显然Thomas对此深以为然, Thomas很乐于把自己的Oracle知识与大家共亨, 但他并不是只是罗列问题的答案, 而是尽力帮助大家学会如何思考和推理。用Oracle数据库设计数据库应用时要“换角度思考“, 他从不置守成规, 而坚持通过实例, 用事实证明,Thomas采用一种注重实效的简单方法来解决问题, 按照他的建议和方法, 你将成为更高效的开发人员,能开发出更好、更快的应用.不要相信神话,要自己港考,不要墨守成规,所有人都知道的事情其实很可能是错的!不要相信传言,要自己测试,根据经过证明的示例做出决定,将问题分解为更简单的小问题,再把每一步的答案组合为一个优秀、高效的解决方案,如果数据库能更好、更快地完成工作,就不要事必躬亲地自己编写程序来完成。理解理想和现实之间的差距,对于公司制定的未加证实的技术标准,要敢于提出质疑。要针对当前需求从大局考虑怎样做最好,要花时间充分地思考,Thomas建议, 不要只是把Oracle当作一个黑盒, 你不只是在Oracle中放入和取出数据.他会帮通过阅读这本书, 你会了解到Oracle数据库技术的许多新动态, 还会掌握应用设计的一些重要概念,IBM的Watson曾经说过:“自始以来, 每一个进步都源自于思考, 仅仅因为没有思考”, 就造过去我一直在开发Oracle软件, 并与其他Oracle开发人员一同工作, 帮助他们构建可靠、健壮的本书涵盖了我认为最重要的一些内容, 即Oracle数据库及其体系结构, 我也可以写一本书名类似的在编写本书时, 我对Expert One-on-One Oracle一书中关于体系结构的章节做了全面修订和更新,如果针对9i和10g更新Expert One-on-One Oracle, 那么需要补充的内容太多了, 那本书原本篇顾名思义, 本书的重点是数据库体系结构, 并强调数据库本身如何工作, 我会深入地分析Oracle数如果开发的选择余地很大,则会带来一些问题,其中一个问题是有时很难确定哪种选择是满足特定需如果你不只是想知道做何选择, 还想了解有关Oracle特性和功能的一些原则和实现细节, 这本书就助你理解Oracle是如何工作的, 如何充分利用它强大的能力, 通过学习如何深思熟虑地、创造性地应用Oracle技术, 你会更快、更好地解决大多数应用设计问题。如果你确实领会了这些思想,相信你肯定也会对所面对的难题“换角度思考”.成全世界白白浪费了无数资金。 Thomas和我都贤同这种说法, 学完这本书后, 利用你掌握的知识和技术,希望你能为这个世界(至少能为你的企业)节省无数资金,把工作干得更出色,应用程序。在这个过程中积累了一些经验,这是这些经验赋予我灵感,才有了本书中的内容。这本书实际上反映了我每天做了些什么,汇集了我所看到的人们每天遇到的问题.其他方面的书,向你解释如何用一种特定的语言和体系结构开发应用程序,例如,我可以告诉你如何使用JavaServer Pages(JSP) 与Enterprise JavaBeans(EJB) 通信, EJB再如何使用JDBC与Oracle通信,不过, 归恨到底, 你最后还是要了解Oracle数据库及其体系结构(本书介绍的内容) , 才能成功地构建这样一个应用程序, 要想成功地使用Oracle进行开发, 我认为有些内容你必须了解, 而不论你是一位使用ODBC的VisualBasic程序员、使用EJ和JDBC的Java程序员, 还是使用DBI Perl的Perl程序员, 这本书部会介绍这些通用的知识,本书井不推崇那一种特定的应用体系结构,在此没有比较三层机构和客户/服务器结构优熟劣、我们只是讨论了数据库能做什么,另外关于数据库如何工作,我们还会指出你必须了解哪些内容,由于数据库是所有应用体系结构的核心,所以这本书使用面很广,并补充了大量新的内容。Expert One-on-One Oracle一书所基于的版本是Oracle 8.1.7, 在此之后又推出了3个版本——两个Oracle 9i版本和Oracle数据库10g Release 1, 这也是写这本书时的Oracle发行版本.因此,有许多新的功能和新的特性需要介绍。幅较多,再加太多内容就会很难处理,出于这个考虑,我们决定分两本书来介绍。这是其中的第一本,第二本书暂定名为Expert Oracle Programming.据库体系结构, 包括文件、内存结构以及构成Oracle数据库(database)


《Oracle 9i&10g编程艺术:深入数据库体系结构_Thomas Kyte著_苏金国译_共860页》目录

目录

序..

前言.

本书内容.

读者对象..

本书组织结构.

源代码和有关更新.

勘误表.

配置环境.

建立SCOTT/TIGER模式.

环境..

设置SQL*Plus的AUTOTRACE.

配置Stats pack.

定制脚本.

SHOW_SPACE.

BIG_TABLE..

代码约定..

第1章开发成功的Oracle应用程序.

1.1我的方法.

1.2黑盒方法.

2.3.1专用服务器..

2.3.2共享服务器..

1.3开发数据库应用的正确(和不正确)方法.

1.3.1了解Oracle体系结构.

1.3.2理解并发控制.

1.3.3多版本..

1.3.4数据库独立性?.

1.3.5“怎么能让应用运行得更快? .

1.3.6DBA与开发人员的关系.

1.4小结..

第2章体系结构概述.

2.1定义数据库和实例.

2.2SGA和后台进程.

2.3连接Oracle.

2.3.3TCP/IP连接的基本原理..

2.4小结.

第3章文件.

3.1参数文件..

3.1.1什么是参数?..

3.1.2遗留的in it or a参数文件.

3.1.3服务器参数文件.

3.1.4参数文件小结..

3.2跟踪文件..

3.2.1请求的跟踪文件..

3.2.2针对内部错误生成的跟踪文件..

3.2.3跟踪文件小结.

3.3警告文件..

3.4数据文件..

3.4.1简要回顾文件系统机制.

3.4.2 Oracle数据库中的存储层次体系..

3.4.3字典管理和本地管理的表空间.

3.5临时文件.

3.6控制文件.

3.7重做日志文件.

3.7.1在线重做日志..

3.7.2归档重做日志.

3.8密码文件.

.3.9修改跟踪文件.

3.10闪回日志文件..

3.10.1闪回数据库..

3.10.2闪回恢复区..

5.1.1专用服务器连接..

5.1.2共享服务器连接..

5.1.3连接与会话..

5.1.4专用服务器与共享服务器.

5.1.5专用/共享服务器小结..

5.2.1中心后台进程..

5.2.2工具后台进程.

5.3.1I/O从属进程.

5.3.2并行查询从属进程.

3.11DMP文件(EXP/IMP文件) .

3.12数据泵文件.

3.13平面文件..

3.14小结.

第4章内存结构..

4.1进程全局区和用户全局区.

4.1.1手动PGA内存管理.

4.1.2自动PGA内存管理.

4.1.3手动和自动内存管理的选择.

4.1.4PGA和UGA小结..

4.2系统全局区..

4.2.1固定SGA..

4.2.2重做缓冲区.

4.2.3块缓冲区缓存..

4.2.4共享池.

4.2.5大池.

4.2.6Java池.

4.2.7流池..

4.2.8自动SGA内存管理.

4.3小结..

第5章Oracle进程.

5.1服务器进程.

5.2后台进程..

5.3从属进程..

5.4小结.

第6章锁.

6.1什么是锁?

6.2锁定问题..

6.2.1丢失更新.

6.2.2悲观锁定.

6.2.3乐观锁定.

7.2.4SEAIALIZ ABLE..

7.2.5 READONLY.

8.2.1语句级原子性.

8.2.2过程级原子性..

8.2.3事务级原子性.

6.2.4乐观锁定还是悲观锁定?.

6.2.5阻塞..

6.2.6死锁..

6.2.7锁升级.

6.3锁类型..

6.3.1DML锁..

6.3.2DDL锁..

6.3.3闩.

6.3.4手动锁定和用户定义锁..

6.4小结.

第7章井发与多版本..

7.1什么是并发控制?..

7.2事务隔离级别..

7.2.1 READ UNCOMMITTED.

7.2.2 READ COMMITTED..

7.2.3 REPEATABLE READ.

7.3多版本读一致性的含义..

7.3.1一种会失败的常用数据仓库技术.

7.3.2解释热表上超出期望的I/O.

7.4写一致性.

7.4.1一致读和当前读.

7.4.2查看重启动.

7.4.3为什么重启动对我们很重要?.

7.5小结.

第8章事务.

8.1事务控制语句.

8.2原子性.

8.3完整性约束和事务.

8.3.1 IMMEDIATE约束.

9.4.1测量redo..

10.2.1段.

10.2.2段空间管理..

10.2.3高水位线.

10.2.4 freelists..

10.2.5PCT FREE和PCT USED..

8.3.2 DEFERRABLE约束和级联更新.

8.4不好的事务习惯.

8.4.1在循环中提交..

8.4.2使用自动提交.

8.5分布式事务..

8.6自治事务.

8.6.1自治事务如果工作?..

8.6.2何时使用自治事务?..

8.7小结.

第9章redo与undo.

9.1什么是redo?..

9.2什么是undo?..

9.2.1redo和undo如何协作?..

9.3提交和回滚处理.

9.3.1 COMMIT做什么?..

9.3.2 ROLLBACK做什么?..

9.4分析redo..

9.4.2redo生成和BEFORE/AFTER触发器..

9.4.3我能关掉重做日志生成吗?..

9.4.4为什么不能分配一个新日志?.

9.4.5块清除..

9.4.6日志竞争.

9.4.7临时表和redo/undo.

9.5分析undo.

9.5.1什么操作会生成最多和最少的undo?.

9.5.2ORA-01555:snapshot too old错误..

9.6小结.

第10章数据库表..

10.1表类型.

10.2术语..

10.2.6 LOGGING和NO LOGGING..

10.2.7INI TRANS和MAX TRANS..

10.3堆组织表.

10.4索引组织表..

10.5索引聚簇表..

10.6散列聚簇表..

10.7有序散列聚簇表..

10.8嵌套表.

10.8.1嵌套表语法..

10.8.2嵌套表存储.

10.8.3嵌套表小结.

10.9临时表.

10.10对象表.

10.11小结..

第11章索引.

11.1 Oracle索引概述..

11.2B*树索引..

11.2.1索引键压缩..

11.2.2反向键索引..

11.2.3降序索引.

11/860

12/860

11.2.4什么情况下应该使用B*树索引?.

11.2.5B*树小结.

11.3位图索引..

11.3.1什么情况下应该使用位图索引?.

11.3.2位图联结索引.

11.3.3位图索引小结..

11.4基于函数的索引..

11.4.1重要的实现细节.

11.4.2一个简单的基于函数的索引例子.

11.4.3只对部分行建立索引.

11.4.4实现有选择的惟一性..

11.4.5关于CASE的警告.

11.4.6关于OR A-01743的警告.

11.4.7基于函数的索引小结..

11.5应用域索引.

11.6关于索引的常见问题和神话..

11.6.1视图能使用索引吗?..

11.6.2Null和索引能协作吗?.

11.6.3外键是否应该加索引?.

11.6.4为什么没有使用我的索引?..

11.6.5神话:索引中从不重用空间.

11.6.6神话:最有差别的元素应该在最前面..

11.7小结.

第12章数据类型.

12.1 Oracle数据类型概述.

12.2字符和二进制串类型..

12.4.1 NUMBER类型的语法和用法.

12.2.1NLS概述..

12.2.2字符串..

12.3二进制串:RAW类型.

12.4数值类型.

13.1.1提高可用性.

13.1.2减少管理负担..

13.1.3改善语句性能.

13.2.1区间分区..

13.2.2散列分区.

13.2.3列表分区.

12.4.2 BINARY_FLOAT/BINARY_DOUBLE类型的语法和用法.

12.4.3非固有数据类型..

12.4.4性能考虑..

12.5 LONG类型.

12.5.1 LONG和LONG RAW类型的限制.

12.5.2处理遗留的LONG类型.

12.6 DATE、TIMESTAMP和INTERVAL类型.

12.6.1格式.

12.6.2 DATE类型.

12.6.3 TIMESTAMP类型.

12.6.4 INTERVAL类型..

12.7LOB类型..

12.7.1内部LOB..

12.7.2B FILE..

12.8ROWID/U ROWID类型..

12.9小结.

第13章分区..

13.1分区概述..

13.2表分区机制.

13.2.4组合分区.

13.2.5行移动..

13.2.6表分区机制小结.

13.3索引分区..

13.3.1局部索引.

13.3.2全局索引..

13.4再论分区和性能.

13.5审计和段空间压缩..

13.6小结..

第14章并行执行.

14.1何时使用并行执行..

14.2并行查询.

14.3并行DML..

14.4并行DDL.

14.4.1并行DDL和使用外部表的数据加载.

14.4.2并行DDL和区段截断..

14.5并行恢复.

14.6过程并行化..

14.6.1并行管道函数.

14.6.2DIY并行化..

14.7小结..

第15章数据加载和卸载.

15.1SQL*Loader..

15/860

16/860

15.1.1用SQL LDR加载数据的FAQ.

15.1.2SQLLDR警告.

15.1.3SQLLDR小结.

15.2外部表..

15.2.1建立外部表..

15.2.2处理错..

15.2.3使用外部表加载不同的文件.

15.2.4多用户问题.

15.2.5外部表小结..

15.3平面文件卸载.

15.4数据泵卸载..

15.5小结..

计算机


python
AI人工智能
javascript
计算机网络/服务器
数据库技术
计算机F

考试教辅


考研考博
英语四六级

沪ICP备18046276号-5