編輯推薦
《品悟性能最佳化》以資料庫性能調優作為切入點,通過對案例故事實景的生動形象論述,介紹了資料庫建設和運維最佳化的方法論,敘述議論結合,管理技術兼備,語言風趣流暢。作者專業技術積累深厚,善於總結提煉升華,簡潔生動描述複雜問題背後“難以忽視的真相”。
作為老朋友,翻閱此書,能感受到一個躍然紙上、鮮活而立體的作者:一位對先進IT技術充滿激情、渴望和執著追求的技術專家;一位對客戶富有責任心、稱職得有些“越位”的IT服務人員;一位真性情,善於將技術觀點寓於生動故事中的傳道者。
第一次看到枯燥的Oracle技術能以大量案例形式,以輕鬆、調侃、詼諧的語氣寫成這樣,很有意思,也值得一看。還有與作者的好多同感:在IT系統中,技術與管理並重;套用設計、開發其實對IT系統質量影響最大;基礎技術的運用很重要……
內容簡介
在當前高速發展的資訊時代,IT系統性能問題一直是橫亘在廣大IT人士面前的一座難以逾越的大山。在資料庫市場占有率最高的Oracle性能最佳化技術,更是業界各層次人士所關注的焦點技術之一。本書基於作者多年在此領域耕耘的經驗和體會,遵循Oracle公司總結的性能最佳化方法論,從需求分析、架構設計、資料庫設計、套用設計和開發、運行維護等軟體工程全生命周期的整體高度,去描述性能問題和相關最佳化技術,特別是強調了基礎技術合理運用的重要性。本書貫穿了作者多年在國內銀行、電信、政府等行業所經歷過的大量案例,通過案例佐證相關技術的運用是本書一大特色。性能問題不僅僅是技術問題,性能管理甚至重於最佳化技術本身。通過性能最佳化這樣精細、縝密的工作,不僅能看到事物的本質和規律,更能讓有心者對這個大千世界充滿感慨。以技術為平台,以輕鬆、調侃方式抒發作者對IT行業、社會的感悟,也是本書的鮮明風格。
作者簡介
羅敏,80年代畢業於武漢大學計算機科學系,國防科學技術大學計算機學院獲得碩士學位。自1988年開始Oracle技術的研究和套用開發工作,特別是在Oracle中國公司的10年時間裡,分別在顧問諮詢部、技術服務部擔任資深技術顧問。在銀行、電信、政府等行業和部門參與了多個大型IT系統的建設,提供了體系結構設計、資料庫設計、套用開發設計指導、性能最佳化、數據備份恢復、容災系統建設、數據倉庫系統建設、資料庫安全性等領域的諮詢和技術支持服務,並為國內主要軟體開發商和集成商進行過多場Oracle高級技?套用培訓和交流活動。
目錄
第1章 從兩個案例開始 1
1.1 關於案例的說明 2
1.2 體驗日本人工作風格 2
1.2.1 問題現象及解決過程 2
1.2.2 日本人嚴謹、細緻的工作風格 3
1.2.3 日本人的it投入觀 3
1.2.4 該系統的總體感覺 4
1.2.5 在日本企業暖意洋洋的一幕 4
1.2.6 也談強國夢 5
1.3 國內某大型銀行故障的解決 5
1.3.1 天塌下來一樣的故障 5
1.3.2 故障原因其實很簡單 6
1.3.3 故障的啟示 7
1.3.4 2010年銀行案例的進一步感悟 8
第2章Oracle資料庫性能最佳化方法論 9
2.1 關於性能最佳化的誤區 10
2.1.1 “你調了哪些參數” 10
2.1.2 “性能最佳化主要是dba和系統管理員的工作” 10
2.1.3 “開發階段無須太多考慮性能問題” 11
.2.1.4 “最佳化sql,就是如何編寫sql” 11
2.1.5 “多表連線性能太差” 11
2.1.6 “cpu利用率越低越好” 12
2.1.7 “大記憶體能解決性能問題” 12
2.1.8 “性能分析就是分析低層細節” 13
2.2 性能最佳化過程——自頂向下 13
2.2.1 為時已晚 13
2.2.2 什麼叫自頂向下方法論 13
2.2.3 體驗方法論 15
2.3 高質量it系統的正確認識 15
2.3.1 高質量it系統的目標 15
2.3.2 目標的綜合平衡 16
2.3.3 你只管進,不管出啊 16
2.4 20/80規則 17
2.4.1 性能最佳化中也有20/80規則 17
2.4.2 用數據詮釋20/80規則 18
2.5 性能最佳化過程——自底向上 19
2.5.1 什麼叫自底向上方法論? 19
2.5.2 客戶要給我上課 20
2.6 性能最佳化中的角色分工 20
2.6.1 老外的角色分工 20
2.6.2 國內的角色分工 21
2.7 套用開發指導思想 22
2.7.1 管理重於技術 22
2.7.2 我聽後,開心死了 22
2.8 合理運用技術的重要性 22
2.8.1在線上事務處理系統(oltp)和決策支持系統(olap) 22
2.8.2 “你們oracle給我們出一個開發規範和指南吧” 23
2.8.3 4分鐘如何最佳化到1秒鐘 24
第3章 性能最佳化分析基本工具的使用 29
3.1 性能最佳化中的量化分析 30
3.1.1隔靴抓癢30
3.1.2 sql語句到底是怎么執行的 30
3.1.3 性能分析都分析哪些量化指標 32
3.2 工欲善其事,必先利其器 32
3.2.1 sql量化分析和最佳化工具 32
3.2.2 oracle有大量實用的小工具和命令 33
3.3 sql語句到底是怎么被執行的 34
3.3.1 最經典的執行計畫分析工具 34
3.3.2 這種老掉牙的東西,還用啊 34
3.3.3 10g新功能:dbms_xplan 34
3.4 如何配套使用sql*trace和tkprof 35
3.4.1 又一對老古董 35
3.4.2 其實功能非常強 35
3.4.3 報告分析比如何產生報告更重要 37
3.5 最常用的工具:autotrace 37
3.6 一個洋“忽悠”的故事 42
3.6.1 洋和尚到中國來念梵文了 42
3.6.2 洋大“忽悠”啊 43
3.7 性能最佳化與“三個代表” 43
3.7.1 重溫“三個代表” 43
3.7.2 案例背景 43
3.7.3 自底向上方法論的運用 44
3.7.4 關鍵套用問題的解決 45
3.7.5 詮釋“三個代表” 47
第4章 基本索引的使用 49
4.1 索引既簡單又複雜 50
4.1.1 關於索引的需求 50
4.1.2 索引其實好簡單 50
4.1.3 索引其實好難 50
4.1.4 想做個懂Oracle索引的專家,難上加難 51
4.2 索引設計基本建議 52
4.2.1 oracle索引長什麼樣 52
4.2.2 b*樹單欄位索引設計建議 53
4.2.3 一招鮮,吃遍天 53
4.3 如何避免索引被抑制 56
4.3.1 無從下手,鬱悶至極! 56
4.3.2 幸虧父母都是數學老師 57
4.3.3 慎用自定義函式 58
4.3.4 關於函式索引使用的建議 58
4.3.5 其實是資料庫設計問題 59
4.4 一把雙刃劍:複合索引 59
4.4.1 複合索引的重要性 59
4.4.2 我如何“戲弄”客戶 60
4.4.3 複合索引原理和設計建議 61
4.4.4 it系統是面向客戶的,不是給領導看的 63
4.5 一個既簡單又複雜的故事 64
4.5.1 女兒說我吹牛了 64
4.5.2 故事上集 65
4.5.3 故事中集 66
4.5.4 故事下集 66
4.6 如何進行索引監控分析和最佳化 68
4.6.1 為什麼索引i/o那么高 68
4.6.2 別亂建索引 68
4.6.3 如何發現多餘的索引 69
4.6.4 如何進行索引碎片分析和整理 70
第5章 為套用軟體設計更好的性能和可擴展性 71
5.1 基本概念和原理 72
5.1.1 本章標題有點大吧 72
5.1.2 一個屢見不鮮的錯誤 72
5.1.3 解剖sql語句執行過程 73
5.2 語句共享性原理 74
5.2.1 再說在線上事務處理系統(oltp)
和決策支持系統(olap) 74
5.2.2 如何實現語句共享化 74
5.2.3 開發人員永遠比oracle聰明 75
5.2.4 技術服務工作,越做膽子越小 75
5.2.5 如何量化評估語句共享性 76
5.3 回到日本企業案例 77
5.3.1 深入分析技術原因 77
5.3.2 被日本人較真的滋味其實不好受 79
5.4 語句共享性的深入分析 79
5.4.1 語句共享性和查詢統計系統的關係 79
5.4.2 語句共享性與擴展性的關係 80
第6章 如何提高排序、表連線性能 81
6.1 如何提高排序性能 82
6.1.1 能不排序就不排序——廢話一句 82
6.1.2 查詢欠費最高的前100名手機客戶 83
6.1.3 痛心疾首的一刻 84
6.1.4 ibm和oracle:亦敵亦友 88
6.2 oracle表連線技術和套用 89
6.2.1 資料庫精髓之一:表連線 89
6.2.2 最經典、最常用的表連線技術——嵌套循環 90
6.2.3 嵌套循環連線與索引 91
6.2.4 嵌套循環連線的套用場景及效率 93
6.2.5 適合於大批量數據處理的連線技術 94
6.3 多表連線最佳化的基本思路 96
6.3.1 總體思路 96
6.3.2 oltp套用的表連線最佳化 96
6.4 如何使用子查詢 96
6.4.1 使用子查詢好不好 96
6.4.2 到底是使用in還是exists 97
6.5 回到20/80規則 99
6.5.1 最佳化詳細過程 100
6.5.2 技術方面總結 106
6.5.3 每項工作做到最好都不容易 107
第7章 套用綜合最佳化及總結 108
7.1更多的最佳化案例 109
7.1.1數據類型不一致導致的問題 109
7.1.2 多此一舉的操作 111
7.1.3 錯誤使用hint 113
7.1.4 oracle和ibm又一次成功合作 117
7.2 可怕的笛卡兒乘積118
7.2.1 問題的發生和初步解決 119
7.2.2 其實是設計和開發中更深層次問題 120
7.3 說說全表掃描122
7.3.1 導致資料庫性能問題的常見原因 122
7.3.2 何謂全表掃描122
7.3.3 數據增長與全表掃描的關係 123
7.3.4 硬體太多了 124
7.3.5 導致技術運用複雜化的其他問題 124
7.3.6 更多的類比和感慨 125
7.4 導致性能問題的其他原因 125
7.5 一個套用軟體的綜合最佳化 126
7.5.1 最佳化前的狀況 126
7.5.2 最佳化策略及分工合作 127
7.5.3 最佳化效果及原因分析 127
7.5.4 主管部門的反應 128
7.5.5 美妙的三降預言同時實現 129
7.5.6 最佳化工作的艱巨性和長期性 129
7.6 一個樸實無華的好系統 130
7.6.1 國人也能做出精良的好系統 130
7.6.2 巨大升值空間 131
7.6.3 瑕不掩瑜 131
第8章 oracle分區技術及套用 133
8.1 矽谷之行 134
8.1.1 it人的聖地:矽谷 134
8.1.2 我在oracle總部中邪了 135
8.2 我對oracle分區技術的認知過程 135
8.2.1 初嘗分區甜頭 135
8.2.2 分區給我的痛苦體驗 137
8.2.3 全面理解分區技術 138
8.3 分區表技術 138
8.3.1 分區技術原理:分而治之 138
8.3.2 分區表技術概述 140
8.3.3 11g的分區新技術 144
8.4 分區索引技術 146
8.4.1 分區索引技術好難喔 146
8.4.2 10分鐘讓你理解最難的分區索引 149
8.4.3 分區索引設計指南 151
8.5 更多的分區技術 153
8.5.1 一個神奇的分區技術 153
8.5.2 oracle分區技術發展史 154
8.6 如何實施和評估分區 155
8.6.1 分區設計建議 155
8.6.2 分區效果評估 156
8.6.3 如何在生產系統實施分區 156
8.7 某行業分區方案設計的曲折過程 159
8.7.1 第一階段:出師不利 159
8.7.2 第二階段:經驗主義錯誤 160
8.7.3 第三階段:初見成效 160
8.7.4 第四階段:日臻完善 160
8.8 分區方案中常見問題探討 161
8.8.1 問題1:目標方面的誤區 161
8.8.2 問題2:分區表設計方面的誤區 162
8.8.3 問題3:沒有充分考慮套用設計和開發的誤區 162
8.8.4 問題4:分區表空間設計方面的誤區 163
8.8.5 問題5:分區在大批量數據處理中的誤區 164
8.8.6 問題6:分區索引設計方面的誤區 164
8.8.7 無止境的分區技術 165
第9章 架構與性能最佳化 166
9.1 該談談架構了 167
9.1.1 架構與性能的關係 167
9.1.2 oracle高端架構產品與性能的關係 167
9.1.3 oracle架構的重要性 168
9.2 基本概念很重要 169
9.2.1 什麼是oracle資料庫 169
9.2.2 伺服器、實例和資料庫的關係 170
9.2.3 關於架構方面的誤區 172
9.3 it系統架構現狀分析 173
9.3.1 一副並不美妙的大蜘蛛網 173
9.3.2 現有體系結構特點分析 174
9.3.3 現有體系結構評估 174
9.4Oracle格線計算176
9.4.1Oracle 10g= 格線計算 176
9.4.2 按格線計算設計資料庫架構 176
9.4.3 烏托邦式架構就是好 178
9.4.4 初級階段的設計建議 179
9.4.5 關於真正大集中的疑慮 179
9.5 雲計算與性能最佳化 182
9.5.1 滿天翻滾的雲 182
9.5.2 oracle的紅雲 182
9.5.3 客戶關注的雲計算話題 183
9.6 oracle資料庫分散式架構 184
9.6.1 數據複製技術 184
9.6.2 data guard技術簡介 186
9.6.3 streams技術簡介 187
9.6.4 其他數據同步技術 188
9.6.5 數據同步技術的定位和比較 188
9.7 我看分散式架構 190
9.7.1 我不喜歡分散式架構 190
9.7.2 數據大集中與分散式架構 191
9.7.3 分散式架構的用武之地 192
9.7.4 真正的返璞歸真 192
9.8 誓做抗拒拆遷的刁民 193
9.8.1 拆遷大錘已高高舉起 193
9.8.2 統一戰線發揮重要作用 193
9.8.3 人民戰爭的汪洋大海 195
9.9 一個本來平淡的日子 195
9.9.1 什麼專家,拿了錢就跑? 195
9.9.2 艱難的問題診斷過程 196
9.9.3 一根救命稻草 197
9.9.4 技術方面的教訓和感悟 197
9.9.5 猶豫半天的話語 198
第10章 rac與性能最佳化 200
10.1 關於rac的一些誤解和疑慮 201
10.2 rac技術原理 203
10.2.1 系統介紹rac架構和原理 203
10.2.2 rac到底有什麼好處 204
10.2.3 10g rac架構新特性 205
10.2.4 我害怕oracle什麼技術工作 206
10.3 rac架構的優勢 207
10.3.1 為什麼rac架構比ha架構好 207
10.3.2 客戶的方案不一定是最優的 209
10.4 rac實施方法論 210
10.4.1 還是方法論重要 210
10.4.2 “你打個補丁要三天啊?” 211
10.4.3 如何降低rac實施和運行風險 212
10.4.4 rac其實背了好多黑鍋 212
10.5 rac性能最佳化原理 213
10.5.1 rac性能最佳化等同於單事例 213
10.5.2 rac性能問題與套用關係 214
10.5.3 套用在rac環境下部署的最佳方式 216
10.6 rac環境下的性能分析 217
10.6.1 rac性能分析基本策略 217
10.6.2 awr報告中的rac性能分析 217
10.6.3ADDM報告中的rac問題原因分析 218
10.6.4 gcs性能分析 219
10.6.5 ges性能分析 221
10.6.6 下得去,還要上得來 222
10.7 rac高可用性 222
10.7.1 rac高可用性技術其實很複雜 222
10.7.2 rac高可用性實施思路 223
10.7.3 rac高可用性測試案例和測試過程 223
10.8 rac可擴展性 225
10.8.1 rac不能超過4個節點? 225
10.8.2 oracle總部rac專家的觀點 225
10.8.3 某大型交易系統的擴展性測試 226
10.8.4 如何實施rac擴展性 227
10.9 rac運行維護和故障診斷 228
10.9.1 rac運行維護建議 228
10.9.2 rac故障診斷經驗談 228
10.9.3 瞎貓碰上死耗子 229
第11章 數據倉庫中的性能最佳化 231
11.1 我看數據倉庫 232
11.1.1 數據倉庫不是倉庫管理軟體 232
11.1.2 數據倉庫鼻祖的精確定義 232
11.1.3 數據倉庫的套用特點 233
11.1.4 我所理解的數據倉庫 233
11.1.5 本書講述的數據倉庫 234
11.2 數據倉庫套用開發指導思想 235
11.2.1 數據倉庫套用開發指導思想建議 235
11.2.2 案例為證 235
11.2.3 如何貫徹大批量、並行處理? 238
11.3 並行處理技術的套用 238
11.3.1 oracle並行處理技術無處不在 238
11.3.2 並行處理舉例 239
11.3.3並行技術的幾個層面 240
11.3.4 並行處理經驗 242
11.3.5 榨乾所有硬體資源 243
11.4 oracle是個大計算器 244
11.4.1 告別農耕時代 244
11.4.2 oracle不僅是一個存數據的大容器 244
11.5 大批量數據etl案例 245
11.5.1 vip客戶判斷標準 245
11.5.2 外部表 246
11.5.3 merge語句 247
11.5.4 vip計算總體流程圖 248
11.5.5 簡述一個流程 249
11.5.6 方案評估 250
11.6 “非典”期間的一個典型性問題 250
11.6.1 一個套用開發中的典型性問題 250
11.6.2 oracle系統級臨時表 253
11.7 一種快速高效的數據倉庫載入方案 253
11.7.1 讓洋鬼子激動地蹦到桌子上去 253
11.7.2 快速高效的數據倉庫載入方案 255
11.8 報表最佳化技術 259
11.8.1 我的第一次軟體開發經歷 259
11.8.2 現在的報表處理狀況 260
11.8.3 報表最佳化核心技術:物化視圖和語句重寫 261
11.8.4 為什麼不要自己編寫匯總表 263
11.8.5 報表最佳化的基本思路及示例 263
11.8.6 報表最佳化示例 264
11.8.7 為什麼沒有實現語句重寫 268
11.8.8 it行業到底是買方市場還是賣方市場 269
第12章 統計信息採集與性能最佳化 272
12.1 我闖大禍了 273
12.1.1 常在河邊走,哪有不濕鞋的 273
12.1.2 太急於表現了 273
12.1.3 建一個索引,搞死一個系統 274
12.1.4 我被罵得滿地找地縫 274
12.1.5 初識問題原因 275
12.1.6 問題根本原因 275
12.2 最佳化器原理和統計信息採集作用 276
12.2.1 sql語句執行過程 276
12.2.2 基於規則最佳化器(rBO)簡介 277
12.2.3 基於成本最佳化器(cbo)簡介 278
12.2.4 如何將葫蘆和瓢都按下 278
12.2.5 為什麼要進行統計信息採集 279
12.3 自動採集統計信息 279
12.3.1 自動採集統計信息的特點 279
12.3.2 自動還是手工 280
12.3.3 超長的自動統計信息採集 280
12.3.4 一次變味的資料庫升級技術研討會 282
12.4 定製採集統計信息 282
12.4.1 統計信息採集基本策略 282
12.4.2 統計信息採集實施策略 283
12.4.3 統計信息採集具體方法 283
12.4.4 oracle 10g鬼精鬼精的 285
12.5 若干最佳實踐經驗 286
12.5.1 自動和手工結合進行統計信息採集 286
12.5.2 鎖住統計信息採集 286
12.5.3 數據分布統計(histogram)建議 286
12.5.4 批處理中的統計信息採集 287
12.5.5 鐵路警察,各管一段 288
第13章 感悟性能最佳化分析的高級工具 290
13.1 oracle 10g = oracle 10a 291
13.1.1 外部手工管理變內部自動管理 291
13.1.2 oracle 10g都有哪些自動的東西 292
13.2 awr是個好東西 292
13.2.1 awr原理 292
13.2.2 awr基本操作 293
13.2.3 把awr功能用個夠 295
13.3 addm:oracle能自動診斷監控嗎 298
13.3.1 addm能幹啥 298
13.3.2 dba要失業了嗎 300
13.4 sql最佳化進入工業化時代 301
13.4.1 傳統模式到工業化 301
13.4.2 sql tuning advisor能做哪些最佳化 302
13.4.3 sql access advisor能做哪些最佳化 304
13.4.4 sql tuning advisor和sql access advisor的差異 304
13.4.5 oem中的每條命令我都會敲 304
13.4.6 it工業化時代的初級階段 305
第14章 參數配置與性能最佳化 307
14.1 神奇的“魔術師” 308
14.1.1 不調系統參數 308
14.1.2 調錯系統參數 308
14.2 漫談初始化參數 309
14.2.1 神奇的初始化參數 309
14.2.2 參數設定基本思路和經驗 310
14.2.3 將log buffer設它個幾百兆 311
14.3自動記憶體管理311
14.3.1 dba真地快沒活幹了 311
14.3.2 自動記憶體管理技術管用嗎 314
14.4Buffer Cache最佳化 315
14.4.1 buffer cache參數設定思路 315
14.4.2 buffer cache最佳化技術 316
14.4.3 buffer cache的其他最佳化技術 318
14.5 shared pool最佳化 319
14.5.1 shared pool參數設定思路 319
14.5.2 shared pool最佳化技術 320
14.5.3 再撞一次牆 321
14.6 pga最佳化 321
14.6.1 pga參數設定思路 321
14.6.2 匪夷所思的做法 323
14.7 奇妙的oracle內部參數 325
14.7.1 oracle有神奇的內部參數嗎? 325
14.7.2 內部參數的一次神奇作用 325
14.7.3 不要濫用內部參數 327
14.7.4 令人眼花繚亂的內部參數和event 327
第15章 存儲技術與性能最佳化 330
15.1 什麼時候才考慮i/o最佳化 331
15.2裸設備?檔案系統?asm? 331
15.2.1 裸設備有那么神奇嗎? 331
15.2.2 客戶期望值太高了 332
15.2.3 檔案系統和裸設備的原理分析 332
15.2.4 檔案系統同樣好 333
15.3 raid與性能最佳化 334
15.3.1 也說raid 334
15.3.2 ibm太慷慨了 334
15.4 oracle管存儲了 336
15.4.1 關於asm的疑慮 336
15.4.2 asm是什麼? 336
15.4.3 asm有什麼技術優勢? 337
15.4.4 oracle即將不支持裸設備了 338
15.5 asm最佳化策略 338
15.5.1 裸設備與asm的性能對比 338
15.5.2 如何保證asm實施的高性能 340
15.5.3 asm事例的參數設定建議 341
15.6 asm實施案例 343
15.6.1 我所見過的真正海量資料庫 343
15.6.2 裸設備還是asm檔案系統? 344
15.6.3 asm、OMF、大表空間技術的完美結合 344
15.6.4 年輕教授被asm氣得直跳腳 345
15.6.5 寬容平和的心態 346
第16章 數據保護中的性能最佳化 348
16.1 oracle豐富的數據保護技術 349
16.1.1 oracle高可用性解決方案全景圖 349
16.1.2 相關技術和產品的定位 349
16.2rman實施現狀分析 350
16.2.1 備份恢復只是磁帶庫廠商的事情? 350
16.2.2 rman實施中常見問題分析 351
16.3 rman備份的最佳化 353
16.3.1 rman備份最佳化的基本策略 353
16.3.2 rman備份最佳化的傳統技術 353
16.3.3 在表空間級進行rman備份 354
16.3.4 10g的快速增量備份技術 356
16.3.5 備份壓縮技術 358
16.4 rman恢復的最佳化 358
16.4.1 頭疼醫頭,腳疼醫腳 358
16.4.2 降低日誌恢復量 360
16.4.3增量更新備份 361
16.5 快速恢複數據的新技術:flashback361
16.5.1 人為邏輯錯誤是最大的單一因素 361
16.5.2 傳統的數據恢復技術及缺陷 362
16.5.3 flashback技術概述 363
16.5.4 flashback技術綜合對比 364
16.5.5 flashback技術與傳統數據恢復技術綜合運用 365
16.6 data guard實施中的最佳化 365
16.6.1 容災系統與生產系統是緊密相關的 365
16.6.2 還是原理最重要 366
16.6.3 日誌傳輸的最佳化 366
16.6.4 日誌恢復的最佳化 371
16.6.5 容災系統與生產系統的配置關係 372
16.6.6 也談data guard與硬體存儲鏡像技術372
16.6.7 data guard和存儲鏡像技術的綜合 374
第17章 故障診斷與性能最佳化 375
17.1 故障診斷與性能最佳化的區別 376
17.1.1 故障診斷與性能最佳化不完全是一回事 376
17.1.2 故障診斷需要一個偉大的心臟 376
17.2 大汗淋漓的故障診斷 377
17.2.1 一個“ctrl + c”幾乎搞死一個系統 377
17.2.2 啼笑皆非的故障處理過程 378
17.2.3 脅從犯的自責 379
17.3 可別小看數據壞塊處理 379
17.3.1 “關於oracle腐敗問題的處理” 379
17.3.2 飛機落地了,資料還未看完 380
17.3.3 收集信息、制定處理方案最重要 380
17.3.4 數據壞塊處理的八卦圖 381
17.3.5 別亂用dul 383
17.3.6 如何防範數據壞塊 384
17.4 堪比好來塢大片的情節 385
17.4.1 我的女同事被嚇壞了 385
17.4.2 驚心動魄的時刻! 385
17.4.3 事件遠沒有結束 386
17.4.4 其實原因很簡單 387
17.5 oracle buuuuuuuuuuuuuug 388
17.5.1 我看oracle bug 388
17.5.2 手工作坊與大工廠的差別 389
17.5.3 一個展板都畫不下的流程圖 389
17.6 軟體版本管理和補丁實施 390
17.6.1 相關術語和概念 390
17.6.2 未雨綢繆的補丁實施計畫 391
17.6.3 打補丁那點事 392
17.6.4 補丁沖突分析像偵探推理 393
第18章 dba職責及性能管理 395
18.1 我的專職dba經歷 396
18.1.1 不太安心的“dba” 396
18.1.2 無所事事的“dba” 396
18.1.3 手忙腳亂的“dba” 397
18.1.4 無所事事的dba 397
18.2 dba職責建議 398
18.2.1 dba的十大任務 398
18.2.2 dba的工作比例 400
18.2.3 不太懂sql的dba 400
18.2.4 一位技術實力超強的dba 401
18.3 dba在性能方面的工作 402
18.3.1 每日的工作 402
18.3.2 每周的工作 403
18.3.3 每月的工作 403
18.3.4 其他的工作 403
18.4 性能管理更重要 404
18.4.1 性能問題其實是管理問題 404
18.4.2 開發人員永遠都長不大? 404
18.4.3 oracle核心技術開發團隊的故事 405
18.5 開發與運行維護的脫節 405
18.5.1 開發與運行維護部門的獨立性 406
18.5.2 開發與運行維護工作的脫節 406
18.6 客戶/開發商/oracle的分工合作 407
18.6.1 目前的分工和定位 407
18.6.2 客戶在it系統中的作用 408
18.6.3 建議的分工和定位 409
18.6.4 包含3種角色的項目組 411
18.7 分工合作的成功案例 412
18.7.1 系統運行情況 412
18.7.2 系統主要技術特點 412
18.7.3 項目成功因素分析 413
18.7.4 oracle公司的服務經驗 413
18.7.5 項目的不足 414
第19章 軟體就是服務 415
19.1 oracle服務體系概述 416
19.1.1 oracle公司組織結構一瞥 416
19.1.2 oracle豐富的服務產品 417
19.2 我看oracle標準服務 419
19.2.1 標準服務不僅僅是法律條款 419
19.2.2 標準服務的益處 419
19.3 愛不釋手的metalink420
19.3.1 幸虧有metalink 420
19.3.2 初嘗oracle服務甜頭 420
19.3.3 metalink是個大寶藏 421
19.3.4 metalink是個自助式的知識庫 422
19.3.5 在metalink中提交sr的經驗 423
19.3.6 把metalink當成學習工具 425
19.4 oracle高級客戶服務 426
19.4.1 acs服務概述 426
19.4.2 基於itil理念的acs服務 427
19.4.3 我們不是鐘點工 430
19.4.4 acs的運行維護服務 430
19.4.5 it系統挑戰和acs解決方案服務 432
19.4.6 幾種acs解決方案服務 432
19.5 又一次救火之後的感慨 435
19.5.1 又著火了 435
19.5.2 再次感謝metalink 435
19.5.3 客戶把系統重新安裝了 436
19.5.4 其實還是服務問題 436
第20章 一個更全面的案例 438
20.1 為升級而來 439
20.1.1 初識客戶 439
20.1.2 升級方案遇到阻力 439
20.2 以性能最佳化開路 440
20.2.1 性能是升級的第一大風險 440
20.2.2 調整服務思路 440
20.3 性能整體評估 441
20.3.1 先看作業系統數據 441
20.3.2 資料庫基準指標的採集 441
20.3.3 性能分析策略和原則 442
20.4 若干典型問題 443
20.4.1 還是索引這樣基礎的問題 443
20.4.2 發現了最大的性能瓶頸 445
20.4.3 我把開發人員嚇住了 449
20.4.4 參數可調的餘地太小 450
20.5 難以解決的問題:中間表 451
20.5.1 又一類典型問題 451
20.5.2 9i沒有合適的招 451
20.5.3 10g的有效解決辦法 452
20.6 又說分區方案設計 453
20.6.1 分區表太多了 453
20.6.2 分區設計的其他問題 453
20.6.3 綜合平衡考慮問題不簡單 454
20.7 再說升級 454
20.7.1 對升級的兩種極端看法 454
20.7.2 為什麼要升級 455
20.7.3 常見的升級方法 456
20.7.4 oracle升級服務包 457
20.7.5 如何降低性能風險 458
第21章 綜合類 460
21.1 oracle出硬體了 461
21.1.1 我快變成硬體工程師了 461
21.1.2 我看exadata 461
21.1.3 acs在exadata方面的服務 464
21.2 oracle全文檢索技術465
21.2.1 oracle能做搜尋引擎 465
21.2.2 茅塞頓開的解決方案 467
21.2.3 林子大了,什麼鳥都有 469
21.3 什麼是it系統最寶貴的財富 470
21.3.1 it系統最寶貴的財富是信息本身 470
21.3.2 也談信息中心的作用 470
21.4 如何閱讀oracle在線上文檔 471
21.4.1 oracle在線上文檔的確是個寶藏 471
21.4.2 合理分類閱讀和利用 471
21.4.3 按工作角色和任務去閱讀 473
21.5 it行業中的“偽”科學 474
21.5.1 什麼叫it“偽”科學 474
21.5.2 費力不討好的事情 474
21.5.3 我也是“偽”it科學的吹鼓手 475
21.6 性能最佳化與橋牌 477
21.6.1 大局觀的重要 477
21.6.2 實施計畫的重要性 478
21.6.3 應善於捕捉、利用信息 478
21.6.4 合作、溝通的重要性 479
21.6.5 簡簡單單,平平淡淡就是真 479
21.7 it業其實還是個孩子 480
21.8 大話南遊記481
結束語 484
參考文獻 486