文章插图
Oracle10g性能分析与最佳化思路【Oracle10g性能分析与最佳化思路】《Oracle10g性能分析与最佳化思路》是2010年电子工业出版社出版的书籍 , 作者是谭怀远 。
基本介绍书名:让Oracle跑得更快
又名:Oracle 10g性能分析与最佳化思路
作者:谭怀远
ISBN:978-7-121-11325-3
页数:456
定价:59.00
出版社:电子工业出版社
出版时间:2010年8月
装帧:平装
开本:16开
内容简介Oracle 10g性能分析与最佳化思路是国内第一本真正意义上从工作经验出发 , 以作者的心得体会全面论述Oracle资料库性能最佳化的书籍 。编写风格流畅 注重实效 学习Oracle , 可以从这里开始 。在这本书里读者将会学到作者在性能最佳化方面的一些思路和思考 , 一些故障处理的方法和原则 , 这些东西是作者在实践中长期积累的心得体会 , 当读者掌握了一些处理问题的基本思路之后 , 成为一名合格的DBA就是一件轻而易举的事情了 。本书适用对象:Oracle DBA、Oracle开发人员 , 和其他对Oracle资料库感兴趣的人员 。作者简介谭怀远 , 副总工 , DBA团队负责人 , 在国内属于较早进入专职DBA岗位的人 。是国内着名资料库论坛ITPUB的资深版主 , 论坛id alantany 。有10年的Oracle DBA工作经验 , 从Oracle 8开始进入资料库领域 , 从Oracle 8到Oracle 8i,Oracle 9i,Oracle 10g , 见证了中国DBA职业的发展历程 。作者对资料库的性能最佳化有独到的见解 , 颇擅长于海量数据资料库的设计管理及最佳化工作 。序性能最佳化是资料库套用的核心问题 。目前的商业或开源的资料库产品 , 发展已日臻成熟 , 很少有经常发生崩溃急需修复的情形 。故DBA除了日常的常规维护任务外 , 大多把精力花在最佳化资料库上 。在2005年的时候 , ITPUB也曾出过一本《Oracle资料库性能最佳化》(盖国强、冯春培、叶梁、冯大辉主编)的技术书 , 颇受Oracle DBA们的欢迎 。现在很高兴地看到在ITPUB技术丛书里又增加了一本关于资料库最佳化知识的书籍 。ITPUB于2001年9月26日成立的 , 已发展为国内最大的资料库技术讨论社区 。本书作者谭怀远先生则是在2001年9月28日加入了ITPUB , 相交至今将近九年时间 。他在这幺长久的时间 , 长期工作在资料库业务的第一线 , 积累了大量丰富的经验 , 也形成自己独到的见解 。而这些见解 , 又大部分体现在本书的文字里 , 本书既是知识的归纳总结 , 同时又是个人技术感情(恕我在这里使用了一个创新的辞彙 , 大多数长期从事技术工作的人 , 都有一种有墨在胸 , 不得不发的感觉)的抒发 。纵观全书 , 我个人对作者所说的“最难的东西不是技术本身 , 而是什幺时候该用什幺技术”深表认同 。当DBA从烦琐的日常工作脱身出来 , 举目远望的时候 , 再往前的一片田野便是架构问题 , 最好的最彻底的 , 能一劳永逸的最佳化 , 往往从架构设计开始 。期待怀远君将来的新作 , 可以在这片更广阔的天地里驰骋 。我感到本书最大的一个特点在于 , 作者通过自己的一种情绪化的东西在写作 , 也可以说是对于技术的一种感情告白 , 所以是真挚的 , 这种真挚将影响到读者阅读时的情绪 , 让你在一种颇为感性化和人性化的氛围里阅读 , 轻鬆而又有趣 , 而不是冷冰冻的枯燥的技术讨论 , 这是本书区别于其他技术类书籍的一个显着特点 。本书里 , 涵盖了几乎所有最佳化相关的知识点 , 以及一些很新的内容 , 比如bind peeking、并行执行、执行计画、Cardinality(基数)、10053事件等 , 这些内容对于那些渴望深度了解性能最佳化的读者来说 , 是非常有用的 。ITPUB前身是在smiling上的Oracle电子小组 , 刚刚开始的时候ITPUB的板块不多 , 只有Oracle资料库管理、Oracle开发、OCP、Cisco、网路集成、海阔天空这几个板块 , 会员数只有一万多人 , 今年过9年的发展 , ITPUB已拥有技术板块100多个 , 注册会员数量超过230万人 。每天更新的讨论帖数以万计 。ITPUB的发展与像怀远君这样的专家、第一线技术工作者的长期支持是分不开的 , 在此也向怀远君表示感谢 , 没有你们就不会有今天的ITPUB 。ITPUB创始人 tigerfish2010年6月8日很多年前就在itpub看到作者的身影 , 也了解到作者管理着大量的资料库 。多年的不断锤鍊让作者在Oracle资料库领域有了丰富的经验 。在资料库最佳化领域 , 国内的书籍相对比较少 , 不论哪种资料库 , 比较多的都是类似工具手册一样 。写书是一件很不容易的事情 , 对作者的知识体系有着极高的要求 , 所以市面上流传的很多都是简单地将英文的文档翻译为中文的手册类的书籍 。作者将自己多年的经验用自己的语言和通俗的比喻给我们展示出来 , 带给人的是另一种体验 , 更亲切和容易理解 。除了常规的最佳化所涉及的範畴及Oracle 10g开始推出的AWR和ASH之外 , 作者还引出了10053这样的CBO相关的事件及不少的Hint方法 , 这些都将帮助我们非常深入地研究资料库的 SQL最佳化问题 。相信作者将亲身经历的体验深入浅出地展示给我们 , 能给Oracle资料库爱好者很好的帮助 。——冯春培(biti)当我们在2004年开始编辑出版Oracle技术书籍时 , 国内原创的作品还十分有限 , 现在 , 这种情况完全改变了 , 越来越多的技术爱好者开始总结、写作和分享 , Oracle技术出版物开始丰富起来 。在这个历程中 , ITPUB论坛一直推动着Oracle资料库技术的探讨和套用 , 作者alantany正是来自于ITPUB的一位技术专家 , 他将自己多年的实践与经验不断总结出来 , 和我们大家分享 , 这种精神与坚持值得我们尊敬 , 我乐于见到这样的作品问世 , 也期待作者能够坚持不懈 , 不断同我们分享他的知识与经验 。——盖国强(eygle)恩墨科技创始人 , Oracle ACE总监很欣喜地看到这几年来国内Oracle资料库技术原创书籍的蓬勃发展 , 对每一位能够坐下来并且将自己的经验写出来的作者我都报以深深的敬意 。对于Oracle资料库而言 , 也许在现在随着安装的日渐简易和默认性能的不断最佳化 , 一份默认的资料库安装 , 甚至是保证资料库可以正常运行都不再需要太多的专业知识 , 然而资料库最佳化仍然是非常专业的部分 , 这需要多年的实际工作经验积累 。可以说这本书的作者拥有得天独厚的工作环境 , 据我所知 , 他所参与管理的资料库无论是数量还是大小还是性能要求上在国内都可以排入前列 , 因此这是一本融合了真知灼见、可以指导实际工作的Oracle资料库性能最佳化书籍 。实际上我更希望读者们可以从后记开始读起 , 作者在后记中提及的所有观点都与我不谋而合 , 我同样相信无论是后记中这些观点还是全书中记录的技术知识 , 对于所有从业人员都有极大帮助 。——业内资深Oracle技术专家 , Oracle ACE张乐奕(Kamus)据我所知作者是中国独立撰写Oracle性能最佳化书籍的第一人 , 该书几乎涵概了Oracle性能最佳化的所有主题 , 在国内资料库性能最佳化领域的书籍中实属罕见 。——谢永生(warehouse) 资深Oracle培训讲师The fast and easy way to understanding the fundamentals of database performance tunning. If you’re tired of wading through huge technical manuals that drown you in jargon, making it difficult to decipher database performance issues, help has finally arrived. Simple enough for a beginner, but challenging enough for an advanced user, this book is your shortcut to mastering database perfperformance tunning.本书提供了一种理解Oracle性能最佳化的简单快捷的方法 。如果你已经被成堆的关于性能最佳化的技术手册淹没 , 身心疲惫 , 无从下手 , 那幺 , 这本书将帮你走出困境 。无论你是初学者 , 或是经验丰富的技术人员 , 你都将从这本书中获得一个掌握资料库性能最佳化的捷径 。——Mike ITG (Investment technology group) 资深软体工程师前言笔者在写这本书的时候 , 翻看了很多当前国内资料库方面的书籍 , 发现写性能最佳化的书并不多 , 特别是从工作经验和思路上来讨论性能方面的书 , 更是少之又少 , 这些因素让笔者思考要写这样一本书 , 这也算是这本书的一个定位 。在这本书里 , 你将会学到笔者在性能最佳化方面的一些思路和思考 , 一些故障处理的方法和原则 , 这些东西是笔者在实践中长期积累的心得体会 , 在笔者看来 , 掌握处理问题的方法和分析问题的思路在日常工作中显得更为重要 , 当你掌握了一些处理问题的基本思路之后 , 剩下的工作就是去Google或者阅读参考书了 。本书的一个特点是 , 凡是作者提到的观点 , 都儘可能地使用一些例子来证明它 , 这样看起来更有说服力一些 。为什幺会出现资料库的性能问题性能问题是最近几年来DBA们越来越关注的一个资料库技术领域 , 归根结底 , 造成它的原因是最近几年信息化进程的飞速发展 , 导致了很多系统的用户数量猛增 , 资料库中存储的数据量亦成几何级数激增 , 资料库作为数据处理和存储的最终受体 , 将必然直接承担这种变化导致的性能下降 。因此在人们对信息的依赖性越来越强的时候 , 对信息使用的效率也变得越来越关注 , 这样资料库的性能最佳化问题就日益严重地压在DBA的身上 。什幺时候需要对性能进行干预itpub是国内最早的一个专业讨论Oracle资料库技术的论坛 , 目前在国内资料库方面已经相当有知名度 , 笔者是2001年注册的 , 算是最早的会员之一 。目前仍然会经常上去看看 , 由于工作内容的关係 , 我比较关注性能方面的帖子 , 发现以下一类的帖子经常有很多 , 比如:1. 我是一个DBA , 我现在手头有一个资料库 , 我该从哪里进行性能最佳化呢?2. 这是我的资料库的一个Statspack , 我该如何最佳化?通常对于第一个问题 , 我是很少回答的 , 并不是不屑于回答 , 实在是没有办法回答 , 如果我回答说 , “你怎幺知道你的资料库需要最佳化?”又担心这种没有实际意义的回答带有说教意味 , 打击别人的积极性 , 所以通常看看而已 。实际上我是想说 , 对于一个DBA来讲 , 当你拿到一个资料库的时候 , 你首先需要做的是用最短的时间来了解一下跑在这个库上的是一个什幺系统 , 比如是线上事务(OLTP)系统还是线上分析(OLAP)系统 , 这对于你做出性能上的判断至关重要 , 如果连繫统都不了解 , 真不知道该如何去最佳化它 , 这就好比说 , 要设计一辆汽车 , 如果连用户对汽车的喜好都弄不清楚 , 如何能设计出一个取悦于用户的车呢? 对于第二个问题 , 像是比第一个具体一些 , 因为帖子作者已经提供了一个性能数据报告 , 但我仍然觉得通过这些数据没有办法準确地判断资料库是否有性能问题 。比如你是一个医生 , 我让一个人站在你的面前测心率 , 结果是50次/分钟 , 你是不是可以断定他有问题 , 需要安装心脏起搏器呢?实际上是不需要 , 因为我知道他是一个运动员 , 这样的心率是正常的 , 而医生不知道 , 所以他在做出诊断之前需要详细了解站在自己面前的应诊者的所有详细信息 , 来作为他做出判断的依据 。下面贴出一个来自于我使用过的资料库性能报告中的一部分:Buffer Nowait %: 100.00 Redo NoWait %: 99.99Buffer Hit %: 66.35 In-memory Sort %: 100.00Library Hit %: 99.63 Soft Parse %: 96.87Execute to Parse %: 83.99 Latch Hit %: 99.87Parse CPU to Parse Elapsd %:% Non-Parse CPU: 100.00许多人看到这个数据一定会大声说:“嘿 , 你的资料库性能好差 , buffer hit只有66% , 不知道是谁设计的这个系统 , 赶紧加大data buffer的尺寸!”诚然 , 这个数据的确显示资料库的记忆体命中率低得可怜 , 但是我想告诉你的是 , 这是一个线上分析(OLAP)系统的资料库 , 运行着很多非常大的查询 , 每个查询搜寻的範围都在上亿条记录以上 , 那这个结果不是很正常吗?我们需要把几亿条数据快取到记忆体里提供给这种每天可能只运行几次的查询吗?你可以同意 , 但是你的老闆是不会同意的 , 这样做的成本太高了 , 而且完全没有必要 , 因为它只是一个报表系统 , 对资料库的回响时间要求不高 , 所以我们当然可以让这个查询直接到磁碟上去搜寻数据 , 这也就是为什幺在这样的系统里 , buffer hit比例很低 , 但却是一个完全可以接受的值的原因 。笔者认为 , 只有资料库的性能已经影响到业务的正常工作或者用户已经无法满意于这种性能时 , 我们才应该考虑来最佳化它 , 对于绝大多数系统 , 资料库的安全和稳定才是最重要的 。FAST=TRUE?这是很多人追求的目标 , 它的意思是 , 在Oracle资料库中 , 通过调整性能参数的值 , 就可以让资料库运转得飞快 。实际上这不过是句玩笑 , 它本身是一句反话 , 却让很多人误入歧途 。我看到很多人 , 包括一些DBA , 凡涉及性能最佳化 , 必定谈及性能参数的修改 , 这实在是一个误区 , 他把性能参数值的修改对资料库性能的正面影响人为地放大了很多倍 , 实际上恰恰相反 , 很多时候修改这些参数产生的却是副作用 , 原因很简单 , Oracle给一个参数一个默认值是让它最大限度地适用于每个资料库 , 所以它几乎是最优的 , 当然 , 绝对有个别资料库需要适当调整 , 但我认为那是个例 , 并且 , 很多时候 , 修改这些参数的人 , 他们修改的理由并不是非常充分 , 不过是想修改一下看看运气而已 。本书的内容以下是本书各个章节的内容简介 。第1章 引起资料库性能问题的因素这一章主要讨论一些引起资料库性能问题的因素 , 包含了系统架构、软体代码、资料库设计、存储设计等话题 。第2章 锁和阻塞 在这一章里 , 将介绍Oracle资料库中锁的起因及由锁引起的性能问题—阻塞 , 并将讨论常见的几种阻塞的起因 。第3章 Latch和等待这一章讨论Latch , 它是Oracle中比锁更轻量级的一种串列机制 。热块或是SQL未绑定变数是最常见的导致Latch等待的原因 , 这一章将对这些成因及解决方法进行论述 。第4章 最佳化器最佳化器是SQL执行中最核心的部分 , 如果要分析SQL的性能 , 就不能不了解Oracle最佳化器的机制 , 这一章 , 我们就带你走进Oracle最佳化器—CBO的世界 。第5章 执行计画当我们分析一条SQL语句的性能时 , 最先做的事情大概就是分析它的执行计画了 。所以 , 如果连执行计画都看不懂 , 那SQL调优根本无从谈起 。在这一章 , 我们将讨论CBO(基于成本的最佳化器)执行计画相关的内容 。第6章 HintHint指通过人为的方式来约束SQL的执行计画 , 让它按照我们希望的方式来执行 , 以达到我们需要的目的—改善性能或者仅仅是试验以对比SQL的执行性能 。这一章将讨论Oracle资料库中的大多数Hint 。第7章 分析及动态採样对象採样分析是CBO(基于成本的最佳化器)的灵魂和核心 , CBO如果没有了对象的分析数据 , 就好像一个医生不使用病人的病历来确定病人的病一样危险—那是一种没有依据的、盲目的行为 。在这一章里 , 我们将详细讨论Oracle中和对象分析相关的内容 。第8章 并行执行这一章讨论一个和性能关係极大的技术—并行执行 。在OLAP(线上分析系统)或者是数据仓库系统中 , 并行技术使用得非常普遍 , 在合适的条件下 , 并行执行将会使SQL的执行效率大幅度提升 。第9章 变数绑定这一章将详细讨论一个在性能最佳化领域经常被谈到的话题—变数绑定 。那幺 , 是不是在任何时候变数绑定都是必需的呢?答案是否定的 , 在这一章中将给出答案 。第10章 SQL_TRACE事件SQL_TRACE和事件是会话级非常有用的两个工具 , 它们可以捕获会话当中SQL执行的详细信息 , 其中事件还可以获得SQL绑定变数的信息及发生的等待事件 。这一章将详细讨论这两个工具 。第11章 10053事件这一章将详细讨论10053事件 , 它是一个很有用处的工具 , 当你发现一条SQL总是选择错误的执行计画 , 而你又百思不得其解的时候 , 也许你应该去生成一个10053事件的trace档案 , 看看CBO究竟是如何做出这样的执行计画的 。第12章 性能视图和性能参数本章讨论一些Oracle资料库的性能视图和性能参数 。性能视图相对于SQL_TRACE来说 , 可以让我们更直接地获取一些性能数据 , 帮助我们判断资料库是否出现了性能问题 。而性能参数则让我们能够有机会选择一种最适合自己系统的某个参数值 , 以最大程度地满足当前系统的需要 。第13章 性能报告本章介绍了常用的几个性能分析工具及性能报告 , 包括AWR , STATSPACK和ASH , 其中以AWR性能报告作为重点介绍的对象 。本章以一个来自于现实生产资料库的AWR报告为题材 , 来讨论AWR报告的阅读方式 , 并最终判断出系统的性能所在;STATSPACK介绍了它的安装方法和如何生成报告;ASH也是以一个来自实际生产资料库的性能报告进行性能分析 。附录A 常见的等待事件这部分会列出一些常见的等待事件、引起它们的原因及一些内部的机制 , 可以作为大家在处理性能问题时的一个参考部分 。后记 关于资料库的学习方法这一部分是作者对如何学习Oracle的一个心得分享 , 对于Oracle初学者来说 , 正确的学习方法非常重要 , 它可以使你少走很多弯路 。如果初学者对于Oracle资料库的学习方法有兴趣 , 这部分可以作为本书的第一部分来阅读 。本书的读者对象1. 本书适合Oracle DBA或者和Oracle相关的开发人员 。2. 本书的读者需要有一定的Oracle基础 , 比如你应该知道什幺叫做表 , 什幺叫做索引等 。约定1. 本书示例使用的Oracle版本是10gr2 。2. 本书自创了一个术语—段对象 。这个词大家可能看着有那幺一点陌生 。作者的意思是 , 在Oracle资料库中 , 凡是分配了存储空间的 , 都称为段 , 所以段并不一定指的是表 , 也可能是表的一个分区 , 还可能是索引、大对象(LOB) , 或是IOT(索引表) , 物化视图等 。在书中有时候需要描述这些对象时 , 单独说某个表 , 或者一个索引 , 都不能完全概括 , 所以就统称为段对象 。3. 几个未作翻译的术语Extent , Latch和Bind peeking 。Extent:我看有些书翻译为“分区” , 说实话 , 在Oracle里面 , 一提到分区 , 可能99%以上的人会认为是partition , 还有的书翻译为“範围” , 这个就更让人匪夷所思 , 所以在书中这个单词就没有翻译 , 相信大家也懂 。Latch:有的书翻译成“闩” , 有的翻译成“锁存” , 我总觉得还是不翻译好 , 只要大家知道它是Oracle里一种类似于锁的保证一些操作串列化的技术就好了 。Bind peeking:翻译成“变数窥视”或是“变数窥探”都非常不对头 , 所以乾脆也不翻译 。本书的目的笔者从事Oracle DBA的工作已经超过10年 , 对资料库的理解也一直在改变 , 就目前来看 , 我觉得最难的东西不是技术本身 , 而是什幺时候该用什幺技术 。比如说要使用变数绑定 , 这非常容易 , 如果你不会 , Google一下 , 差不多几分钟时间你就会了 。可是 , 这个系统究竟该不该使用变数绑定 , 我想你Google一天或者一个星期也不一定有答案 。原因是每个系统都是独立的 , 都有自己的业务特点 , 这需要技术人员根据自己系统的业务特点来度身定做符合自己系统的技术特性 。让读者在每一个技术面前先停下来思考一下 , 这个技术究竟在什幺时候应该用 , 什幺时候不应该用 , 这是笔者写本书的最终目的 。致 谢感谢itpubt网站的创始人Tigerfish为本书写序 , 我一直对他怀有敬意 , 他在推动中国Oracle资料库的发展 上功不可没 。感谢biti(冯春培) , eygle(盖国强) , kamus(张乐奕)和warehouse(谢永生) , 他们都是国内顶尖的Oracle专家 , 感谢他们为本书写的精彩点评 。还有来自ITG的Mike , 感谢他的热心帮助和鼓励 。感谢ITPUB的王蓓小姐(贝贝) , 在本书的出版过程中 , 她做了大量的协调工作 , 才保证这本书的顺利出版 。感谢电子工业出版社的张月萍策划和高洪霞编辑 , 是她们的努力让本书更具可读性和完整性 。最后要感谢我的妻子tracy和儿子思墨 , 是他们让我一直努力工作 , 最终使本书得以问世 。后 记关于资料库的学习方法我想在这里聊一些资料库方面的学习方法 , 算是对自己这些年学习的一个总结 , 也可以给那些才进入Oracle领域的朋友们提供一些借鉴 。如果能够使你有所收穫的话 , 我将非常高兴 。1、英语和技术的关係从2005年开始到现在 , 我只看过三本关于资料库方面的印刷书籍 , 都是由一个人写的 , 他叫Tom Kyte , 业内都叫他Tom , 这三本书分别是:● 《Expert One-on-One Oracle》—《Oracle专家高级编程》● 《Expert_Oracle_Database_Architecture》—《Oracle 9i&10g编程艺术深入资料库体系结构 》● 《Effective Oracle by Design》—《Oracle高效设计》在买这三本书时 , 多少带有些许盲目性 , 因为崇拜书的作者 , 所以爱屋及乌地买了他写的所有的书 , 实际上我用在看这三本书上的时间并不多 , 更多的时候我都泡在这个网站上 , 就是这个网站 , 改变了我对问题的思考方式和学习方法 。对于大多数中国人来说 , 特别是做技术的人 , 英语成为很多人的软肋 , 这是一个无奈的局面 。我甚至听到很多人在说 , 为什幺非要学习英语 , 自己国家的话说好就行了 , 言辞之间颇鄙视那些学英语的“崇洋派们” 。本身这句话也还不错 , 作为自己国家的公民 , 学好自己国家的语言 , 自然是再好不过的事情 。但是很遗憾的是 , 我们说着自己的语言 , 却在用着别人的东西 。用别人的东西 , 却拒绝学习别人的语言 , 这看起来不免有些矛盾 。如果有一天世界上所有的商业软体都来自于中国 , 那幺我们再自豪地鄙视那些学习英语的人也不迟 。所以我必须要说的是 , 如果你想把计算机的技术学深一些 , 请你务必要学好英语 , 至少要做到能够熟练阅读英文文档的哑巴英语 , 如果再进一步 , 你能够使用英语和别人做书面的沟通(比如在论坛中或者E-mail中提出问题) , 那会更好一些 。在Asktom中有来自世界上很多国家的Oracle DBA或者开发人员在提出问题 , 我最初的时候只是浏览 , 后来尝试着用自己蹩脚的英语向Tom提出了一个问题 , 当收到Tom给出的回覆后 , 当时心情真是无比的激动 , 可喜之余不免又甚感悲哀 , 为什幺一个简单的提问 , 却让我欢喜至此呢?原因大概是 , 我们和他们之间沟通太少了 , 一个小小的问答 , 对我来说就像跨过一个巨大的鸿沟 。之后的日子里 , 就慢慢习惯了这种学习方式 , 当我有一个问题 , 在找遍了所有的Oracle官方文档 , Google和Metalink(一个Oracle公司的线上技术支持平台)未果之后 , 总是能够在这里得到一个确切的回答 , 它已经变成了我在技术上最后的依靠了 。我们不得不承认和接受一个现实 , 由于语言的沟壑 , 使我们学习起这些西方人发明的东西时 , 比他们自己的人要困难得多 , 比如对于一个软体 , 他们已经习惯于随手看一下软体的Manual(在线上帮助手册)来了解这个软体的用法 , 而我们却还在傻傻地等待着软体的汉化或者翻译过来的软体使用教程呢(市面上有很多书都是简单地将某个软体的manual翻译过来 , 然后出版) , 这种语言上的障碍使我们和他们在技术上有相当大的差距 , 这就是我在Asktom论坛上得到的最切身的感受 , 我们不仅在技术本身上 , 而且在一些思维方式上和他们也有明显的不同 , 这不是妄自菲薄 , 是我们中国IT从业人员的现状 , 我们只是封闭在自己的圈子里面做研究 , 却并不知道外面已经是个什幺样子了 。我希望大家能够把英语学好(我本人也在努力地学习中) , Oracle的官方文档全都是英文的 , metalink也全都是英文的 , asktom网站也都是英文的 , 如果我们能够熟练地使用这三个资源 , 那幺我们的技术水平必将上一个新的台阶 。2. 如何使用Oracle的官方文档如果你到现在为止 , 依然没有习惯于使用Oracle的官方文档的话(比如你惧怕英语阅读或者其他的原因) , 那幺你可能要考虑改变一下你的学习方式了 , 因为Oracle官方文档是Oracle公司提供的最权威的技术资料 , 它基本上包含了Oracle所有的技术 , 你在这里可以找到大多数你想找的东西 。也许那些看起来无比长的英文文档让你望而却步 , 至少我最初也是如此的 。但是随着自己尝试着去阅读了几篇之后 , 感觉情况并没有想像中的那幺坏 , 我居然读懂了一大半 。因此建议大家也要树立信心 , 要鼓起勇气来阅读英文文档 , 当你经常阅读时 , 你会发现其实它并没有你想的那幺难 , 你使用它的次数也多 , 你就越能接受和使用它 。这里简要地介绍几个使用频率比较高的官方文档 , 希望大家能够经常使用它们:《New Features Guide》一般称为新特性 , 当我们要使用一个新版本资料库的时候 , 我们应该先阅读这篇文档 。可以通过目录来浏览自己感兴趣的部分 。这篇文档主要介绍的就是当前这个版本的资料库较从前的版本有了哪些新的技术 , 这篇文档可以帮助你快速地了解一个新版本资料库的新特性 , 这比阅读那些具体的文档要省力得多 。《Concepts》当我们需要了解一个概念或者技术的具体含义或机制时 , 我们需要参考这篇文档 , 这里面基本上包含了所有Oracle相关的概念和技术 。比如什幺是表 , 什幺是索引 , 什幺是段等 。或者什幺是SGA , PGA等 。或者什幺是并发 , 事务等 。这是Oracle最重要的一篇文档 , 希望大家能够经常使用它 。《Reference》这里面主要包含了四部分内容:●初始化参数●视图●等待事件●统计信息这是我使用频率最高的文档之一 , 基本上每天都要打开几次 , 主要是查询一些视图及其栏位的解释及等待事件的解释 , 初始化参数的解释也会经常用到它 , 另外它还包含了一些统计项目 , 比如v$sesstat中的统计项目的解释就可以从这篇文档中找到 。《SQL Reference》这篇文档大家应该再熟悉不过了 , 当你记不住某条SQL的命令或者搞不清楚某条SQL的选项时 , 就需要从这篇文档中获取答案 , 它包含了Oracle所有的SQL语法 。《Administrator's Guide》这可以看做一本Oracle的实战手册 , 很多Oracle的技术和特性在这篇文档里都能够找到相应的示例 , 所以建议大家也经常使用它 。《PL/SQL Packages and Types Reference》如果你是一个喜欢使用Oracle提供的PL/SQL包工作的人 , 这篇文档你就应该经常使用到 , 它包含了Oracle提供的所有PL/SQL包 , 比如我们经常使用到的DBMS_STATS , 它是用来做分析用的包 , 包里面每个存储过程及参数在这篇文档中都有详细的说明 。《Performance Tuning Guide》如果你要学习Oracle资料库性能最佳化的话 , 这篇文档应该要好好读几遍 , 这里面包含了所有和性能最佳化相关的技术和方法 。3、学会思考我们不能机械地去学一些技术 , 那样只能让自己陷入一个由自己打造的万劫不复的技术深渊 , 无法自拔 , 因为技术是无止境的 , 而人的精力是有限的 , 这样只能使自己整天生活在一种压抑和苦闷当中 。我们要学会在技术面前理性的思考 , 比如对于一个新技术 , 流複製(Streams Replication) , 当我看到这个概念的时候 , 我告诉自己 , 这不过又是Oracle为用户提供的另外一种数据同步的机制而已 , 如果我们有这方面的需求 , 我会带着我们的需求去看相关的文档 , 以便确定这种技术是否适合我们的系统 , 否则 , 我可能只是做一些粗浅的了解 , 仅此而已 , 切勿把自己陷入到技术的泥潭当中去 。有目的地学习技术 , 做到学以致用 , 你就会过得很快乐 , 相反 , 你就会非常痛苦 , 儘管你每天都在学习 , 可是你是否想过 , 你一个人学习 , Oracle却有成千上万的开发人员在开发新版本的资料库和新的技术 , 你能学完吗?理性地学习 , 心平气和地学习 , 是做技术的人的一种生活态度 , 希望本书对大家在学习技术上会有所帮助 。目录第1章 引起资料库性能问题的因素 11.1 软体设计对资料库的影响 11.1.1 软体架构设计对资料库性能的影响 11.1.2 软体代码的编写对资料库性能的影响 21.2 资料库的设计 81.2.1 OLTP资料库 91.2.2 OLAP资料库 101.3 资料库的硬体设计 141.3.1 存储容量 151.3.2 存储的物理设计 161.3.3 数据的安全 171.4 小结 19第2章 锁和阻塞 202.1 关于锁 202.2 锁和阻塞 222.3 引起阻塞的其他情况 302.3.1 select for update 302.3.2 外键和索引 36第3章 Latch和等待 443.1 共享池中的Latch争用 453.2 数据缓冲池Latch争用 543.2.1 表数据块 543.2.2 索引数据块 593.2.3 索引根数据块 623.2.4 段头数据块 65第4章 最佳化器 664.1 RBO基于规则的最佳化器 664.2 CBO基于成本的最佳化器 69第5章 执行计画 855.1 Cardinality (基数) 855.2 SQL的执行计画 94第6章 Hint 1096.1 和最佳化器相关的Hint 1156.1.1 all_rows和first_rows(CBO) 1156.1.2 RULE Hint 1176.2 访问路径相关的Hint 1176.2.1 FULL Hint 118 6.2.2 INDEX Hint 1186.2.3 NO_INDEX Hint 1186.2.4 INDEX_DESC Hint 1196.2.5 INDEX_COMBINE Hint 1196.2.6 INDEX_FFS 1196.2.7 INDEX_JOIN 1206.2.8 INDEX_SS Hint 1206.3 表关联顺序的Hint 1256.3.1 LEADING Hint 1256.3.2 ORDERED Hint 1266.4 表关联操作的Hint 1276.4.1 USE_HASH , USE_NL和USE_MERGE Hint 1276.4.2 NO_USE_HASH Hint 1326.4.3 NO_USE_MERGE Hint 1336.4.4 NO_USE_NL Hint 1336.5 并行执行相关的Hint 1346.5.1 PARALLEL Hint 1346.5.2 NO_PARALLEL Hint 1346.6 其他方面的一些Hint 1356.6.1 APPEND Hint 1356.6.2 DYNAMIC_SAMPLING Hint 1356.6.3 DRIVING_SITE Hint 1366.6.4 CACHE Hint 1366.7 小结 136第7章 分析及动态採样 1387.1 直方图 1417.2 DBMS_STATS包 1477.3 动态採样 1767.3.1 什幺是动态採样 1767.3.2 动态採样的级别 1827.3.3 什幺时候使用动态採样? 1857.4 小结 185第8章 并行执行 1868.1 并行和OLAP系统 1878.2 并行处理的机制 1898.3 读懂一个并行处理的执行计画 1918.4 一个很常见的并行执行等待事件 1928.5 并行执行的适用範围 1948.5.1 并行查询 1948.5.2 并行DDL操作 1958.5.3 并行DML操作 2038.6 并行执行的设定 2108.6.1 并行相关的初始化参数 2108.6.2 并行度的设定 2118.7 直接载入 2138.7.1 直接载入和REDO 2168.7.2 直接载入和索引 2198.7.3 直接载入和并行 2218.7.4 直接载入和SQL*LOADER 226第9章 变数绑定 2329.1 什幺是变数绑定 , 为什幺要做变数绑定 232 9.2 为什幺说OLTP必须要求变数绑定而OLAP不应该绑定变数 2419.3 bind peaking 248第10章 SQL_TRACE和事件 25410.1 SQL_TRACE 25410.2 TKPROF工具 25610.3 事件 268第11章 10053事件 276第12章 性能视图和性能参数 29412.1 性能视图 29412.1.1 V$SQL 29512.1.2 V$SQL_SHARED_CURSOR 30012.1.3 v$session 30512.1.4 V$sessstat 30912.1.5 V$session_wait 31012.2 性能参数 31212.2.1 Cursor_sharing 31312.2.2 DB_FILE_MULTIBLOCK_READ_COUNT 32812.2.3 PGA_AGGREGATE_TARGET和SGA_TARGET 33412.2.4 OPTIMIZER_DYNAMIC_SAMPLING 334第13章 性能报告 33513.1 AWR性能报告 33513.1.1 生成AWR性能报告 33713.1.2 AWR性能报告分析 34213.2 Statspack性能报告 38613.2.1 Statspack的安装 38613.2.2 Statspack性能採集 39113.3 ASH性能报告 39413.3.1 生成ASH性能报告 39513.3.2 ASH性能报告分析 40513.4 小结 416附录A 常见的等待事件 417后记 关于资料库的学习方法 434
- 突发事件应对的财力保障机制:治理视角的分析
- 小米手机充不进去电是怎么回事 小米手机充不进去电的原因分析
- 经济法案例分析与实训
- 债法原理与实证分析
- 法律的性别分析
- UMTS-HSDPA系统的TCP性能
- 个人存在的问题原因分析 个人存在的问题原因分析怎样做
- 清华大学出版社图书 数值分析
- 火电厂设备精密点检及故障诊断案例分析
- 灌浆料和混凝土区别有哪些