首本國內作者深入剖析Oracle原理的技術書籍。雖以內部原理為主線,但又不乏很多實際的應用案例,希望讀者可以將學到的原理與實際應用相結合,提高對Oracle的運維能力。
本書第1章主要講述Oracle的空間存儲管理的內部原理,以及應用其原理進行調優、排故的案例。第2章是調優、排故的方法論。第3章深入且全面地剖析了BufferCache內存池的原理,在該章中,你不但可以了解到檢查點、LRU等Oracle最重要的概念,還可以學習到如何設計測試用例,去驗證這些原理。當然,最重要的是這些知識對我們實際工作的影響。任何原理的學習,都要以最終能夠應用到調優、排故為目的,這是本書始終如一的方針,也是作者研究Oracle的一貫思想。第4章為大家解析SharedPool的原理和調優、排故。第5章為大家展現Redo相關的原理、調優和排故。
在第3~5章中,有大量本書唯一的Oracle原理資料,這些原理是作者使用調試Oracle技術分析得出的,網絡中搜索不到任何相關信息。作者也從未將相關信息發布到網上,這保證了本書的價值。第6章為大家介紹了UNDO相關知識。第7章介紹了OracleASM文件原理,以及AU大小、條帶大小、條帶寬度等在ASM下的意義。
通過對這些信息的學習,你還能了解到條帶在存儲中的原理與影響。最后附錄章節是對HASH算法的一個簡述。由於原理性知識居多,因此本書的學習過程並不輕松,但相信通過系統地學習本書,對提高Oracle運維能力會有極大的幫助。
對於非DBA技術人員,通過閱讀本書,也可以了解到最優秀的數據庫Oracle的原理,這對於研究MySQL、PostgreSQL也會有很大的幫助。
目錄
前言
第1章 存儲結構
1.1 區:表空間中的基本單位
1.1.1 統一區大小表空間和區的使用規則
1.1.2 系統管理區大小
1.1.3 碎片:少到可以忽略的問題
1.2 段中塊的使用
1.2.1 塊中空間的使用
1.2.2 典型問題:堆表是有序的嗎
1.2.3 ASSM與L3、L2、L1塊的意義
1.2.4 值得注意的案例:ASSM真的能提高插入並發量嗎
1.2.5 段頭與Extent Map
1.2.6 索引范圍掃描的操作流程
第2章 調優排故方法論
2.1 調優排故的一般步驟
2.1.1 常見DUMP和Trace文件介紹
2.1.2 等待事件
2.1.3 各種資料視圖介紹
2.1.4 等待事件的注意事項
2.2 AWR概覽
2.2.1 AWR報告的注意事項
2.2.2 AWR類視圖
第3章 Buffer Cache內部原理與I/O
3.1 HASH鏈表
3.1.1 HASH鏈表與邏輯讀
3.1.2 Cache Buffers Chain Latch與Buffer Pin鎖
3.1.3 Cache Buffers Chain Latch的競爭
3.2 檢查點隊列鏈表
3.2.1 檢查點隊列
3.2.2 檢查點隊列與實例恢復
3.2.3 DBWR如何寫臟塊
3.2.4 如何提高DBWR的寫效率
3.3 LRU隊列
3.3.1 主LRU、輔助LRU鏈表
3.3.2 臟鏈表LRUW
3.3.3 Free Buffer Waits
3.3.4 誰「扣動」了DBWR的「扳機」
3.3.5 日志切換與寫臟塊
3.4 I/O總結
3.4.1 邏輯讀資料分析
3.4.2 減少邏輯讀—行的讀取
3.4.3 物理I/O
3.4.4 存儲物理I/O能力評估
第4章 共享池揭密
4.1 共享池內存結構
4.1.1 堆、區、Chunk與子堆
4.1.2 Chunk類型(x$ksmsp視圖)
4.1.3 freeabl、recr與LRU鏈表
4.1.4 Free List鏈表
4.1.5 保留池
4.1.6 SQL的內存結構:父游標、子游標
4.1.7 SQL的內存結構:父游標句柄
4.1.8 SQL的Chunk:父游標堆0和DS
4.1.9 SQL的Chunk:子游標句柄
4.1.10 SQL的Chunk:子游標堆0與堆6
4.1.11 SQL所占共享池內存
4.1.12 LRU鏈表:我的共享池大了還是小了
4.1.13 ORA-4031的吊詭:錯誤的報錯信息
4.1.14 解決ORA-4031之道:如何正確釋放內存
4.1.15 Session Cached Cursor與內存占用
4.2 語句解析和執行
4.2.1 SQL執行流程
4.2.2 內存鎖原理
4.2.3 Library Cache Lock/Pin
4.2.4 Library Cache Lock/Pin與硬解析
4.2.5 Library Cache Lock/Pin與軟解析、軟軟解析
4.2.6 NULL模式Library Cache Lock與依賴鏈
4.2.7 存儲過程與Library Cache Lock/Pin
4.2.8 斷開依賴鏈
4.2.9 低級內存鎖:Latch
4.2.10 Shared Pool Latch
4.3 Mutex
4.3.1 Mutex基本形式
4.3.2 Mutex獲取過程:原子指令測試並交換
4.3.3 Mutex獲取過程:競爭與Gets資料的更新
4.3.4 Mutex獲取過程:共享Mutex與獨占Mutex
4.3.5 獨占Mutex的獲取和釋放過程
4.3.6 Mutex獲取過程:Sleeps與CPU
4.4 Mutex與解析
4.4.1 Mutex類型
4.4.2 HASH Bucket與HASH鏈
4.4.3 Handle(句柄)與Library Cache Lock
4.4.4 HASH Table型Mutex
4.4.5 執行計划與Cursor Pin
4.5 通過Mutex判斷解析問題
4.5.1 硬解析時的競爭
4.5.2 軟解析和軟軟解析
4.5.3 解決解析階段的競爭
4.5.4 過度軟軟解析競爭的解決
4.5.5 Select與執行
第5章 Redo調優與備份恢復原理
5.1 非IMU與IMU Redo格式的不同
5.2 解析Redo數據流
5.3 IMU與非IMU相關的Redo Latch
5.4 Redo Allocation Latch
5.5 Log Buffer空間的使用
5.6 LGWR與Log File Sync和Log File Parallel Write
5.7 IMU什麼情況下被使用
第6章 UNDO
6.1 事務基本信息
6.2 回滾段空間重用規則
6.2.1 UNDO塊的SEQ值
6.2.2 UNDO段的Extend
6.2.3 Steal Undo Extent:詭異的UNDO空間不足問題
6.2.4 回滾空間重用機制:UNDO塊重用規則
第7章 ASM
7.1 ASM文件格式
7.1.1 ASM文件
7.1.2 使用kfed挖掘ASM文件格式
7.2 AU與條帶
7.2.1 粗粒度不可調條帶
7.2.2 細粒度可調條帶
7.2.3 AU與條帶的作用
7.2.4 DG中盤數量對性能的影響
7.2.5 最大I/O與最小I/O
7.2.6 數據分布對性能的影響
7.2.7 案例精選:奇怪的IO問題
7.2.8 大AU和小AU性能對比
7.2.9 AU與條帶總結
7.2.10 OLTP與大條帶
附錄 HASH算法簡單介紹
第1章 存儲結構
1.1 區:表空間中的基本單位
1.1.1 統一區大小表空間和區的使用規則
1.1.2 系統管理區大小
1.1.3 碎片:少到可以忽略的問題
1.2 段中塊的使用
1.2.1 塊中空間的使用
1.2.2 典型問題:堆表是有序的嗎
1.2.3 ASSM與L3、L2、L1塊的意義
1.2.4 值得注意的案例:ASSM真的能提高插入並發量嗎
1.2.5 段頭與Extent Map
1.2.6 索引范圍掃描的操作流程
第2章 調優排故方法論
2.1 調優排故的一般步驟
2.1.1 常見DUMP和Trace文件介紹
2.1.2 等待事件
2.1.3 各種資料視圖介紹
2.1.4 等待事件的注意事項
2.2 AWR概覽
2.2.1 AWR報告的注意事項
2.2.2 AWR類視圖
第3章 Buffer Cache內部原理與I/O
3.1 HASH鏈表
3.1.1 HASH鏈表與邏輯讀
3.1.2 Cache Buffers Chain Latch與Buffer Pin鎖
3.1.3 Cache Buffers Chain Latch的競爭
3.2 檢查點隊列鏈表
3.2.1 檢查點隊列
3.2.2 檢查點隊列與實例恢復
3.2.3 DBWR如何寫臟塊
3.2.4 如何提高DBWR的寫效率
3.3 LRU隊列
3.3.1 主LRU、輔助LRU鏈表
3.3.2 臟鏈表LRUW
3.3.3 Free Buffer Waits
3.3.4 誰「扣動」了DBWR的「扳機」
3.3.5 日志切換與寫臟塊
3.4 I/O總結
3.4.1 邏輯讀資料分析
3.4.2 減少邏輯讀—行的讀取
3.4.3 物理I/O
3.4.4 存儲物理I/O能力評估
第4章 共享池揭密
4.1 共享池內存結構
4.1.1 堆、區、Chunk與子堆
4.1.2 Chunk類型(x$ksmsp視圖)
4.1.3 freeabl、recr與LRU鏈表
4.1.4 Free List鏈表
4.1.5 保留池
4.1.6 SQL的內存結構:父游標、子游標
4.1.7 SQL的內存結構:父游標句柄
4.1.8 SQL的Chunk:父游標堆0和DS
4.1.9 SQL的Chunk:子游標句柄
4.1.10 SQL的Chunk:子游標堆0與堆6
4.1.11 SQL所占共享池內存
4.1.12 LRU鏈表:我的共享池大了還是小了
4.1.13 ORA-4031的吊詭:錯誤的報錯信息
4.1.14 解決ORA-4031之道:如何正確釋放內存
4.1.15 Session Cached Cursor與內存占用
4.2 語句解析和執行
4.2.1 SQL執行流程
4.2.2 內存鎖原理
4.2.3 Library Cache Lock/Pin
4.2.4 Library Cache Lock/Pin與硬解析
4.2.5 Library Cache Lock/Pin與軟解析、軟軟解析
4.2.6 NULL模式Library Cache Lock與依賴鏈
4.2.7 存儲過程與Library Cache Lock/Pin
4.2.8 斷開依賴鏈
4.2.9 低級內存鎖:Latch
4.2.10 Shared Pool Latch
4.3 Mutex
4.3.1 Mutex基本形式
4.3.2 Mutex獲取過程:原子指令測試並交換
4.3.3 Mutex獲取過程:競爭與Gets資料的更新
4.3.4 Mutex獲取過程:共享Mutex與獨占Mutex
4.3.5 獨占Mutex的獲取和釋放過程
4.3.6 Mutex獲取過程:Sleeps與CPU
4.4 Mutex與解析
4.4.1 Mutex類型
4.4.2 HASH Bucket與HASH鏈
4.4.3 Handle(句柄)與Library Cache Lock
4.4.4 HASH Table型Mutex
4.4.5 執行計划與Cursor Pin
4.5 通過Mutex判斷解析問題
4.5.1 硬解析時的競爭
4.5.2 軟解析和軟軟解析
4.5.3 解決解析階段的競爭
4.5.4 過度軟軟解析競爭的解決
4.5.5 Select與執行
第5章 Redo調優與備份恢復原理
5.1 非IMU與IMU Redo格式的不同
5.2 解析Redo數據流
5.3 IMU與非IMU相關的Redo Latch
5.4 Redo Allocation Latch
5.5 Log Buffer空間的使用
5.6 LGWR與Log File Sync和Log File Parallel Write
5.7 IMU什麼情況下被使用
第6章 UNDO
6.1 事務基本信息
6.2 回滾段空間重用規則
6.2.1 UNDO塊的SEQ值
6.2.2 UNDO段的Extend
6.2.3 Steal Undo Extent:詭異的UNDO空間不足問題
6.2.4 回滾空間重用機制:UNDO塊重用規則
第7章 ASM
7.1 ASM文件格式
7.1.1 ASM文件
7.1.2 使用kfed挖掘ASM文件格式
7.2 AU與條帶
7.2.1 粗粒度不可調條帶
7.2.2 細粒度可調條帶
7.2.3 AU與條帶的作用
7.2.4 DG中盤數量對性能的影響
7.2.5 最大I/O與最小I/O
7.2.6 數據分布對性能的影響
7.2.7 案例精選:奇怪的IO問題
7.2.8 大AU和小AU性能對比
7.2.9 AU與條帶總結
7.2.10 OLTP與大條帶
附錄 HASH算法簡單介紹
網路書店
類別
折扣
價格
-
新書87折$360