三位經驗豐富的頂級Oracle DBA再次聯手,為讀者呈現這本Oracle資料庫性能最佳化攻略。《Oracle Database 11g性能最佳化攻略》由表及里地深入分析了造成Oracle資料庫性能緩慢的各種原因,然後給出標本兼治的性能調優方案。作者將多年的實踐經驗和個人智慧與讀者分享,幫助讀者診治影響資料庫性能的各種疑難雜症。 《Oracle Database 11g性能最佳化攻略》可幫助資料庫管理員解決各種Oracle資料庫性能問題。
目錄
第1章 最佳化表性能 1
攻略1-1 創建具有最優性能的資料庫 1
攻略1-2 創建具有最優性能的表空間 4
攻略1-3 匹配表類型與業務需求 6
攻略1-4 選擇有益於性能的表特性 8
攻略1-5 在創建數據表時避免盤區分配延遲 9
攻略1-6 數據載入速度最大化 11
攻略1-7 高效移除表中數據 13
攻略1-8 顯示自動段顧問建議 15
攻略1-9 手工生成段顧問建議 18
攻略1-10 自動傳送段顧問輸出電子郵件 22
攻略1-11 重建跨多個數據塊的數據行 23
攻略1-12 釋放未使用的表存儲空間 26
攻略1-13 壓縮數據以進行直接路徑載入 27
攻略1-14 為所有DML操作壓縮數據 30
攻略1-15 在列級壓縮數據 31
攻略1-16 監控表使用率 33
第2章 選擇和最佳化索引 35
攻略2-1 理解B樹索引 36
攻略2-2 選擇需要建立索引的列 41
攻略2-3 創建主鍵索引 44
攻略2-4 創建唯一索引 45
攻略2-5 為外鍵列創建索引 48
攻略2-6 何時使用組合索引 49
攻略2-7 通過壓縮減少索引大小 51
攻略2-8 實現基於函式的索引 52
攻略2-9 在虛擬列上創建索引 54
攻略2-10 平衡索引的I/O 56
攻略2-11 新增一個索引而不影響已有的套用 57
攻略2-12 創建支持星型架構的點陣圖索引 58
攻略2-13 創建點陣圖連線索引 59
攻略2-14 創建索引組織表 60
攻略2-15 監控索引使用 62
攻略2-16 索引創建速度最大化 63
攻略2-17 回收未使用的索引空間 64
第3章 最佳化實例記憶體 68
攻略3-1 自動記憶體管理 68
攻略3-2 管理多個緩衝池 71
攻略3-3 設定記憶體最小值 73
攻略3-4 監控記憶體調整操作 74
攻略3-5 最佳化記憶體使用 75
攻略3-6 調優PGA記憶體分配 77
攻略3-7 配置伺服器查詢快取 79
攻略3-8 管理伺服器結果快取 81
攻略3-9 快取SQL查詢結果 83
攻略3-10 快取客戶端結果集 86
攻略3-11 快取PL/SQL函式結果 88
攻略3-12 配置Oracle資料庫智慧型快閃記憶體快取 91
攻略3-13 調節重做日誌緩衝區 93
第4章 監控系統性能 95
攻略4-1 實現AWR 95
攻略4-2 修改統計信息時間間隔和保存期限 97
攻略4-3 手工生成AWR報表 99
攻略4-4 通過企業管理器生成一份AWR報告 101
攻略4-5 為一條SQL語句生成AWR報告 102
攻略4-6 為資料庫創建統計基線 103
攻略4-7 通過企業管理器管理AWR基線 106
攻略4-8 管理AWR統計信息庫 109
攻略4-9 自動創建AWR基線 110
攻略4-10 快速分析AWR輸出 112
攻略4-11 手工獲取活動會話信息 113
攻略4-12 從企業管理器中獲取ASH信息 117
攻略4-13 從數據字典中獲取ASH信息 119
第5章 最小化系統資源爭奪 123
攻略5-1 理解回響時間 123
攻略5-2 確定引起最多等待的SQL語句 126
攻略5-3 分析等待事件 126
攻略5-4 理解等待事件的分類 128
攻略5-5 檢查會話等待 128
攻略5-6 按類型檢查等待事件 130
攻略5-7 解決緩衝區忙等待 132
攻略5-8 解決日誌檔案同步等待 134
攻略5-9 被另一個會話讀取等待事件的最小化 135
攻略5-10 減少直接路徑讀取等待事件 136
攻略5-11 恢複寫入器等待最小化 137
攻略5-12 找出誰持有阻塞鎖 138
攻略5-13 確定被阻塞和引起阻塞的會話 140
攻略5-14 處理引起阻塞的鎖 141
攻略5-15 確定被鎖定的對象 142
攻略5-16 解決enq:TM鎖資源爭奪 143
攻略5-17 確定最近被鎖住的會話 145
攻略5-18 分析資料庫中最近的等待事件 147
攻略5-19 確定由於鎖定所花費的等待時間 149
攻略5-20 鎖存器爭奪的最小化 151
攻略5-21 通過Oracle企業管理器來管理鎖 154
攻略5-22 通過Oracle企業管理器分析等待 155
第6章 分析作業系統性能 157
攻略6-1 檢測磁碟空間問題 159
攻略6-2 確定系統瓶頸 161
攻略6-3 確定系統瓶頸(Solaris) 163
攻略6-4 確定消耗伺服器資源最多的進程(top) 164
攻略6-5 確定CPU和記憶體瓶頸 166
攻略6-6 確定I/O瓶頸 167
攻略6-7 識別網路密集型進程 170
攻略6-8 檢修資料庫網路連線性 171
攻略6-9 將一個資源密集型進程映射到一個資料庫進程 172
攻略6-10 終止一個資源密集型進程 175
第7章 檢修資料庫 177
攻略7-1 確定最優的撤銷保留時間 177
攻略7-2 找出是什麼消耗了最多的撤銷空間 181
攻略7-3 解決ORA-01555錯誤 182
攻略7-4 監控臨時表空間使用率 184
攻略7-5 確定是誰在使用臨時表空間 185
攻略7-6 解決“無法擴展臨時數據段”錯誤 186
攻略7-7 解決打開游標錯誤 188
攻略7-8 解決被掛起的資料庫問題 190
攻略7-9 激活自動診斷庫命令解釋器 194
攻略7-10 從ADRCI中來查看報警日誌 198
攻略7-11 使用ADRCI查看事件 200
攻略7-12 將事件打包發給Oracle技術支持團隊 202
攻略7-13 運行一次資料庫健康檢查 203
攻略7-14 創建SQL測試用例 205
攻略7-15 生成一份AWR報告 208
攻略7-16 比較兩個階段的資料庫性能 210
攻略7-17 分析一份AWR報告 212
第8章 創建高效的SQL 216
攻略8-1 獲取一張表中的所有數據行 216
攻略8-2 獲取一張表中的部分數據行 218
攻略8-3 通過相對應的行來連線表 220
攻略8-4 在沒有相對應數據行的情況下連線表 222
攻略8-5 構造簡單的子查詢 224
攻略8-6 構建相關子查詢 228
攻略8-7 比較兩個表找出缺失的數據行 230
攻略8-8 比較兩張表找出匹配的數據行 231
攻略8-9 將相似SELECT語句的結果集合併 232
攻略8-10 查找一定範圍內的值 234
攻略8-11 處理空值 237
攻略8-12 搜尋部分列值 240
攻略8-13 重用共享池中的SQL語句 243
攻略8-14 避免偶然的全表掃描 246
攻略8-15 創建高效的臨時視圖 248
攻略8-16 避免使用NOT子句 250
攻略8-17 控制事務大小 252
第9章 SQL手工調優 255
攻略9-1 顯示查詢的執行計畫 256
攻略9-2 定製執行計畫輸出 258
攻略9-3 圖形化顯示執行計畫 261
攻略9-4 解讀一份執行計畫 262
攻略9-5 監控運行時間較長的SQL語句 264
攻略9-6 確定當前正在執行的耗占資源的SQL語句 265
攻略9-7 查看當前正在運行的SQL語句的統計信息 266
攻略9-8 監控一個SQL執行計畫的處理過程 269
攻略9-9 確定過去執行的SQL語句中最耗占資源的語句 271
攻略9-10 比較系統修改後的SQL性能 273
第10章 追蹤SQL執行 278
攻略10-1 環境準備 278
攻略10-2 追蹤一個特定的SQL語句 280
攻略10-3 在你所擁有的會話中啟用追蹤 282
攻略10-4 找到追蹤檔案 283
攻略10-5 檢查原始SQL追蹤檔案 284
攻略10-6 分析Oracle追蹤檔案 285
攻略10-7 使用TKPROF設定追蹤檔案的格式 286
攻略10-8 分析TKPROF輸出 287
攻略10-9 使用Oracle追蹤分析器分析追蹤檔案 290
攻略10-10 追蹤一個並行查詢 293
攻略10-11 追蹤特定的並行查詢進程 294
攻略10-12 在RAC系統中追蹤並行查詢 295
攻略10-13 合併多個追蹤檔案 296
攻略10-14 找出正確的會話來進行追蹤 297
攻略10-15 追蹤一個SQL會話 297
攻略10-16 通過進程ID來追蹤會話 299
攻略10-17 追蹤多個會話 300
攻略10-18 追蹤一個實例或資料庫 301
攻略10-19 為會話生成事件10046追蹤 302
攻略10-20 為實例生成事件10046追蹤 304
攻略10-21 在一個正在運行的會話上設定追蹤 304
攻略10-22 登錄之後啟用會話追蹤 305
攻略10-23 追蹤最佳化器的執行路徑 306
攻略10-24 生成Oracle錯誤自動追蹤 309
攻略10-25 追蹤後台進程 310
攻略10-26 啟用Oracle監聽器追蹤 311
攻略10-27 為數據衛士設定歸檔追蹤 312
第11章 SQL自動調優 314
攻略11-1 顯示自動SQL調優工作詳細信息 316
攻略11-2 顯示SQL自動調優建議 318
攻略11-3 生成SQL腳本來實現自動調優建議 322
攻略11-4 修改SQL自動調優特性 323
攻略11-5 禁用和啟用SQL自動調優 325
攻略11-6 修改維護視窗屬性 326
攻略11-7 創建SQL調優集對象 327
攻略11-8 查看AWR中的資源密集型SQL語句 328
攻略11-9 查看記憶體中的資源密集型SQL語句 330
攻略11-10 用AWR中高資源消耗的SQL來填充最佳化集 332
攻略11-11 用記憶體中高資源消耗的SQL來填充調優集 333
攻略11-12 將記憶體中所有SQL語句填充到SQL調優集 334
攻略11-13 顯示SQL調優集的內容 335
攻略11-14 有選擇地從SQL調優集中刪除語句 337
攻略11-15 傳輸SQL調優集 338
攻略11-16 創建調優任務 340
攻略11-17 手工運行SQL調優顧問 342
攻略11-18 從資料庫自動診斷監視器中獲得SQL調優建議 345
第12章 執行計畫最佳化與一致性 348
攻略12-1 創建並接受SQL概要 351
攻略12-2 自動接受SQL概要檔案 354
攻略12-3 顯示SQL概要檔案信息 356
攻略12-4 禁用SQL概要檔案 358
攻略12-5 刪除SQL概要檔案 360
攻略12-6 移動SQL概要檔案 361
攻略12-7 自動增加計畫基線 363
攻略12-8 為一條SQL語句創建計畫基線 365
攻略12-9 為包含在SQL調優集中的SQL語句創建計畫基線 366
攻略12-10 修改計畫基線 368
攻略12-11 確認是否存在計畫基線 370
攻略12-12 顯示計畫基線執行計畫 371
攻略12-13 在計畫基線中加入一個新的計畫(擴展) 372
攻略12-14 禁用計畫基線 375
攻略12-15 移除計畫基線信息 376
攻略12-16 遷移計畫基線 377
第13章 最佳化器配置 380
攻略13-1 選擇最佳化器目標 380
攻略13-2 啟用統計信息自動收集 381
攻略13-3 為統計信息收集設定首選參數 383
攻略13-4 手工生成統計信息 388
攻略13-5 鎖定統計信息 389
攻略13-6 處理統計信息的缺失 390
攻略13-7 導出統計信息 392
攻略13-8 還原以前版本的統計信息 393
攻略13-9 收集系統統計信息 394
攻略13-10 驗證新的統計信息 397
攻略13-11 強制最佳化器使用某個索引 399
攻略13-12 啟用查詢最佳化器特性 400
攻略13-13 阻止資料庫創建柱狀圖 402
攻略13-14 不使用綁定變數提高性能 403
攻略13-15 理解自適應游標共享 406
攻略13-16 在表達式上創建統計信息 411
攻略13-17 為相關列創建統計信息 412
攻略13-18 自動創建列組 413
攻略13-19 維護分區表統計信息 415
攻略13-20 為大表並行收集統計信息 416
第14章 實現查詢提示 419
攻略14-1 編寫一個提示 419
攻略14-2 改變訪問路徑 420
攻略14-3 改變連線順序 424
攻略14-4 改變連線方法 425
攻略14-5 改變最佳化器版本 428
攻略14-6 在快速回響和整體最佳化之間進行選擇 428
攻略14-7 進行直接路徑插入 430
攻略14-8 在視圖中加入提示 432
攻略14-9 快取查詢結果 434
攻略14-10 將分散式查詢引導到一個特定的資料庫 437
攻略14-11 收集查詢執行的擴展統計信息 441
攻略14-12 啟用查詢改寫 442
攻略14-13 提升星型架構查詢的性能 444
第15章 並行執行SQL 447
攻略15-1 為特定查詢啟用並行 447
攻略15-2 在創建對象時啟用並行 451
攻略15-3 為已經存在的對象啟用並行 452
攻略15-4 實現並行DML 453
攻略15-5 並行創建表 456
攻略15-6 並行創建索引 458
攻略15-7 並行重建索引 459
攻略15-8 並行移動分區 460
攻略15-9 並行拆分分區 461
攻略15-10 啟用自動並行度 462
攻略15-11 檢查並行解釋計畫 463
攻略15-12 監控並行操作 466
攻略15-13 找出並行進程中的瓶頸 468
攻略15-14 獲取並行會話的詳細信息 469
索引 471