出版時間:2012-10-18 出版社:人民郵電出版社 作者:白 鱔,儲學榮 頁數(shù):432
Tag標簽:無
前言
寫完《Oracle優(yōu)化日記:一個金牌DBA的故事》和《ORACLE RAC日記》后,很多網(wǎng)友問我下面是否會繼續(xù)寫書。我的想法還是和以前一樣,先整理整理自己的思路,寫一些東西發(fā)在Oracle粉絲網(wǎng)上,寫過一段時間再根據(jù)已經(jīng)完成的內(nèi)容決定新書的結(jié)構(gòu)。開始我是想把新書寫成DBA日記系列第三部的,不過寫作的過程中才發(fā)現(xiàn)這種模式寫下去有一點千篇一律的感覺了,很多案例從根本上看十分相似。有一次和同事老儲聊天的時候,他提到現(xiàn)在很多年輕人不會按照Oracle的內(nèi)在原理去考慮問題,從而導致經(jīng)常出現(xiàn)常識性的錯誤。他的這句話就像火花一樣在我腦海中閃現(xiàn),Thinking in Oracle這幾個英文詞匯就出現(xiàn)在我的腦中。如果每個人都能以O(shè)racle的基本原理為依據(jù)去考慮問題,那不是很好嗎?老儲的英文名字是John,在我的朋友里有兩個John。一個是老外John,我還在玩ICQ的時候認識的網(wǎng)友,一個Oracle技術(shù)狂人。不過老外John現(xiàn)在已經(jīng)成為一家銀行的IT技術(shù)主管,隨著歲月的流逝,當年的技術(shù)狂人現(xiàn)在已經(jīng)成了狂熱的人文主義者。去年圣誕新年假期他剛剛完成了10000公里行程的中南美洲自駕游,所到之處全部入住當?shù)刈罡呒壍木频辏援數(shù)刈畎嘿F的美食,還常常邂逅美女,雖然郵件還只是寥寥數(shù)字,但是羨慕嫉妒恨已經(jīng)讓我把這個資本主義的老家伙好好罵了幾天。另外一個John就是老儲,他屬于睡在我對面的弟兄,我大學時的室友。自從1995年我把他從unixware漢化小組忽悠到深圳后,我們一直在一起合作。老儲是個很低調(diào)的人,低調(diào)到第一次和客戶打交道的時候客戶可能會質(zhì)疑他的能力,不過隨著和他交往的深入,你可以發(fā)現(xiàn)他的深不可測。老儲的建議讓我重新定義了本書的結(jié)構(gòu),把它分為基礎(chǔ)知識、工具、方法和案例四大部分。不過隨著寫作的深入,我發(fā)現(xiàn)這個工作是十分艱巨的。這樣一本書結(jié)構(gòu)之大,內(nèi)容之龐雜,遠遠超出了我的想象。于是我重新調(diào)整結(jié)構(gòu),將工具這一部分的內(nèi)容從書中拿掉,準備獨立成書,把方法和案例用兩章講完。這樣調(diào)整后本書的內(nèi)容更為緊湊,篇幅也可以控制在450頁左右。更大的驚喜也接踵而來,我終于說服了老儲,讓他參與到本書的寫作中來。其實第一次和老儲溝通這本書的時候我就邀請過他,不過被他以沒空為由拒絕了。老儲是一個懶散的人,我每次給他布置寫文檔的任務(wù),他總是在快到期的時候才開始動手,不過每次提交的東西都讓人無可挑剔。能讓這么靠譜的人參與本書的寫作,確實可以為書增色不少。老儲憑著深厚的開發(fā)功力,在性能優(yōu)化方面具有很敏銳的觀察力,往往能夠在很短很短的時間內(nèi)找到系統(tǒng)的關(guān)鍵問題,而且他在Oracle文件結(jié)構(gòu)和ASM的結(jié)構(gòu)方面的研究很深,自己也編寫了一個類似DUL的工具。有了他的加入,關(guān)于ASM原理和數(shù)據(jù)文件結(jié)構(gòu)這部分內(nèi)容我就可以推給他了。此前我正為這兩節(jié)犯愁,考慮是否在書中去掉這兩節(jié),補充一些其他內(nèi)容。老儲的加入使這兩節(jié)保留了下來,對于數(shù)據(jù)文件結(jié)構(gòu)和ASM文件結(jié)構(gòu)感興趣的朋友可能會感到慶幸,保留這兩節(jié)也使得本書的內(nèi)容更加豐富。我給本書起的名字是《Thinking in ORACLE之DBA的思想天空》,主編覺得這是一個十分霸氣的名字。實際上,透過某個事物的本質(zhì)去看問題,無論針對什么,都是比較高的境界。對于某些事情,在沒有弄清楚其本質(zhì)之前,我們往往難以找到正確的應(yīng)對方法,雖然偶爾我們會像瞎貓碰到死耗子一樣歪打正著,但是好運氣不會總是伴隨著你。就像前些年,我不了解“回南天”的成因,因此在每年的2、3月份總是十分痛苦。在廣東沿海生活過的人都知道每年的春天總是會碰到回南天,時間有長有短,至少也在半個月左右。在回南天里,家里到處都是濕漉漉的,地上、墻上甚至天花板上都會滲出水珠。在這樣的環(huán)境中生活半個月,絕對是十分恐怖的事情。為了讓家里盡快干起來,我的第一反應(yīng)是門窗大開,同時用風扇拼命扇風。不過這樣處理并不能減輕返水的現(xiàn)象,有時候反而水更加多了。后來我請教了一位搞大氣海洋研究的人,他告訴我回南天的成因是春天東南季風帶來大量的水氣,而當氣溫回升的時候,室外氣溫高于室內(nèi)氣溫,濕熱的空氣遇到室內(nèi)較冷的物體時,就會發(fā)生冷凝現(xiàn)象,從而就引發(fā)了反水的現(xiàn)象。一旦了解了回南天的成因,就很容易找到對付回南天的辦法了,只要碰到氣溫大幅度回升的天氣,就門窗緊閉。靠著這個辦法,我終于擺脫了回南天的困擾,無論門外的走廊濕成什么樣,我家的地上總是干干的。后來每當我看到朋友家里滿地積水的時候,就會把這個方法教給他們,他們也逐漸遠離了回南天的困擾。從這個生活案例中,我們也可以看到,一旦了解了問題的本質(zhì),就很容易找到正確的解決方法。而沒有理解問題本質(zhì)的時候,我們所采取的應(yīng)對措施不一定是靠譜的。這個原則應(yīng)用到Oracle數(shù)據(jù)庫方面,也是一樣的。對于每個來應(yīng)聘DBA的人我都會問他們一個問題:“Oracle到底是什么?”有些人會用數(shù)據(jù)庫基礎(chǔ)的理論來回答我:“數(shù)據(jù)庫是數(shù)據(jù)的集合。”也有些人會感到茫然,不知道我問這個問題是什么意思。實際上很多Oracle DBA從來沒有思考過這個問題。“Oracle就是Oracle,是一個產(chǎn)品,還能有什么意思呢?我不知道Oracle到底是什么也沒有影響到我做一個合格的DBA。”很多人都會這么想。實際上對于Oracle我們確實還需要重新去認識認識,每個DBA在學習Oracle的時候都往往注重于學習如何建庫、如何管理、如何編程、如何優(yōu)化。我們總在不停地去學習一些方法,學習一些秘籍。如果偶爾學到了一些不傳之秘,都會感到興奮異常。也有些人使用這些秘籍解決了一些疑難雜癥,成為了大家傳說中的高手。雖然說這也是學習Oracle數(shù)據(jù)庫最為常見的一種方法,但是這樣學習下去,我們總是在記憶一些枯燥的語法和腳本,雖然經(jīng)過數(shù)年我們積累下了大量的經(jīng)驗,但還是無法真正地理解Oracle,數(shù)據(jù)庫升級了,系統(tǒng)變化了,我們就必須從頭去學習。常年累月,我們總是在一次一次循環(huán)往復地重復著同樣的事情,直到筋疲力盡,對Oracle失去往日的激情,最終DBA只是一個職業(yè),Oracle只是我們謀生的手段。這樣學習下去,幾年后,很多人就會碰到瓶頸,雖然說自己處理問題的能力和工作經(jīng)驗已經(jīng)很豐富了,但是技術(shù)好像停滯不前了。我周圍一些做了五六年DBA工作的朋友都遇到過類似的情況,他們咨詢我的時候,我告訴他們,這是因為經(jīng)驗的積累已經(jīng)到了一定程度,需要對Oracle基礎(chǔ)概念有更深刻的認識。這種情況下,你需要靜下心來認真看書,學習Oracle的基礎(chǔ)概念,只有徹底搞清楚了這些,才能跨過這道坎,達到一個新的境界。絕大多數(shù)工作了五六年的朋友已經(jīng)無法靜下心來做這些事情了,因此他們失去了突破的機會。不過也沒關(guān)系,大多數(shù)人選擇了新的職業(yè)規(guī)劃,從事管理,或者轉(zhuǎn)向售前、業(yè)務(wù)專家等職位。事實上,我們可以換一種方式來學習Oracle,讓Oracle的精神融入DBA的血液中,讓DBA像Oracle一樣思考問題,使Oracle成為我們的愛好,作為我們生命的一部分存在。對于大多數(shù)DBA來說,這也許只是一個烏托邦式的理想,多數(shù)DBA只是需要有一份工作,需要靠這份工作來生存,娶妻生子,享受生活。并不是所有的人都希望讓Oracle成為自己生命的一部分,這是很現(xiàn)實的,不過我們雖然可以僅僅把Oracle當做是謀生手段,但也還是可以同時嘗試了解Oracle更多的本質(zhì),像Oracle一樣思考。對大多數(shù)人而言,像Oracle一樣思考雖然不能帶給你更多的生活樂趣,但是通過以這樣的方式去學習和思考,會更加精確地了解Oracle的精髓,讓自己在DBA的成長過程中少走彎路。10多年前我第一次接觸Java的時候,感到十分頭痛。不是自夸,10多年前,我是一個相當不錯的C程序員,最高紀錄是一天之內(nèi)編寫500多行復雜的代碼,而且一次性編譯通過,一次性測試通過,這樣的記錄的誕生是基于十分良好的過程思維能力的。不過我這個自封的編程高手第一次接觸Java的時候,卻感到十分吃力。我無法用面向?qū)ο蟮乃枷肴ゾ帉懗绦?,所以學起Java來十分痛苦,幾次學習,最后都放棄了。直到有一天我看到了一本英文的書籍Thinking in Java,通過這本書,我掌握了Java和面向?qū)ο笤O(shè)計、編程的主要思路。自從看了這本書之后,我再次面對Java程序的時候,發(fā)現(xiàn)一切都是那么地簡單,很快我就掌握了Java編程?,F(xiàn)在我雖仍然還只是一個三流的Java程序員,不過粉絲網(wǎng)的一些修修補補的工作我完全能夠勝任了,而且在和一些Java開發(fā)人員交流的時候,我也能夠很快地理解他們的思路。后來我總結(jié)了一下,在看Thinking in Java這本書之前,我在編寫Java程序的時候,并沒有理解面向?qū)ο缶幊痰母拍睿荒苁钦肇埉嫽?,拿著一個例子在上面修改。實際上我的編程風格還是面向過程的,因此寫出來的代碼質(zhì)量很差。而通過閱讀Thinking in Java,我終于學會了面向?qū)ο蟮姆椒ǎ肑ava本身的思想去考慮問題,因此能夠更加準確地抓住問題的本質(zhì)。我想,學習Oracle數(shù)據(jù)庫也是這樣,如果我們通過一個又一個案例去學習Oracle,那么將永遠停留在表層上。有些DBA只能重復相同的案例,這樣的DBA,哪怕干上10年20年,也可能只學到Oracle的一些皮毛,碰到一個沒有見到的案例,可能就會感到手足無措。而水平高一些的DBA往往能夠判斷出案例的相似性,并通過分析找到類似案例的解決方法,這其實就是因為透過現(xiàn)象看到了問題的本質(zhì)。很多DBA可能都碰到過我下面所說的一些問題,有時候我們無法評估某項調(diào)整可能對系統(tǒng)帶來的影響,有時候我們面對一個復雜局面的時候很難快速找到問題的關(guān)鍵,也有時候我們在為解決某種等待事件而感到無從入手。實際上,遇到這些問題,都是因為缺乏對于Oracle內(nèi)部原理的充分認識。在很多情況下,當經(jīng)驗無法為我們提供足夠支持的時候,就必須從原理出發(fā)進行思考,才有可能真正掌握問題的根源,從而解決問題。前幾天我在一個客戶現(xiàn)場做數(shù)據(jù)拯救工作的時候,他們的備庫(也就是現(xiàn)在的主生產(chǎn)庫)突然宕機了,當時客戶正在做一個刪除臨時文件的操作,領(lǐng)導就認為他這個操作導致了宕機,而操作人員也覺得很冤枉,因為這是一個十分常規(guī)的操作。我看了看日志文件,從日志上看不出任何由于臨時表空間和臨時段操作引起的問題,同時又看到了一個好像是人工操作停庫的信息,于是推斷可能是人為操作所致。后來經(jīng)過多方面查證,確實是有個DBA在家里遠程做維護的時候,發(fā)現(xiàn)操作HANG住了,情急之下,直接重啟了數(shù)據(jù)庫。如果你不了解臨時段和臨時表空間操作的原理,面對這個問題,很可能一上來就把重點放在刪除臨時文件導致宕機問題的分析上面,這樣就偏離了正確的方向,解決問題的效率和成功率就會大大降低。我們強調(diào)理論的重要性,也不是片面強調(diào)理論而不重視實踐。Oracle數(shù)據(jù)庫是實踐性很強的,沒有實踐,光學習理論是無法成為真正的高手的。比如說我們學習了很多OWI相關(guān)的理論,了解了數(shù)據(jù)庫等待事件和一些狀態(tài)指標的含義,但是我們看到一個庫的AWR報告的時候,還是無法知道某個指標是否正常。當對大型OLTP系統(tǒng)缺乏實踐經(jīng)驗的時候,我們就無法知道大型OLTP系統(tǒng)的一些技術(shù)指標的特性,因此也很難從中找到疑點,進而找到解決問題的方法。這些年里我接觸過大量的DBA,我一般把他們分為四大類。第一類DBA是經(jīng)驗型的,處理問題的主要方式取決于以往的經(jīng)驗,他們往往都有很好的習慣,會把每一個處理過的案例整理出來,今后再碰到這類案例的時候,他們會很快地解決問題。隨著工作時間的增長,他們的技術(shù)也會相應(yīng)地提高。第二類DBA是理論型的,他們具有很深的理論基礎(chǔ),經(jīng)常探討一些“Oracle Internal Only”的高深問題,比如他們能夠很清晰地告訴你共享池分配的算法,告訴你checkpoint的工作原理,但是這些DBA往往缺乏實際的工作經(jīng)驗,他們研究Oracle卻很少有機會接觸大型的數(shù)據(jù)庫系統(tǒng),因此實際解決問題的能力并不強。另外,由于他們的知識比較片面,在某些方面很深入,而某些方面就是淺嘗輒止,這種不均衡導致他們的知識只是以點的形式存在,無法串成整體,因此那些很深入的研究并不能給他們實際工作帶來多大的幫助。第三類DBA是技巧型的,他們并不注重理論的學習和經(jīng)驗的積累,在處理問題的時候往往能夠利用Metalink和谷歌、百度之類的工具去搜索解決方案,這類DBA最為常見。他們處理問題往往靠運氣,而且一些他們自鳴得意的成功案例往往也是經(jīng)不起推敲的,下回碰到類似案例時,可能還會失敗。第四類DBA是虛心請教型的,他們無論碰到什么問題,甚至連錯誤信息都沒有看明白,就開始叫“我的系統(tǒng)出問題了”,然后到處去問如何解決。實際上,這四類DBA都是有缺陷的。第一類DBA可能經(jīng)過多年的工作,有十分豐富的經(jīng)驗,處理問題的能力很強,而且分析問題十分敏感,很容易抓到問題的關(guān)鍵,但是由于沒有深入理解Oracle的理論,碰到一些較為深入的問題的時候,就不容易立刻找到關(guān)鍵。雖然憑借著自身豐富的經(jīng)驗和問題分析排查能力,他們最終也能解決大部分的問題,但是往往問題解決后還是沒有真正弄明白為什么會解決問題,下一次碰到類似的問題,可能還是要花很大的代價。第二類DBA在某些方面的理論知識很強,總是喜歡研究一些十分高深的原理性的東西,但是這類DBA的主要精力都放在了研究一些Oracle內(nèi)部原理上了,他們沒有很多的時間去實踐他們學到的理論。這類DBA往往知識面較為狹窄,僅精通于自己研究比較深入的領(lǐng)域,在實際工作中也很難發(fā)揮出自身的理論研究特長。第三類DBA實際上在我們的現(xiàn)實生活中是最常見的,“萬事不明問百度,百度不明就抓瞎”,確實谷歌、百度和Metalink能夠幫助我們解決不少問題,但是這類DBA往往在問題解決后沒有好好思考一下,為什么這個方法能夠解決問題,更沒有認真總結(jié)和歸納一下,下一次碰到類似的問題,還是無法依靠自己的思考去解決問題。于是再Google一把,也許這一次運氣沒有那么好了,Google出來的資料不是上回的那個了,于是結(jié)果可能是很悲慘的。第四類DBA在我們現(xiàn)實生活中也經(jīng)常出現(xiàn),網(wǎng)絡(luò)社會通信十分發(fā)達,打個電話或者在qq群里、msn里問問,也許就有人幫忙解決問題。久而久之,這些人放棄了自己的思考,碰到一點點小問題都要找人問。缺乏獨立思考問題能力的DBA,只能稱為一個數(shù)據(jù)庫操作員,實際上離真正的DBA還有十萬八千里呢??吹竭@里,大家可能明白了,老白實際上說的不是四類DBA,而是DBA的四種性格,這四種性格可能會集中在某一個人身上。以老白學習DBA的經(jīng)驗來看,理論結(jié)合實踐是十分重要的。在2000年前,老白雖然做了很多項目,也是很多人眼里的Oracle數(shù)據(jù)庫高手,但那時的老白就是第一類DBA的典型,沒有經(jīng)過多少理論學習,幾乎所有的Oracle數(shù)據(jù)庫的技能都是從實踐中獲得的。雖然在實踐中我總結(jié)出大量的經(jīng)驗,甚至有很多客戶建議我寫一本書,把我對Oracle的理解寫出來,不過當我自信滿滿地開始寫書的時候,卻突然發(fā)現(xiàn),我的一些知識需要進行確認,否則寫出來就貽笑大方了。于是我開始大量地學習Oracle的一些理論知識,隨著寫書過程的深入,我越發(fā)感到自身理論水平的不足?!禣racle數(shù)據(jù)庫深度歷險》這本書我寫了3年,實際上2002年就徹底放棄了出版這本書的念頭,因為我發(fā)現(xiàn)自己的理論知識確實還需要進一步的梳理。但是我并沒有放棄寫作,因為我發(fā)現(xiàn)通過寫作,我更為系統(tǒng)地將Oracle的理論知識梳理了一遍,這次梳理是通過我以前的知識體系、工作經(jīng)驗,與Oracle Concepts的理論基礎(chǔ)進行了一次完整的整合。通過這3年的寫作,我終于完全疏通了自己的Oracle的理論體系,好像一個練武術(shù)的人,終于打通了任督二脈,感到無比的暢快。聽老白說了這么一大通,是不是很多人都感覺到手腳發(fā)涼,難道成為一個合格的DBA有這么難嗎?如果我沒有打通任督二脈,就不算一個合格的DBA嗎?實際上DBA成長的道路是很多的,并不一定要走老白這一條路,老白僅僅是根據(jù)自身的經(jīng)歷,通過這本書來幫助大家梳理Oracle的一些基礎(chǔ)知識而已。還是那句話,如果Oracle是你的愛好,那么你無論花多大代價去研究它都是值得的;如果Oracle只是你職場生涯中的一份工作而已,那么只要你認真對待它就可以了,沒必要像老白那樣執(zhí)著。作為一個DBA,理論學習和實踐如何相結(jié)合是十分關(guān)鍵的。在初期,一般來說DBA都是通過了某種途徑接觸了Oracle數(shù)據(jù)庫,進行了一系列的操作。在工作過程中發(fā)現(xiàn)了一些問題,才開始想到需要去看一些Oracle的書籍。在這個階段,Oracle官方文檔的2days、7 days系列入門書籍就十分有效。通過這些書籍你可以了解Oracle的一些基本的原理和基本的操作,幫你在工作中解決部分問題。這樣你在工作中就能夠應(yīng)對一些簡單的問題了。不過碰到稍微復雜一些的情況,你可能還是會發(fā)懵,這時,Oracle Concepts這本書就十分關(guān)鍵了。從這個階段開始看這本書是十分必要的,它有助于你在積累經(jīng)驗的過程中不斷地完善理論。不過,你可能還無法完全理解Oracle Concepts中的基本概念,通讀這本書是十分必要的,但是不必要把每個問題都搞得十分清楚。因為要達到這一點,你需要花費太多的時間和精力,同時也可能會由于缺乏足夠的技術(shù)指導而無法真正理解問題的本質(zhì)。不過在這個階段,碰到某些問題或者研究各種案例的時候,經(jīng)常翻翻Oracle Concepts這本書是十分有益的,因為在處理問題的時候,你針對這個問題的思考會比較深入,這個時候,認真分析一下相關(guān)的理論是十分有效的。對于處理過的每一件事情,都做一個比較詳細的記錄,是十分好的習慣。記錄下某個案例,可以供水平提高后再進行回顧,或者將案例提交給某個專家去評審,或者在網(wǎng)上和大家一起討論,對于學習Oracle的原理都是十分好的方法,可以幫助你在分析案例時提高對Oracle數(shù)據(jù)庫原理的認知。在這本書里,老白會把《Oracle數(shù)據(jù)庫深度歷險》中的一些內(nèi)容,結(jié)合老白的實際工作經(jīng)驗展現(xiàn)給大家。我會剖析原理,并結(jié)合案例來說明這些理論知識如何在實踐中應(yīng)用。希望老白的這次寫作經(jīng)歷,能夠給大家?guī)硪恍椭?/pre>內(nèi)容概要
數(shù)據(jù)庫的性能優(yōu)化一直是DBA日常工作中非常重要的組成部分,然而很多DBA在學習了大量技術(shù),參加了大量培訓后,仍然會在實際工作中遇到難以下手的問題。實際上,在數(shù)據(jù)庫優(yōu)化工作中,方法和思路遠比技術(shù)實現(xiàn)重要得多。
本書重在介紹Oracle數(shù)據(jù)庫的性能調(diào)優(yōu)方法及相應(yīng)的工作思路,但并不拘泥于技術(shù)細節(jié)。作者通過大量真實案例,深度剖析了相關(guān)技術(shù)原理,同時還闡述了理論知識在實踐中的應(yīng)用方法。優(yōu)化工作的本質(zhì)其實就是透過表象探尋根源,解決問題實現(xiàn)調(diào)優(yōu),正所謂“思路是道,操作方法是技”,得道是極大的提升,也是DBA的思想精髓。作者簡介
白鱔
Oracle
ACE。從事IT工作20年,曾供職于DEC、賽格計算機、長天集團、聯(lián)想金融事業(yè)部等,擔任過技術(shù)總監(jiān)、應(yīng)用體系總監(jiān)等技術(shù)職務(wù)。長期從事應(yīng)用軟件開發(fā)、設(shè)計與性能優(yōu)化工作,1996年主持設(shè)計了國內(nèi)首套電信級長話聯(lián)機實時計費系統(tǒng),榮獲福建省科技進步三等獎;1998年主持設(shè)計了首套三檢合一的檢驗檢疫綜合管理系統(tǒng),榮獲深圳市科技進步三等獎。2002年起從事專業(yè)IT運維與技術(shù)支撐服務(wù)工作,在系統(tǒng)優(yōu)化領(lǐng)域有十分豐富的工作經(jīng)驗,參與過數(shù)十個大型優(yōu)化項目。著有《Oracle
優(yōu)化日記》、《Oracle RAC日記》等技術(shù)書籍。
儲學榮
1992年畢業(yè)于南京大學計算機系,曾供職于得實集團、長天集團、聯(lián)想集團等知名IT企業(yè),擔任程序員、軟件架構(gòu)師等職務(wù)。從事過電信、金融、政府等行業(yè)核心系統(tǒng)研發(fā)工作,參與過UNIX內(nèi)核開發(fā)工作并獨立開發(fā)了類自然語言的電信計費專用語言ABC的編譯器和P代碼運行虛擬機。2005年開始專門從事IT咨詢與性能優(yōu)化工作,在Oracle數(shù)據(jù)庫性能優(yōu)化方面有很深的造詣,并對Oracle數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu)有較深的研究,編寫有大量的數(shù)據(jù)拯救工具。書籍目錄
目 錄
第一部分 基礎(chǔ)原理篇
第1章 理解Oracle數(shù)據(jù)庫和實例
1.1 什么是Oracle數(shù)據(jù)庫
1.2 Oracle數(shù)據(jù)庫的物理結(jié)構(gòu)
1.2.1 Inventory
1.2.2 口令文件
1.2.3 參數(shù)文件
1.2.4 控制文件
1.2.5 在線日志文件
1.2.6 數(shù)據(jù)文件
1.2.7 歸檔日志文件
1.3 實例和多實例數(shù)據(jù)庫
1.3.1 什么是數(shù)據(jù)庫實例
1.3.2 多實例數(shù)據(jù)庫
1.4 數(shù)據(jù)庫后臺進程
1.4.1 進程結(jié)構(gòu)
1.4.2 后臺進程的功能作介紹
1.4.3 哪些后臺進程可以殺
1.4.4 是誰在執(zhí)行SQL
第2章 理解DB Cache
2.1 什么是DB Cache
2.2 DB Cache的分配和DBWR的相關(guān)算法
2.2.1 DB_WRITER_PROCESSES參數(shù)
2.2.2 DB Cache的幾個主要的鏈和CKPT算法
2.2.3 檢索某個DB BLOCK的模擬算法
2.3 DB Cache相關(guān)的參數(shù)閂鎖和等待事件
2.4 DB Cache優(yōu)化的一些探討
2.4.1 DB Cache和熱塊沖突
2.4.2 使用KEEP POOL能改善CBC爭用嗎
2.4.3 如何判斷DB Cache是否足夠
2.4.4 DB Cache優(yōu)化要點
第3章 理解共享池
3.1 共享池堆的內(nèi)部結(jié)構(gòu)
3.1.1 進一步了解共享池
3.1.2 共享池的子池技術(shù)
3.1.3 字典緩存
3.1.4 庫緩存和游標
3.2 共享池和游標
3.2.1 游標與游標共享
3.2.2 游標與SQL的執(zhí)行
3.2.3 游標共享和綁定變量
3.2.4 OPEN CURSOR和OPEN_CURSORS參數(shù)
3.2.5 CURSOR_SPACE_FOR_TIME參數(shù)
3.2.6 SESSION_CACHED_CURSORS參數(shù)和OPEN_CURSORS
3.2.7 CURSOR_SHARING和游標共享
3.2.8 游標的關(guān)閉
3.2.9 互斥鎖和游標
3.3 共享池的相關(guān)參數(shù)
3.4 共享池故障處理
3.4.1 著名的ORA-4031
3.4.2 其他共享池常見故障
3.5 共享池優(yōu)化的主要思路
第4章 理解控制文件
4.1 控制文件的內(nèi)部結(jié)構(gòu)
4.1.1 控制文件和控制文件事務(wù)
4.1.2 控制文件自動擴展
4.1.3 如何轉(zhuǎn)儲和分析控制文件
4.1.4 文件頭和控制文件信息
4.2 故障處理和優(yōu)化
4.2.1 丟失或者損壞控制文件的處理方法
4.2.2 控制文件的優(yōu)化
第5章 理解REDO日志
5.1 什么是REDO日志
5.2 REDO的基本原理
5.2.1 介質(zhì)恢復和實例恢復的基本概念
5.2.2 變化矢量和REDO記錄
5.2.3 日志緩沖和LGWR
5.2.4 日志切換和REDO日志文件
5.2.5 事務(wù)提交和回滾的過程
5.3 REDO優(yōu)化
5.3.1 BULK操作能減少REDO嗎
5.3.2 如何優(yōu)化LOG FILE SYNC等待事件
5.3.3 SHUTDOWN ABORT無害嗎
5.3.4 關(guān)于REDO日志優(yōu)化的建議
第6章 理解UNDO
6.1 UNDO的基本原理
6.1.1 UNDO表空間和回滾段
6.1.2 ITL和UNDO
6.1.3 如何轉(zhuǎn)儲UNDO
6.1.4 UNDO自動管理是如何工作的
6.1.5 系統(tǒng)回滾段的作用
6.1.6 著名的ORA-1555
6.1.7 回滾段手工管理
6.2 如何分析和優(yōu)化UNDO
第7章 理解PGA、臨時表空間和排序
7.1 基本概念
7.1.1 臨時表空間和臨時段
7.1.2 PGA和排序
7.1.3 PGA和PGA_AGGREGATE_ TARGET
7.1.4 你應(yīng)該知道的PGA自動管理內(nèi)幕
7.2 PGA優(yōu)化的要點
第8章 理解ASM的結(jié)構(gòu)
8.1 什么是ASM
8.2 ASM的結(jié)構(gòu)
8.2.1 ASM DISKHEADER的結(jié)構(gòu)
8.2.2 ASM FILE DIRECTORY文件結(jié)構(gòu)
8.2.3 ASM ALIAS DIRECTORY文件結(jié)構(gòu)
8.2.4 ASM DISK DIRECTORY文件結(jié)構(gòu)
8.2.5 從ASM存儲結(jié)構(gòu)談ASM日常維護的要點
8.3 如何使用KFED分析和修改ASM數(shù)據(jù)
8.4 如何使用AMDU導出ASM文件
第9章 理解數(shù)據(jù)塊結(jié)構(gòu)
9.1 理解數(shù)據(jù)塊頭結(jié)構(gòu)
9.2 理解ITL
9.3 理解記錄結(jié)構(gòu)
9.4 解析Oracle字段的內(nèi)部數(shù)據(jù)存儲格式
9.5 理解LOB的存儲結(jié)構(gòu)
第10章 理解表的結(jié)構(gòu)
10.1 到底什么是“表”
10.1.1 PCTFREE和行鏈
10.1.2 那些逝去的老參數(shù)
10.1.3 減少熱塊沖突的方法
10.2 從數(shù)據(jù)塊結(jié)構(gòu)看目前主流容災技術(shù)
10.3 案例——簡單任務(wù)
第11章 理解索引
11.1 反轉(zhuǎn)鍵索引的誤區(qū)
11.2 索引訪問的方式
11.2.1 小表用索引有意義嗎
11.2.2 位圖索引為什么不適合大并發(fā)量環(huán)境
11.3 重建索引的作用
11.4 索引使用的“三大紀律八項注意”
11.5 案例——索引危機
第12章 理解分區(qū)表
12.1 什么是分區(qū)表
12.2 分區(qū)表對海量數(shù)據(jù)的意義
12.2.1 分區(qū)表和歷史數(shù)據(jù)歸檔
12.2.2 分區(qū)表和高水位推進
12.2.3 分區(qū)表和RAC環(huán)境
12.2.4 分區(qū)主鍵和分區(qū)粒度的選擇
第13章 理解序列
13.1 什么是序列
13.2 序列的使用和優(yōu)化
第二部分 分析思路篇
第14章 問題分析綜述
14.1 如何抓住蝴蝶效應(yīng)中的那只蝴蝶
14.2 為什么要強調(diào)基礎(chǔ)概念
14.3 工作中的好習慣帶來的福利
第15章 DBA分析思路的探討
15.1 問題分析總路線圖
15.2 普通故障的分析路線
15.3 性能問題的分析路線
15.4 SQL語句的分析路線
15.5 利用你知道的原理縮小問題的范圍
15.6 關(guān)閉問題的條件
15.7 靈活運用你的知識
15.8 DBA需要與時俱進
15.9 多表連接的優(yōu)化技巧
15.10 理論如何聯(lián)系實踐
第三部分 典型案例篇
第16章 RAC故障分析
16.1 LOG_ARCHIVE_MAX_PROCESS導致的RAC腦裂
16.2 RAC系統(tǒng)故障的處理過程
16.3 三天兩次嚴重故障
第17章 ORA-600故障
17.1 ORA-600 [12700]錯誤的分析過程
17.2 ORA-600 [kdsgrp1]的處理案例
第18章 性能問題分析
18.1 壓力測試遇到的問題
18.2 IMP導入性能問題的分析
18.3 并行操作為什么無法執(zhí)行
第19章 SQL優(yōu)化
19.1 一個常用的SQL優(yōu)化方法
19.2 一個查找IP所屬區(qū)域的SQL優(yōu)化思路
結(jié)束語章節(jié)摘錄
版權(quán)頁: 插圖: 對于單實例的系統(tǒng),實例恢復一般是在數(shù)據(jù)庫實例異常故障后數(shù)據(jù)庫重啟時進行,當數(shù)據(jù)庫執(zhí)行了SHUTDOWN ABORT命令或者由于操作系統(tǒng)、主機等原因宕機重啟后,在ALTER DATABASE OPEN時,就會自動進行實例恢復。而在。RAC環(huán)境中,如果某個實例宕掉了,活著的實例將會接管,替宕掉的實例做實例恢復。除非是所有的實例都宕掉了,這樣的話,第一個執(zhí)行ALTER DATABASE OPEN的實例將會做實例恢復。這也是REDO日志文件作為實例私有的組件必須存放在共享存儲上的原因。 Oracle數(shù)據(jù)庫的高速緩存機制是以性能為導向的。高速緩存機制應(yīng)該最大限度地提高數(shù)據(jù)庫的性能,因此緩存被寫人數(shù)據(jù)文件時總是盡可能推遲。這種機制大大提高了數(shù)據(jù)庫的性能,但是當實例出現(xiàn)故障時,可能存在一些問題。 首先,可能某些事物對數(shù)據(jù)文件的修改并沒有完全寫入磁盤,或者磁盤文件中丟失了某些已提交事務(wù)對數(shù)據(jù)文件的修改信息。其次,可能某些還沒有提交的事務(wù)對數(shù)據(jù)文件的修改已經(jīng)被寫入磁盤文件了。也有可能某個原子變更有一部分數(shù)據(jù)已經(jīng)被寫人文件,而另外一部分數(shù)據(jù)還沒有被寫入磁盤文件。實例恢復就是要通過ONLINE REDO LOG文件中記錄的信息,自動完成上述數(shù)據(jù)的修復工作。這個過程是完全自動的,不需要人工干預。 在這個機制里,有兩個問題需要解決。第一個是如何確保已經(jīng)提交的事務(wù)不會丟失,第二個是如何在數(shù)據(jù)庫性能和實例恢復所需要的時間上做出平衡,既確保數(shù)據(jù)庫性能不會下降,又保證實例恢復可以快速進行。編輯推薦
Oracle資深專家白鱔、儲學榮聯(lián)袂打造數(shù)據(jù)庫力作以真實的案例貫穿《DBA的思想天空——感悟Oracle數(shù)據(jù)庫本質(zhì)》全書,剖析數(shù)據(jù)庫技術(shù)原理帶領(lǐng)讀者感悟DBA思想精粹,揭示原理,但不是簡單地炫耀內(nèi)部原理,而是結(jié)合內(nèi)部原理讓DBA理解分析思路。圖書封面
圖書標簽Tags
無評論、評分、閱讀與下載