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