聯(lián)動Oracle:設(shè)計思想、架構(gòu)實現(xiàn)與AWR報告 玉素甫·買買提
定 價:99 元
- 作者:玉素甫·買買提
- 出版時間:2024/2/1
- ISBN:9787111744160
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.138OR
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
【為宏觀掌握Oracle基礎(chǔ)(第1~3章)】,介紹了進(jìn)程管理、內(nèi)存管理及存儲等基礎(chǔ)知識,并且講解了常用Linux操作系統(tǒng)性能工具的使用及結(jié)果分析方法,旨在幫助讀者了從宏觀視角掌握Oracle數(shù)據(jù)庫體系架構(gòu)和進(jìn)程組織方案!疚⒂^理解Oracle原理(第4~8章)】,圍繞Oracle內(nèi)部運行原理展開講解。首先,在Oracle數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上討論日志和回滾。其次,引入了排隊論和排隊系統(tǒng)中的概念,對比法講解了Oracle的數(shù)據(jù)緩沖區(qū)高速緩存和共享池設(shè)計思想及運行原理!敬(lián)Oracle運行流程(第9~11章)】,結(jié)合實踐案例將從提交SQL至結(jié)果返回的整個過程串起來,首先總結(jié)歸納了Oracle算法和數(shù)據(jù)結(jié)構(gòu)的重要知識點,打通了Oracle原理與數(shù)據(jù)結(jié)構(gòu)之間的橋梁。其次,通過典型案例講解AWR報告,讓讀者能夠了解完整的Oracle診斷思路。再次,介紹了集群技術(shù)、Oracle RAC及其日志結(jié)構(gòu)。然后,對Oracle多租戶架構(gòu)的演進(jìn)過程及部分新特性進(jìn)行了簡要討論及總結(jié)。
(1)作者專業(yè)實力強(qiáng)勁:作者本身為資深Oracle OCM,主導(dǎo)過10余個大型數(shù)據(jù)平臺建設(shè)案例及眾多小型數(shù)據(jù)項目,并在武漢大學(xué)專門進(jìn)修,最終總結(jié)15年來親身經(jīng)驗,鑄就本書。
(2)眾多大咖力薦:蓋國強(qiáng)、呂海波、李石君教授、周亮好評推薦,從實戰(zhàn)到理論,從業(yè)務(wù)到學(xué)術(shù),眾多專家率先肯定了本書的實力與貢獻(xiàn)。
(3)知識體系完善、深入淺出:本書旨在全面串聯(lián)Oracle原理與技術(shù)體系,既補(bǔ)全了Unix系統(tǒng)內(nèi)核、進(jìn)程、排隊論、集群等關(guān)聯(lián)知識點,又深入淺出講解了集中式數(shù)據(jù)庫系統(tǒng)和Oracle RAC集群核心技術(shù)組件的基本概念、設(shè)計思想、實現(xiàn)方式,同時深度剖析其算法及AWR報告,并配合大量直觀圖示。通過本書,讀者將更加系統(tǒng)地認(rèn)識數(shù)據(jù)庫,也容易進(jìn)一步學(xué)習(xí)國產(chǎn)數(shù)據(jù)庫的原理與操作。
(4)聯(lián)系工作實際、實戰(zhàn)性強(qiáng):本書從DBA工作實際需求出發(fā),不但提供體系化理論,更提供了高效、穩(wěn)定的數(shù)據(jù)庫系統(tǒng)實踐及優(yōu)化方法。無論讀者從事數(shù)據(jù)庫運維還是內(nèi)核研發(fā),都能從本書中獲得借鑒思路與參考方法。
為什么要寫這本書
數(shù)據(jù)庫管理知識,除了數(shù)據(jù)庫本身的基本概念、設(shè)計、實現(xiàn)等知識以外,還涉及操作系統(tǒng)、存儲、網(wǎng)絡(luò)等內(nèi)容。尤其是在對生產(chǎn)業(yè)務(wù)數(shù)據(jù)庫進(jìn)行復(fù)雜的故障診斷及性能優(yōu)化時,我們總會發(fā)現(xiàn)僅掌握數(shù)據(jù)庫本身的知識并不夠。但是作為初中級DBA(數(shù)據(jù)庫管理員),我們會在某個階段陷入學(xué)習(xí)瓶頸,找不到突破的方法。
自從2008年接觸Oracle數(shù)據(jù)庫以來,我看了大量關(guān)于Oracle的國內(nèi)外書籍,但對很多內(nèi)容體會不深,看了沒多久就忘了。我曾在2015年參加OCM認(rèn)證考試,發(fā)現(xiàn)數(shù)據(jù)庫性能優(yōu)化和故障診斷等方面的能力無法僅憑學(xué)習(xí)考試涉及的理論知識獲取。后來我有幸參加了蓋國強(qiáng)、呂海波等專家開展的DBA短期培訓(xùn),收獲很大。與這些專家溝通之后,我對Oracle數(shù)據(jù)庫的設(shè)計思想、架構(gòu)實現(xiàn)、性能優(yōu)化等方面有了更深入的理解,并且更進(jìn)一步探究UNIX內(nèi)核、進(jìn)程及進(jìn)程間通信、數(shù)據(jù)結(jié)構(gòu)(鏈表、樹、哈希表)、Socket通信等內(nèi)容。
最終,我有了梳理、總結(jié)Oracle數(shù)據(jù)庫內(nèi)核知識,并將之與其他相關(guān)的關(guān)鍵技術(shù)點串聯(lián)起來、寫作成書的想法。
我把寫書的想法及初步整理的素材發(fā)給ACE總監(jiān)、Oracle顧問專家周亮,獲得了他的鼓勵和幫助。于是,我借著自己2018年在武漢大學(xué)訪學(xué)的機(jī)會,充分利用了該校圖書館里的圖書資源,并結(jié)合李石君教授通俗易懂的數(shù)據(jù)庫原理課程,開始了系統(tǒng)性的整理和寫作之旅。
有很多讀者與我曾經(jīng)的情況類似,受制于技術(shù)瓶頸而徘徊不前,遲遲無法實現(xiàn)進(jìn)一步提升。而本書是我對自己多年學(xué)習(xí)和實踐Oracle數(shù)據(jù)庫的經(jīng)驗總結(jié),能幫助讀者節(jié)省學(xué)習(xí)時間,少走彎路,突破數(shù)據(jù)庫的學(xué)習(xí)瓶頸。
讀者對象
本書適合如下讀者閱讀:
初中級DBA
數(shù)據(jù)庫技術(shù)愛好者
想突破Oracle學(xué)習(xí)瓶頸并拓寬思路的人
本書特色
掌握Oracle技術(shù)及原理,尤其是學(xué)習(xí)Oracle在并發(fā)控制、事務(wù)處理、診斷優(yōu)化手段等方面的解決思路和實現(xiàn)算法,對DBA深入理解關(guān)系型數(shù)據(jù)庫乃至大數(shù)據(jù)技術(shù)有很大幫助。
本書將Oracle相關(guān)知識點串聯(lián)講解,旨在令讀者對該數(shù)據(jù)庫理論融會貫通,以應(yīng)用于實際工作,提高技術(shù)水平。而要達(dá)到這樣的境界則須理解甚至掌握操作系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、排隊論等相關(guān)的基礎(chǔ)及輔助知識。所以,本書適當(dāng)引入了超出數(shù)據(jù)庫本身范疇的知識點,盡量強(qiáng)調(diào)概念根源和設(shè)計思想,同時力求通過梳理將Oracle相關(guān)知識由龐雜變得簡潔有條理,并將其以通俗易懂的語言呈現(xiàn)出來。
如何閱讀本書
本書共11章,分為三篇,各篇主要內(nèi)容如下。
第一篇(第1~3章) 宏觀掌握Oracle基礎(chǔ)
本篇介紹了進(jìn)程管理、內(nèi)存管理及存儲結(jié)構(gòu)等基礎(chǔ)知識,并且講解了Linux操作系統(tǒng)性能工具的使用及結(jié)果分析方法,旨在幫助讀者從宏觀視角掌握Oracle數(shù)據(jù)庫體系架構(gòu)和進(jìn)程組織方案。
第二篇(第4~8章) 微觀理解Oracle原理
本篇圍繞Oracle內(nèi)部運行原理展開講解。首先,在Oracle數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上討論重做和回滾日志。其次,引入了排隊論和并發(fā)控制的概念,對比講解了Oracle的數(shù)據(jù)緩沖區(qū)和共享池的設(shè)計思想及運行原理。
第三篇(第9~11章) 串聯(lián)Oracle運行流程
本篇結(jié)合實踐案例將從SQL提交至最終結(jié)果返回的整個運行過程串聯(lián)起來。首先,總結(jié)歸納了Oracle算法和數(shù)據(jù)結(jié)構(gòu)的重要知識點,打通了Oracle原理與數(shù)據(jù)結(jié)構(gòu)之間的橋梁。其次,通過典型案例講解AWR(Automatic Workload Repository,自動負(fù)載信息庫)報告,讓讀者能夠了解完整的Oracle診斷思路。再次,介紹了集群技術(shù)、Oracle RAC(真正應(yīng)用集群)及其日志結(jié)構(gòu)。最后,對Oracle多租戶架構(gòu)的演變及部分新特性進(jìn)行了簡要討論及總結(jié)。
如果你是一名經(jīng)驗豐富的DBA,已經(jīng)理解了Oracle的相關(guān)基礎(chǔ)知識和使用技巧,那么可以直接閱讀第三篇。如果你是一名初學(xué)者或中級DBA,那么建議從第一篇開始學(xué)習(xí),以便對操作系統(tǒng)及進(jìn)程等基礎(chǔ)概念建立相對深入且正確的認(rèn)識。
勘誤和支持
如果書中出現(xiàn)了錯誤或者不準(zhǔn)確的地方,懇請讀者批評指正。為了方便與各位讀者交流,我創(chuàng)建了微信公眾號(微信號:kuqlan)。歡迎你將書中的錯誤發(fā)給我,或者在遇到Oracle相關(guān)問題時留言,我將努力解答。此外,本書中的全部代碼都將發(fā)布在該公眾號上。如果你有更多的寶貴意見,也歡迎發(fā)送郵件至819287413@qq.com,很期待聽到你的反饋。
致謝
感謝ACE總監(jiān)周亮。在我寫作本書的過程中,他不但鼓勵我,而且對我的技術(shù)疑惑有問必答。沒有他的鼓勵和支持,就不會有這本書。我認(rèn)為,在數(shù)據(jù)庫“江湖”中,周亮是故障診斷及處理領(lǐng)域的“小李飛刀”。
感謝呂海波專家。我因OCM(Oracle Certified Master,Oracle認(rèn)證大師)培訓(xùn)認(rèn)識了他,他的課程及著作幫助我深入理解Oracle內(nèi)核,與他的每次交流都能解決我的許多疑惑。
感謝武漢大學(xué)的李石君教授及武大圖書館。李教授的課程進(jìn)一步鞏固了我的數(shù)據(jù)庫管理理論基礎(chǔ);而武大圖書館為我提供了豐富的學(xué)習(xí)資料,為編寫本書,我?guī)缀醴榱诉@個圖書館里所有與Oracle相關(guān)的書籍。
感謝我的家人,他們的理解及默默支持時時刻刻為我灌輸著信心和力量!
玉素甫·買買提
廣電企業(yè)資深Oracle OCM,擅長數(shù)據(jù)庫性能優(yōu)化、數(shù)據(jù)遷移、IT系統(tǒng)從0到1的建設(shè)和運維過程,目前主要從事數(shù)據(jù)中心(IDC)及云平臺建設(shè)運維相關(guān)工作。
近15年來,作為項目經(jīng)理及主力軍親歷10余個中大型項目建設(shè),如呼叫中心系統(tǒng)、BOSS系統(tǒng)、基于OpenStack的企業(yè)云平臺、用戶行為大數(shù)據(jù)采集與分析平臺、OSS綜合網(wǎng)管、GIS資管系統(tǒng)、IDC建設(shè)工程等。
前 言
第一篇 宏觀掌握Oracle基礎(chǔ)
第1章 Oracle概貌及進(jìn)程 2
1.1 Oracle概貌 2
1.1.1 串聯(lián)Oracle知識體系的挑戰(zhàn) 3
1.1.2 UNIX體系結(jié)構(gòu)簡介 4
1.1.3 Oracle進(jìn)程狀態(tài)轉(zhuǎn)換 6
1.2 充分理解進(jìn)程 8
1.2.1 何為進(jìn)程 8
1.2.2 進(jìn)程的狀態(tài) 10
1.2.3 進(jìn)程切換 11
1.2.4 進(jìn)程間通信 11
1.3 Oracle的進(jìn)程組織方案 12
1.3.1 2N方案:一個數(shù)據(jù)庫服務(wù)器
進(jìn)程對應(yīng)一個用戶進(jìn)程 12
1.3.2 N+M方案:M個數(shù)據(jù)庫服務(wù)器進(jìn)程對應(yīng)N個用戶進(jìn)程 14
1.4 Oracle的進(jìn)程結(jié)構(gòu) 15
1.4.1 Oracle常見進(jìn)程及簡介 15
1.4.2 Oracle進(jìn)程的啟動順序 20
1.4.3 進(jìn)程、連接、會話的區(qū)別 21
1.5 本章小結(jié) 22
第2章 Oracle內(nèi)存與實例 24
2.1 虛擬存儲管理 24
2.1.1 操作系統(tǒng)虛擬內(nèi)存結(jié)構(gòu) 24
2.1.2 共享內(nèi)存段的概念 26
2.1.3 共享內(nèi)存段與內(nèi)核參數(shù) 26
2.1.4 查看共享內(nèi)存段 27
2.1.5 共享內(nèi)存段與進(jìn)程 28
2.1.6 內(nèi)存交換與HugePage 29
2.1.7 內(nèi)存文件系統(tǒng) 29
2.2 Oracle實例 30
2.2.1 數(shù)據(jù)庫實例的構(gòu)成 30
2.2.2 ASM實例的構(gòu)成 32
2.2.3 ASM啟動與參數(shù)文件 33
2.2.4 數(shù)據(jù)庫實例與ASM實例的
交互 34
2.3 Linux性能分析工具 35
2.3.1 查看進(jìn)程隊列及系統(tǒng)負(fù)載 36
2.3.2 查看I/O 38
2.4 Oracle常用視圖及跟蹤工具 40
2.4.1 常用動態(tài)性能視圖 40
2.4.2 查看SQL執(zhí)行計劃 43
2.4.3 常用診斷和調(diào)試工具 46
2.5 本章小結(jié) 49
第3章 Oracle存儲結(jié)構(gòu) 50
3.1 存儲體系結(jié)構(gòu) 50
3.1.1 邏輯存儲結(jié)構(gòu) 52
3.1.2 段和表的區(qū)別 52
3.1.3 數(shù)據(jù)塊結(jié)構(gòu) 55
3.1.4 Rowid結(jié)構(gòu) 56
3.1.5 索引結(jié)構(gòu)及索引范圍掃描 59
3.2 數(shù)據(jù)文件存儲結(jié)構(gòu) 60
3.2.1 數(shù)據(jù)文件物理存儲結(jié)構(gòu) 61
3.2.2 Oracle數(shù)據(jù)文件讀取 62
3.3 日志文件存儲結(jié)構(gòu) 65
3.3.1 重做記錄存儲結(jié)構(gòu) 65
3.3.2 檢查點 66
3.3.3 控制文件 68
3.4 ASM存儲結(jié)構(gòu) 70
3.4.1 ASM磁盤組與磁盤 70
3.4.2 ASM文件 72
3.4.3 ASM空間分配 73
3.5 ASM存儲設(shè)備配置 76
3.5.1 ASM磁盤發(fā)現(xiàn) 76
3.5.2 多路徑配置 78
3.5.3 UDEV簡介及配置 80
3.6 本章小結(jié) 81
第二篇 微觀理解Oracle原理
第4章 重做 84
4.1 深入認(rèn)識重做記錄 84
4.1.1 SCN:系統(tǒng)改變號 85
4.1.2 SEQ與RBA 85
4.1.3 準(zhǔn)備重做日志轉(zhuǎn)儲 86
4.1.4 轉(zhuǎn)儲文件的內(nèi)容及構(gòu)成 87
4.2 IMU與非IMU 89
4.2.1 非IMU的重做日志申請
過程 90
4.2.2 IMU的重做日志申請過程 91
4.3 LGWR的工作原理 93
4.3.1 寫日志流程 93
4.3.2 3秒喚醒和commit寫入的
差異 93
4.4 Redo等待事件 94
4.4.1 log buffer space 94
4.4.2 log file parallel write 94
4.4.3 log file sync 94
4.5 多LGWR進(jìn)程 95
4.6 本章小結(jié) 96
第5章 回滾 98
5.1 回滾的概念及原理 98
5.1.1 Do-Undo-Redo協(xié)議 99
5.1.2 Undo部分的生成過程 99
5.1.3 數(shù)據(jù)塊頭、回滾段頭、回滾塊
之間的關(guān)系 104
5.1.4 事務(wù)槽及相關(guān)等待事件 108
5.2 讀一致性及塊清除 109
5.3 獲取UNDO信息 110
5.4 本章小結(jié) 112
第6章 排隊論和并發(fā)控制 113
6.1 排隊論和事務(wù)處理 113
6.1.1 排隊論的基本概念 113
6.1.2 事務(wù)的基本概念 116
6.1.3 事務(wù)流 118
6.2 響應(yīng)時間曲線圖和CPU、I/O
系統(tǒng)模型 119
6.2.1 響應(yīng)時間曲線圖 119
6.2.2 CPU系統(tǒng)模型 121
6.2.3 I/O系統(tǒng)模型 121
6.3 并發(fā)控制和封鎖 122
6.3.1 并發(fā)控制的基本概念 122
6.3.2 封鎖的概念和類型 123
6.4 Oracle多粒度鎖機(jī)制 123
6.4.1 RDBMS的TM鎖和
意向鎖 124
6.4.2 Oracle的TM鎖和意向鎖 125
6.4.3 Oracle鎖查詢腳本 126
6.5 本章小結(jié) 126
第7章 數(shù)據(jù)緩沖區(qū) 128
7.1 數(shù)據(jù)緩沖區(qū)結(jié)構(gòu) 128
7.1.1 Working Set 129
7.1.2 Buffer Header 129
7.1.3 Hash Bucket與
Hash Chain 130
7.2 并發(fā)控制及申請流程 131
7.2.1 CBC Latch和Pin 131
7.2.2 共享與獨占 134
7.2.3 LRU隊列 135
7.2.4 數(shù)據(jù)塊申請流程 137
7.3 物理讀與邏輯讀 139
7.3.1 邏輯讀過程及統(tǒng)計SQL 139
7.3.2 物理讀過程及統(tǒng)計SQL 139
7.4 本章小結(jié) 140
第8章 共享池 142
8.1 共享池結(jié)構(gòu) 142
8.1.1 子池 143
8.1.2 空閑列表與LRU 146
8.1.3 共享池內(nèi)存申請流程 147
8.1.4 ORA-4031報錯過程 149
8.2 SQL解析及并發(fā)控制 149
8.2.1 SQL解析及游標(biāo) 150
8.2.2 library Cache Lock加鎖
步驟 153
8.2.3 cursor_sharing 155
8.2.4 v$latch、v$latch_childred
統(tǒng)計 156
8.3 Mutex 157
8.3.1 Mutex簡介 157
8.3.2 Mutex的類