Oracle优化日记

Oracle优化日记

一个金牌DBA的故事

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
8.232 评价豆瓣读书
免费试读

作品简介

本书是一本介绍Oracle数据库优化方法的书,以一个实际的大型优化项目为原型,用日记的形式记录了一个优化小组的DBA 如何从纷繁的头绪中找到突破口,进而完成了一个看似不可能完成的任务的历程。在日记之间,作者还穿插了优化小技巧、每日点评等,总结了数据库优化常用的方法、工具和技巧。

本书第一次详尽地披露了Oracle数据库内部存储结构,并公布了部分代码,对于有兴趣研究数据库内部存储结构或者编写dul工具的读者有一定的参考价值。本书适合Oracle数据库管理开发人员阅读。

白鳝,本名徐戟,国内资深Oracle数据库优化专家,从事Oracle数据库应用开发、性能优化工作超过15年。曾供职于DEC、赛格集团、长天集团、联想集团等国内外知名企业,担任过应用体系总监、技术总监等高级技术职务。曾主持开发了国内第一套联机实时计费系统,国内第一套三检合一的检验检疫综合业务系统。1999年起致力于Oracle数据库性能优化等方面的研究,参与了大量性能优化项目,积累了许多实际工作案例。2008年起,在博客上连载《DBA日记》,希望将自己在Oracle数据库应用领域的10多年的经验与广大读者分享。

作品目录

  1. Oracle优化日记
  2. 5月11日 出 发
  3. 今日点评
  4. 性能优化项目
  5. 优化常用知识1:诊断事件
  6. 5月12日 开始工作和CPU瓶颈
  7. 今日点评
  8. 数据库优化的步骤
  9. 按部就班是成功的关键
  10. 优化常用知识2:常用诊断事件清单
  11. 5月13日 联席会议
  12. 今日点评
  13. 优化流程
  14. 转储文件内容1:数据文件
  15. 5月14日 聚 会
  16. 系统级优化
  17. 转储文件内容2:转储对象的段头
  18. 5月15日 业务支撑系统出问题了
  19. 今日点评
  20. 索引监控
  21. 性能优化时常用的工具
  22. 转储文件内容3:转储控制文件
  23. 5月18日 Top SQL
  24. 查找Top SQL
  25. 索引设计的一些建议
  26. 什么是索引的集群因子
  27. 转储文件内容4:转储控制文件
  28. 5月19日 南京的死锁问题
  29. 今日点评
  30. Oracle的死锁
  31. 几个常用的与锁相关的脚本
  32. 5月20日 凌晨的邮件通知短信
  33. 今日点评
  34. 10027/10028事件
  35. PL/SQL优化工具profiler
  36. 5月22日 ODS系统和RAC
  37. 以开放的心态做服务
  38. 全局热块冲突
  39. PL/SQL中数据类型的性能
  40. 5月23日 实时ODS
  41. 今日点评
  42. ODS系统中Oracle数据库设计管理要点
  43. ODS系统中的开发要点
  44. 集合类型的效率
  45. 5月24日 任务提前
  46. 今日点评
  47. 占位操作与开关操作
  48. 优化计划调整
  49. 自动段存储空间管理1
  50. 5月25日 倾斜的索引字段
  51. 倾斜字段的处理
  52. 自动段存储空间管理2
  53. 5月26日 优化方案
  54. 优化中的排队效应
  55. DB Cache调整方案如何制订
  56. 自动段存储空间管理3
  57. 5月27日 无 奈
  58. 今日点评
  59. 临时表空间和排序
  60. undo表空间和回滚段
  61. 5月28日 BBED的妙用
  62. 今日点评
  63. 如何启用BBED
  64. 模拟ORA-8102及处理过程
  65. 如何计算数据块中某个字段的位置
  66. 如何计算索引块中某个字段的位置
  67. 自己动手写一个dul
  68. bootstrap$的访问
  69. unloadBlock函数
  70. unloadRow函数
  71. 5月29日 突破困局
  72. 查找“热的”缓冲区的常用脚本
  73. 什么时候需要使用多缓冲
  74. AIX操作系统优化要点
  75. 5月30日 账务处理
  76. 今日点评
  77. 表访问的方式
  78. 5月31日 电脑坏了
  79. 今日点评
  80. 通过OEM录像采集数据
  81. 调整游标相关参数
  82. 6月1日 ORA-4030和内存泄漏
  83. 今日点评
  84. 如何分析ORA-4030
  85. 6月2日 优化方案
  86. 今日点评
  87. 一个提供参考的优化方案
  88. 游标的共享
  89. 6月3日 拆分大型SQL
  90. 拆分复杂SQL
  91. 6月4日 TNS-12535
  92. 今日点评
  93. 防火墙和SQL*Net
  94. 跟踪SQL*Net
  95. 6月5日 休息时总是最忙的
  96. 今日点评
  97. 使用hanganalyze
  98. 重做日志文件优化的要点
  99. 6月6日 实施优化
  100. 今日点评
  101. 升级维护窗口的确定
  102. 回退预案的作用
  103. 6月7日 突发事件
  104. 今日点评
  105. 使用HINT优化SQL
  106. 6月10日 使用自动采样比例引发的故障
  107. 今日点评
  108. 关于表分析比例的判定
  109. AIX下使用vmstat分析I/O问题的小技巧
  110. 6月11日 阶段总结
  111. 今日点评
  112. STATSPACK报告在优化项目中的作用
  113. STATSPACK报告头的解读
  114. 6月12日 阴 谋
  115. 今日点评
  116. 分析STATSPACK的负载数据
  117. 重要的命中率指标
  118. 6月13日 演 戏
  119. 今日点评
  120. Top 5事件
  121. 常见事件清单
  122. 6月14日 转 机
  123. 今日点评
  124. STATSPACK报告分析之DB Cache1
  125. STATSPACK报告分析之PGA
  126. 6月15日 青 岛
  127. 今日点评
  128. 如何优化闩锁
  129. 6月16日 SQL优化效果
  130. 今日点评
  131. 如何转储数据块
  132. 通过树转储来分析索引碎片
  133. 6月17日 完美的效果
  134. 今日点评
  135. I/O系统优化的经验与体会
  136. STATSPACK报告之I/O问题分析
  137. 6月18日 准备收工
  138. STATSPACK报告分析之DB Cache2
  139. 6月19日 ORA-1591
  140. 今日点评
  141. 6月20日 好奇心惹的祸
  142. STATSPACK报告分析之共享池分析
  143. 7月20日 重回沈阳
  144. 如何评估优化效果
  145. STATSPACK报告分析之undo分析
  146. STATSPACK报告分析之锁分析
  147. 7月21日 课堂风波
  148. 平均事务响应时间的计算
  149. STATSPACK报告分析之闩锁分析
  150. 7月22日 世博园一日游和心想事成
  151. STATSPACK报告分析之Top对象
  152. STATSPACK报告分析之Top SQL
  153. 7月23日 漫长的一夜
  154. 本案例的启示
  155. 后记,也算结束语
载入中

热门划线

  1. http://ixora.com.au3 人
  2. Oracle的基本概念和体系,知道了SGA、PGA和UGA等基本概念,2 人
  3. http://www.Oraclefans.cn2 人
  4. 。果断不仅仅是一种性格,这种情况下果断是基于一定的条件的,因为我知道哪怕这个补丁不能解决问题,也是没有副作用的。2 人
  5. 一个有责任心的人,哪怕技术水平稍微差一点,也不容易出大问题。而一名缺乏责任心的DBA,不亚于一颗定时炸弹。能把工作当成自己事情的人是肯定能够成为一名好的DBA的。2 人
  6. 有一次我正在超市里买东西,公司里的一个小伙子打电话给我,说发现客户有个数据库的CPU 100%了,从Top上看到的都是Oracle进程占用了大量的CPU资源。那个小伙子是今年刚刚参加工作的毕业生,虽然几个月前通过了OCP考试,但临场应变能力以及知识积累方面还存在很多不足,对于日常的维护工作基本能够胜任,碰到一些紧急故障还是感到无从下手。我就问他做了什么分析,他说从v$session_wait里发现大量的latch free等待,由于是Oracle 8i的数据库,等待事件并没有明确是什么闩锁。我问他知不知道怎么通过latch free的参数找到是哪个闩锁,他说好像以前看到过,记不起来了。我说查看一下P1、P2和P3参数的说明就知道怎么做了,而且现在需要做一个STATSPACK报告,我怀疑这种情况下出现latch free等待,很可能是cache buffers chains等待。几分钟后,他打电话告诉我,确实是cache buffers chains等待,是通过P2参数找到的。我告诉他cache buffers chains一般来说是由于大量的缓冲区获取引起的,我问他下一步该怎么做?他说:“是不是可以杀掉CPU消耗比较高的那几个进程?”我说:“可以,不过首先要搞清楚是哪些进程,这些进程是前台的还是后台的,是做什么的?”后来他发现有个SNP1进程CPU开销很大,我问SNP1是什么进程,知道吗?他说以前好像学过,现在也记不起来了。我告诉他,是一个和Job相关的进程。后来他和客户确认了这个Job可以暂停,晚上再跑,就把这个进程杀了。在杀掉进程后,CPU还是十分高,又有一批高开销的进程跑了出来,而且这些进程经常会变。他又打电话来问我,我说这时候应该先看看STATSPACK报告,关键是注意缓冲区获取排在前几位的SQL。打完这个电话后很久,他也没有再给我打电话,后来中午吃饭时他给我打了一个电话说这个故障解决了,在STATSPACK报告中看到了一个SQL,在不到10分钟的时间里执行了13 000多次,消耗了95%的缓冲区获取,后来客户发现新上的一个模块里面有个循环写错了,写成了死循环,把那个应用停了,问题就解决了。我鼓励了他一番,然后告诉他,希望他根据这个案例,整理一些知识点:一是碰到CPU瓶颈时该如何处理;二是latch free问题如何分析;三是每个后台进程是干什么的。因为这3个知识点是他今天解决这个问题的关键,也正是他暴露出来不足的地方。今后遇到类似的问题,如果这3个知识点没有掌握,还是两眼一抹黑。2 人
  7. 事件可以通过ALTER SESSION|SYSTEM命令来激活和去除激活,语法如下:事件可以在参数文件中设置,也可以在实例级或者会话级设置。可以通过ALTER SYSTEM|SESSION命令直接设置,也可以通过oradebug或者sys.dbms_system.set_ev(…)存储过程进行设置。2 人
  8. 制订优化目标。任何优化都不可能是绝对彻底的优化,都只是针对目前系统状态的一种资源重组。2 人
  9. 开发人员的回答让我感到震惊,他说:“我不知道什么叫复合索引,我为每个字段都建了索引,Oracle就应该能用到索引了。”从他的回答上我感到他根本不理解索引的概念2 人
  10. 其中大多数SQL都是超过5个表连接的超大型SQL,工作量之大,前所未有。2 人

喜欢这本书的人也喜欢