oracle张大鹏,Oracle数据库性能优化
目錄
第一篇 優化工具篇
第 1 章 DBA 優化之路
1.1 學習的建議
1.2 工具推薦
1.3 關于操作系統方面的建議
1.4 關于Oracle初始化參數的調整
1.5 關于Statspack的若干建議
1.6 關于logmnr在調優中的運用
1.7 關于materialized view在調優中的運用
1.8 關于Stored Outline在SQL優化中的運用
1.9 用dbms_profiler調優存儲過程 8
1.10 優化前的準備工作
1.11 如何對SQL進行調整及優化
1.12 表結構優化實例
1.13 如何對session進行跟蹤
1.14 基于等待事件的性能診斷方法
1.15 基于資源限制的性能診斷方法
1.16 如何減少共享池的碎片
1.17 監控表及索引的意義
1.18 通過優化SQL消除temp表空間膨脹
1.19 理解compress選項在優化上的作用 19
1.20 關于在線重定義table的建議
1.21 關于分區表在數據庫設計時的建議
1.22 關于DataGuard在高可用方面的建議 20
第 2 章 Statspack 高級調整 23
2.1 Statspack高級調整譯文
2.1.1 Top 5 Wait Events
2.1.2 等待時間快捷參考
2.2 關于Latch
第 3 章 Statspack 使用的幾個誤區
3.1 以命中率為主衡量性能問題
3.2 快照的采樣時間間隔問題
3.3 以偏概全
3.4 關于TIMED_STATISTICS參數的設定
3.5 你成了泄密者
第 4 章 TKPROF 工具使用簡介
4.1 TKPROF工具簡介
4.2 TKPROF工具的使用步驟
4.3 TKPROF工具如何分析trace文件 41
第 5 章 使用 Oracle 的等待事件檢測性能瓶頸
5.1 判斷等待事件的相關視圖
5.1.1 系統級統計信息v$system_event
5.1.2 會話級統計信息v$session_event
5.1.3 會話詳細性能信息 v$session_wait
5.1.4 會話等待事件的相關視圖之間的關系
5.2 應該怎么考慮進行優化
5.3 主要等待事件
5.4 案例分析
5.5 小結
5.6 附錄
第 6 章 使用 SQL_TRACE/10046 事件進行數據庫診斷
6.1 SQL_TRACE及10046事件的基礎介紹
6.1.1 SQL_TRACE說明
6.1.2 10046事件說明
6.1.3 獲取跟蹤文件
6.1.4 讀取當前session設置的參數
6.2 案例分析之一
6.2.1 問題描述
6.2.2 檢查并跟蹤數據庫進程
6.2.3 檢查trace文件
6.2.4 登錄數據庫檢查相應表結構
6.2.5 解決方法
6.2.6 小結
6.3 案例分析之二
6.3.1 問題描述
6.3.2 drop user出現問題
6.3.3 跟蹤問題
6.3.4 問題定位
6.3.5 實際處理
6.3.6 小結
6.4 10046與等待事件
6.4.1 10046事件的使用
6.4.2 10046 與db_file_multiblock_read_count
6.4.3 10046與執行計劃的選擇
6.4.4 db_file_multiblock_read_count與系統的IO能力
6.4.5 小結
第二篇 存儲優化篇
第 7 章 表空間的存儲管理與優化技術
7.1 表空間的作用與分類
7.2 字典管理表空間
7.2.1 字典管理表空間的特性
7.2.2 字典管理表空間的缺點
7.2.3 字典管理表空間的優化
7.3 本地管理表空間
7.3.1 本地管理表空間的特性
7.3.2 管理位圖塊的內部結構
7.3.3 本地管理表空間的優點
7.4 段自動管理表空間
7.4.1 段自動管理表空間的特性
7.4.2 位圖管理段內部結構
7.4.3 段自動管理表空間的優化
7.5 9i對表空間的管理優化
7.5.1 自動undo管理的表空間
7.5.2 完全本地的臨時表空間
7.6 Oracle 10g對表空間的優化
7.7 小結
7.8 附錄
第 8 章 關于 Oracle 數據庫中行遷移 / 行鏈接的問題
8.1 行遷移/行鏈接的簡介
8.2 行遷移/行鏈接的檢測方法
8.3 行遷移/行鏈接的清除方法
第 9 章 HWM 與數據庫性能的探討
9.1 什么是HWM
9.2 初始創建的table中HWM的不同情況 122
9.3 insert數據時HWM的移動
9.4 HWM對性能的影響
9.5 何時應該降低HWM
9.5.1 對于LMT下的FLM
9.5.2 對于ASSM
9.6 如何降低HWM
9.6.1 Move
9.6.2 DBMS_REDEFINITION
9.6.3 Shrink
9.6.4 小結
9.7 其他幾種會移動HWM的操作
9.7.1 Insert Append
9.7.2 Truncate
第 10 章 調整 I/O 相關的等待
10.1 Oracle數據庫I/O相關競爭等待簡介 153
10.2 Oracle數據庫I/O相關競爭等待的處理方法
10.3 Oracle數據庫I/O相關的等待事件和相應的解決方法
10.3.1 數據文件相關的I/O等待事件
10.3.2 控制文件相關I/O等待事件
10.3.3 重做日志文件相關的等待事件
10.3.4 高速緩存區相關的I/O等待事件
10.4 小結
第 11 章 Oracle 在 Solaris 的 VxFS 上的異步 I/O 問題
11.1 VxFS文件系統的簡介
11.2 VxFS文件系統上如何啟用異步I/O
11.3 如何檢測在VxFS文件系統上是否支持異步I/O
11.4 如何查看VxFS文件系統上異步I/O的性能 173
11.5 如何轉換VxFS文件系統上數據文件為支持異步I/O的
數據文件
第 12 章 關于 Freelists 和 Freelist Groups 的研究
12.1 什么是Freelists
12.2 Freelists是否已經過時
12.3 Freelists存儲在哪里
12.4 有多少種free list
12.5 進程請求空閑塊的過程
12.6 塊在free list間的移動
12.7 關于free list將導致大量空間浪費的誤解
12.8 對于Freelists和Freelist Groups的一個比喻
12.9 與Freelists和Freelist Groups相關的等待事件
第三篇 內存調整篇
第 13 章 自動 PGA 管理──原理及優化
13.1 什么是PGA內存自動管理
13.2 PGA Advice功能
13.3 自動PGA內存管理相關初始化參數
第 14 章 32bit Oracle SGA 擴展原理和 SGA 與 PGA 的制約
關系
14.1 如何識別32bit的Oracle
14.2 為何存在1.7GB的限制
14.3 32bit下SGA與PGA之間的制約關系 207
第 15 章 KEEP 池和 RECYCLE 池
15.1 Oracle的數據緩沖池
15.2 KEEP池和RECYCLE池
15.2.1 KEEP池
15.2.2 RECYCLE池
15.3 小結
第 16 章 深度分析數據庫的熱點塊問題
16.1 熱點塊的定義
16.2 數據緩沖區的結構
16.3 如何確定熱點對象
16.4 熱點問題的解決
16.5 熱點塊的其他相關癥狀
16.6 小結
第 17 章 Shared Pool 原理及性能分析
17.1 Shared Pool的基本原理
17.2 Shared Pool的設置說明
17.2.1 基本知識
17.2.2 Shared Pool的Free List管理
17.2.3 了解X$KSMSP視圖
17.3 診斷和解決ORA-04031錯誤
17.3.1 什么是ORA-04031錯誤
17.3.2 內存泄露
17.3.3 綁定變量和cursor_sharing
17.3.4 使用Flush Shared Pool緩解共享池問題
17.3.5 shared_pool_reserved_size參數的設置及作用
17.3.6 其他
17.3.7 模擬ORA-04031錯誤
17.4 Library Cache Pin及Library Cache Lock分析
17.4.1 Library Cache Pin等待事件
17.4.2 Library Cache Lock等待事件
17.5 診斷案例一
17.6 診斷案例二
17.7 小結
第四篇 診斷案例篇
第 18 章 一次性能調整過程總結
18.1 系統環境
18.2 基本的調優過程
18.2.1 db file scattered read
18.2.2 db file sequential read
18.2.3 Enqueue
18.2.4 Latch Free
18.3 小結
第 19 章 電信業 Oracle 優化手記
19.1 一條SQL語句要運行2年怎么辦
19.2 優化的傳統定律和新時尚
19.2.1 index和表同一個表空間(過時)
19.2.2 定期重建索引(過時)
19.2.3 裸設備應該取代文件系統(過時)
19.2.4 初始參數設置cursor_sharing = similar(不一定
有效)
19.2.5 初始參數設置fast = true(有效) 289
19.3 聯機重做日志的優化
19.3.1 聯機重做日志組內創建多個成員
19.3.2 加大redo log的容量
第 20 章 一次診斷和解決 CPU 利用率高的問題分析
20.1 問題的具體描述
20.2 問題的詳細診斷解決過程
20.3 小結
第 21 章 一次異常內存消耗問題的診斷及解決
21.1 問題發現
21.2 解決過程
21.2.1 環境介紹
21.2.2 問題現象
21.2.3 對比分析
21.2.4 假設和分析
21.2.5 找到根源
21.2.6 解決問題
21.3 小結
第 22 章 如何捕獲問題 SQL 解決過度 CPU 消耗問題
22.1 檢查當前情況
22.2 使用Top工具輔助診斷
22.3 檢查進程數量
22.4 登錄數據庫
22.5 捕獲相關SQL
22.6 創建新的索引以消除全表掃描
22.7 觀察系統狀況
22.8 性能何以提高
22.9 小結
第 23 章 一條 SQL 導致數據庫整體性能下降的診斷及解決
23.1 現象
23.2 診斷與解決
第 24 章 Library Cache Lock 成因和解決方法的探討
24.1 幾個相關的概念
24.1.1 什么是庫高速緩存(Library Cache)
24.1.2 一個SQL語句的處理流程
24.1.3 硬分析(Hard Parse)
24.1.4 軟分析(Soft Parse)
24.1.5 分析樹
24.1.6 執行計劃
24.2 了解Library Cache Lock 329
24.2.1 幾種容易引起Library Cache Lock的情況
24.2.2 幾種防患的方法
24.3 解決問題的方法
24.3.1 使用X$KGLLK和systemstate事件解決問題
24.3.2 使用v$session和systemstate事件解決問題
24.4 小結
第五篇 SQL優化及其他
第 25 章 Oracle 數據庫優化之索引( Index )簡介
25.1 索引的作用
25.2 索引管理的常見問題
25.3 索引的管理
25.4 一些索引管理的腳本
第 26 章 CBO 成本計算初探
26.1 建立測試數據
26.2 CBO計算成本原理初探
26.3 初始化參數以及優化器模式對執行計劃的影響 371
26.3.1 初始化參數db_file_multiblock_read_count
26.3.2 初始化參數optimizer_index_cost_adj
26.3.3 優化器模式FIRST_ROWS對執行計劃的影響
26.4 小結
第 27 章 Bitmap 索引
27.1 Bitmap索引的概念
27.2 建立測試例子
27.3 Bitmap索引的特點
27.3.1 Bitmap索引比B樹索引要節省空間
27.3.2 Bitmap索引建立的速度比較快
27.3.3 基于規則的優化器無法使用Bitmap索引 382
27.3.4 Bitmap索引存儲NULL值
27.3.5 通過Bitmap索引訪問表記錄
27.3.6 Bitmap索引對批量DML操作只需要索引一次
27.3.7 Bitmap索引的鎖機制
27.4 Bitmap索引的適用范圍
27.5 Bitmap索引的使用限制
27.6 Bitmap Join索引簡介
第 28 章 翻頁 SQL 優化實例
28.1 系統環境
28.2 優化效果
第 29 章 使用物化視圖進行翻頁性能調整
29.1 系統環境
29.2 問題描述
29.3 捕獲排序SQL語句
29.4 確定典型問題SQL
29.5 選擇解決辦法
29.6 進一步的調整優化
29.7 小結
第 30 章 如何給 Large Delete 操作提速近千倍
30.1 背景描述
30.1.1 任務描述
30.1.2 數量級統計和描述
30.2 背景知識——Bulk Binding
30.2.1 什么是Bulk Binding
30.2.2 Bulk Binding的優點是什么
30.2.3 如何進行批量綁定(Bulk Binds) 415
30.3 優化過程詳解
30.3.1 第一次優化——處理龐大的IN-LIST操作 420
30.3.2 第二次優化 —— 分段操作
30.3.3 第三次優化 —— 拆分 DELETE操作
30.3.4 第四次優化——使用FORALL處理批量作業 424
30.3.5 第五次優化——使用FORALL + 原子級操作
30.4 小結
第 31 章 Web 分頁與優化技術 431
31.1 什么是Web分頁
31.2 表數據普通查詢分頁
31.3 FIRST_ROWS對分頁的影響
31.4 帶排序需求的分頁
31.5 分頁的速度優化
31.6 分頁中的注意事項
31.6.1 真實案例──表中存在union all的視圖時,可能
選擇錯誤的執行計劃
31.6.2 真實案例──ROWID分頁中,執行計劃的錯誤選
擇與處理
31.6.3 真實案例──使用rownum得到意想不到的結果
31.7 小結
第 32 章 Oracle 數據封鎖機制研究 457
32.1 數據庫鎖的基本概念
32.2 Oracle多粒度封鎖機制介紹
32.2.1 Oracle的TX鎖(事務鎖、行級鎖)
32.2.2 TM鎖(表級鎖)
32.3 Oracle 多粒度封鎖機制的監控
32.3.1 系統視圖介紹
32.3.2 監控腳本
32.4 Oracle 多粒度封鎖機制示例
32.4.1 操作同一行數據引發的鎖阻塞
32.4.2 實體完整性引發的鎖阻塞
32.4.3 參照完整性引發的鎖阻塞
32.4.4 外鍵未加索引引發的鎖阻塞
32.4.5 部分回滾對鎖的影響
32.4.6 鎖的排隊機制
32.4.7 ITL Slot不足引發的鎖阻塞
32.4.8 Bitmap索引引發的鎖阻塞
32.4.9 死鎖分析
32.4.10 表級鎖的使能
32.4.11 row_locking參數
32.5 Oracle 多粒度封鎖機制總結
總結
以上是生活随笔為你收集整理的oracle张大鹏,Oracle数据库性能优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: winserver下oracle好运维吗
- 下一篇: oracle 01192,万分火急:or