出版时间:2010 年7月 出版社:人民邮电出版社 作者:白鳝 页数:338
Tag标签:无
内容概要
本书是一本介绍Oracle数据库优化方法的书,以一个实际的大型优化项目为原型,用日记的形式记录了一个优化小组的DBA 如何从纷繁的头绪中找到突破口,进而完成了一个看似不可能完成的任务的历程。在日记之间,作者还穿插了优化小技巧、每日点评等,总结了数据库优化常用的方法、工具和技巧。另外本书第一次详尽地披露了Oracle数据库内部存储结构,并公布了部分代码,对于有兴趣研究数据库内部存储结构或者编写dul工具的读者有一定的参考价值。 本书适合Oracle数据库管理开发人员阅读。
作者简介
白鳝,本名徐戟,国内资深Oracle数据库优化专家,从事Oracle数据库应用开发、性能优化工作超过15年。曾供职于DEC、赛格集团、长天集团、联想集团等国内外知名企业,担任过应用体系总监、技术总监等高级技术职务。曾主持开发了国内第一套联机实时计费系统,国内第一套三检合一的检验检疫综合业务系统。1999年起致力于Oracle数据库性能优化等方面的研究,参与了大量性能优化项目,积累了许多实际工作案例。2008年起,在博客上连载《DBA日记》,希望将自己在Oracle数据库应用领域的10多年的经验与广大读者分享。
书籍目录
5月11日 出发 今日点评 优化小技巧 性能 优化项目 优化小技巧 优化常用知识1:诊断事件 5月12日 开始工作和CPU瓶颈 今日点评 优化小技巧 数据库 优化的步骤 优化小技巧 按部就班是成功的关键 优化小技巧 优化常用知识2:常用诊断事件清单 5月13日 联席会议 今日点评 优化小技巧 优化流程 优化小技巧 转储文件内容1:数据文件 5月14日 聚会 优化小技巧 系统级 优化 优化小技巧 转储文件内容2:转储对象的段头 5月15日 业务支撑系统出问题了 今日点评 优化小技巧 索引监控 优化小技巧 性能 优化时常用的工具 优化小技巧 转储文件内容3:转储控制文件 5月18日 Top SQL 优化小技巧 查找Top SQL 优化小技巧 索引设计的一些建议 优化小技巧 什么是索引的集群因子 优化小技巧 转储文件内容4:转储控制文件 5月19日 南京的死锁问题 今日点评 优化小技巧 Oracle的死锁 优化小技巧 几个常用的与锁相关的脚本 5月20日 凌晨的邮件通知短信 今日点评 优化小技巧 /10028事件 优化小技巧 PL/SQL 优化工具profiler 5月22日 ODS系统和RAC 优化小技巧 以开放的心态做服务 优化小技巧 全局热块冲突 优化小技巧 PL/SQL中数据类型的性能 5月23日 实时ODS 今日点评 优化小技巧 ODS系统中Oracle数据库设计管理要点 优化小技巧 ODS系统中的开发要点 优化小技巧 集合类型的效率 5月24日 任务提前 今日点评 优化小技巧 占位操作与开关操作 优化小技巧 优化计划调整 优化小技巧 自动段存储空间管理1 5月25日 倾斜的索引字段 优化小技巧 倾斜字段的处理 优化小技巧 自动段存储空间管理2 5月26日 优化方案 优化小技巧 优化中的排队效应 优化小技巧 DB Cache调整方案如何制订 优化小技巧 自动段存储空间管理3 5月27日 无奈 今日点评 优化小技巧 临时表空间和排序 优化小技巧 undo表空间和回滚段 5月28日 BBED的妙用 今日点评 优化小技巧 如何启用BBED 优化小技巧 模拟ORA-8102及处理过程 优化小技巧 如何计算数据块中某个字段的位置 优化小技巧 如何计算索引块中某个字段的位置 优化小技巧 自己动手写一个dul 优化小技巧 bootstrap$的访问 优化小技巧 unloadBlock函数 优化小技巧 unloadRow函数 5月29日 突破困局 优化小技巧 查找“热的”缓冲区的常用脚本 优化小技巧 什么时候需要使用多缓冲 优化小技巧 AIX操作系统 优化要点 5月30日 账务处理 今日点评 优化小技巧 表访问的方式 5月31日 电脑坏了 今日点评 优化小技巧 通过OEM录像采集数据 优化小技巧 调整游标相关参数 6月1日 ORA-4030和内存泄漏 今日点评 优化小技巧 如何分析ORA-4030 6月2日 优化方案 今日点评 优化小技巧 一个提供参考的 优化方案 优化小技巧 游标的共享 6月3日 拆分大型SQL 优化小技巧 拆分复杂SQL 6月4日 TNS-12535 今日点评 优化小技巧 防火墙和SQL*Net 优化小技巧 跟踪SQL*Net 6月5日 休息时总是最忙的 今日点评 优化小技巧 使用hanganalyze 优化小技巧 重做日志文件 优化的要点 6月6日 实施 优化 今日点评 优化小技巧 升级维护窗口的确定 优化小技巧 回退预案的作用 6月7日 突发事件 今日点评 优化小技巧 使用HINT 优化SQL 6月10日 使用自动采样比例引发的故障 今日点评 优化小技巧 关于表分析比例的判定 优化小技巧 AIX下使用vmstat分析I/O问题的小技巧 6月11日 阶段总结 今日点评 优化小技巧 STATSPACK报告在 优化项目中的作用 优化小技巧 STATSPACK报告头的解读 6月12日 阴谋 今日点评 优化小技巧 分析STATSPACK的负载数据 优化小技巧 重要的命中率指标 6月13日 演戏 今日点评 优化小技巧 Top 事件 优化小技巧 常见事件清单 6月14日 转机 今日点评 优化小技巧 STATSPACK报告分析之DB Cache1 优化小技巧 STATSPACK报告分析之PGA 6月15日 青岛 今日点评 优化小技巧 如何 优化闩锁 6月16日 SQL 优化效果 今日点评 优化小技巧 如何转储数据块 优化小技巧 通过树转储来分析索引碎片 6月17日 完美的效果 今日点评 优化小技巧 I/O系统 优化的经验与体会 优化小技巧 STATSPACK报告之I/O 问题分析 6月18日 准备收工 优化小技巧 STATSPACK报告分析之DB Cache2 6月19日 ORA-1591 今日点评 6月20日 好奇心惹的祸 优化小技巧 STATSPACK报告分析之共享池分析 7月20日 重回沈阳 优化小技巧 如何评估 优化效果 优化小技巧 STATSPACK报告分析之undo分析 优化小技巧 STATSPACK报告分析之锁分析 7月21日 课堂风波 优化小技巧 平均事务响应时间的计算 优化小技巧 STATSPACK报告分析之闩锁分析 7月22日 世博园一日游和心想事成 优化小技巧 STATSPACK报告分析之Top对象 优化小技巧 STATSPACK报告分析之Top SQL 7月23日 漫长的一夜 优化小技巧 本案例的启示 后记,也算结束语
章节摘录
在Metalink文档285270.1里对死锁检测做了一个简要的介绍,看过这份文档,再参考John的提示,仔细想想,在做死锁检测的时候,确实是必须持有parent enqueue hash chains闩锁的,因为死锁检测(DLD,DeadLock Detection)需要通过对每个资源做一个检查,才可能发现哪些资源出现了死锁。而如果对每个资源都进行一次死锁检查,那么开销就太大了,因为在一个大型系统中同时有几十万甚至上百万个资源都是很正常的。每个资源上面都有三条链:一条是持有者链,链接了所有持有这个资源的锁的情况;一条是等待转换状态链,链接了所有等待转换锁状态的请求;还有一条是等待锁定链,链接了所有等待锁的请求。如果不出现死锁,那么这三条链和资源的状态在很短的时间内肯定会发生变化,而死锁出现时,相关的资源肯定在很长时间里都不会发生变化。,因此在检测死锁时,只需要对那些从上回检查后状态一直没有发生过变化的资源进行检查就可以发现死锁了。为了获取这些数据的一致性视图,在做死锁检测时就必须持有这个门锁。死锁检测本身很快,所以一般情况下不会引起问题。不过,如果出现了死锁,要做死锁情况转储时就可能会出问题。系统状态转储或者进程状态转储被挂住的可能性也是存在的,这很可能是由于另外一个bug引起的,无论哪个bug,关闭转储应该可以解决问题。由于在进程状态转储时,死锁检测会话会持有parent enqueue hash chains父闩锁,所以在这个时候,任何需要申请锁资源(包括内部锁)的操作都需要等待。由于游标分析需要申请library cache lock,所以在这种情况下,游标分析无法进行。部分会话会报ORA-600 kksscl-inf-inl-loop故障。看看手机,已经是早上6点多钟,澳大利亚已经是早上8点多了,Ben可能已经起床。Ben有早上上网阅读早新闻的习惯,希望能碰到他,和他聊聊这个问题。打开Yahoo Pager,发现:Ben已经在线了。Ben听了问题的叙述后,也立即说这是Oracle的一个顽疾,虽然出了很多补丁,但是还有一些问题没有解决。.Ben在Oracle工作快10年了,作为澳洲Oracle的救火队员,他处理过10多个类似的案例,因此他十分肯定地说我的猜测是对的。同时,我从Ben那里拿到了一分关于bug2235386的资料,这份资料比我在Metalink上看到的要详细得多。从中,我有了十分惊人的发现。bug 2235386里面详细介绍了ORA.60导致系统挂住的情况,里面的内容与我和John的想法基本一致,但是patch 2235386并没有解决这个问题。要解决这个问题,需要在做进程状态转储之前最好释放闩锁,而这是不可能的,因为这样会导致进程状态转储或者系统状态转储的信息不准确。因此在这个补丁里引入了10027和10028两个事件,通过设置这两个事件来开启或关闭进程状态转储或者系统状态转储。原来如此,patch 2235386并不能解决问题,而仅仅提供了解决问题的方法,因此Oracle的工程师仅仅是打了补丁,而没有解决问题,必须打完补丁后,通过设置10028事件关闭系统状态转储,才能解决这个问题。在死锁出现时,进程状态转储对于客户来说是没有多大用途的,因此关闭后对客户分析问题影响不大。忙完这些已经快9点了,虽然昨晚一夜没怎么睡,不过现在一点都没有觉得困。上午一上班,我就和李工通了电话,在电话里,把我的发现和他进行了沟通。李工也基本认同了我的分析,决定先找一个本地网来做做实验,如果能够解决问题,再全面推广。原本定于今天下午的关于RAC的交流,由于他们有事,押到明天进行。看样子今天可以休息一下了。
后记
到今天,这本书也就结束了,其中介绍了一个实际的优化案例。有些读者可能会感到里面的内容有些乱,也有些人可能感觉抓不到头脑,不知道我想表达些什么。确实,这本书如果当做小说来看,未免太枯燥;如果当做纪实文学来看,又不能弘扬主旋律;作为技术书来看,里面又缺乏有分量的技术。实际上,我在刚开始就说过,本书不是一本介绍Oracle技术的书,因此读者并不需要像读技术书那样一字一句地去抠一些字眼。通过这本书,老自给大家展现了一个优化项目,并且教给大家一些系统优化的方法和技巧,特别是在优化项目中如何控制项目,如何让整个优化工作按照自己的预想进行。粗粗看一遍本书,可能会感觉一个优化项目里好像也没有什么,实际上如果你能够仔细回味一下,或者把本书仔细翻阅两遍,你会发现在平淡的工作中还隐藏了很多内容。实际上,优化项目里面并没有十分高深的技术手段。本书中,老白和老于他们采取的所有技术手段都是大家以往学习过的,都是一些耳熟能详的东西。没有做过优化项目的人,可能觉得做一个优化项目无从人手。也有一些人可能感觉优化项目里使用的技术不过如此,优化实际上也不是什么很难的事情,不过如果你真的去做一个优化项目,就会感觉好多地方都无法把握。确实是这样,优化项目中最难的是准确的判断,准确的把握。在前期的数据采集和分析阶段,你真的已经了解了系统的现状和主要问题吗?实际上,要回答这个问题并不简单,这需要很丰富的经验。如果你对数据库的原理融会贯通了,那么很容易从数据库运行的原理去考虑问题,也就很容易找到目前系统存在什么问题。否则,你可能无法抓住主要问题,真要是这样,这次优化基本上就报销了。其实本书各部分的内容都是我精心安排的,哪怕是一些好像没有什么技术内容的章节。比如“电脑坏了”那一节讲的虽然是我的电脑坏掉了,如何去修理,如何通过小齐从HP沈阳办事处借了一台电脑。实际上,这一节的安装软件那方面的内容,介绍了一个DBA的电脑里最常用的工具软件。我虽然不是一个唯工具论者,但是我认为工欲善其事,必先利其器。适当地使用工具,合理地使用工具是十分重要的。一个只会使用SQL*Plus的DBA并不一定就是一名优秀的DBA。“世博园一日游”那一节实际上是要向读者说明DBA和客户沟通时应该掌握一定的技巧,做DBA不能光有技术,而且需要通过一些小手段,让客户对你产生信任,以及出现危机时,如何去化解和扭转。对于每个DBA或者想成为DBA的读者来说,DBA日记从另外一个侧面介绍了一名DBA应该如何去工作,在DBA工作和生活中有哪些需要注意的地方。
媒体关注与评论
“我知道很多DBA都有自己收藏的一本秘籍,包括处理各种Oracle问题的必杀术,其中关于性能调优的特别多。可惜这里面有很多道听途说的成分,或者知其然而不知其所以然。反观此书,有很多活学活用的例子;对于各种技巧的适用范围,也尽量阐述清楚。从最后成书的内容看,作者还是比较负责的。书中的指令,大都经过上机验证。” ——Ben Wang,澳大利亚知名Oracle技术高手
编辑推荐
《Oracle优化日记:一个金牌DBA的故事》以作者亲身经历的一个大型优化项目为原型,用日记的形式讲述了项目实施的全过程。生动曲折的项目故事,扣人心弦的尖峰时刻,一一再现了几个经验丰富的老DBA分析数据库性能问题时的真实场景。书中不仅剖析了优化过程,还展现了在优化项目中处理纷繁的关系的技巧和方法。伴随精彩的故事情节。作者还介绍了DBA常用的优化技巧,使读者在大呼过瘾的同时。亦能分享到金牌DBA的宝贵经验。数据库优化一直是DBA感到十分高深的问题,很多DBA学习了大量优化技术,参加了大量培训,但是仍然感觉在实际工作中无从入手。实际上,在数据库优化工作中,比技术更为重要的是方法。金牌DBA精彩纷呈的经历,86个优化技巧活学活用,培养多种能力,保障职场成功,恩墨科技创始人、Oracle ACE Director盖国强倾力推荐。
图书封面
图书标签Tags
无
评论、评分、阅读与下载