本書提供了全面、實(shí)用的建議,以保證在復(fù)雜的生產(chǎn)環(huán)境中,能可靠且高效地運(yùn)行Oracle 數(shù)據(jù)庫。七位主要的Oracle 專家對(duì)Oracle 12c、11g 和其他*近版本的Oracle 數(shù)據(jù)庫匯集了一系列經(jīng)過驗(yàn)證的解決方案、實(shí)踐的例子以及循序漸進(jìn)的技巧。每一個(gè)解決方案都是精心設(shè)計(jì)的,以幫助有經(jīng)驗(yàn)的Oracle DBA和DMA 盡可能快地理解和修復(fù)嚴(yán)重的問題。本書不僅涵蓋了LOB 段、undo 表空間、高GC 緩沖區(qū)等待事件、糟糕的查詢響應(yīng)時(shí)間、閂鎖爭用、索引、XA 分布式事務(wù)、RMAN 備份/ 恢復(fù)等內(nèi)容,還深入地講解了DDL 優(yōu)化、VLDB 調(diào)優(yōu)、數(shù)據(jù)庫取證、自適應(yīng)游標(biāo)共享、數(shù)據(jù)泵、數(shù)據(jù)遷移、SSD、索引等內(nèi)容,并介紹了如何解決Oracle RAC 問題。
譯者序一
最初的時(shí)候,Anna 是約我寫一本書。 但寫書太費(fèi)精力了,以前寫過幾年的博客,知道這里面的辛苦。而寫書和寫博客又有很大的不同。 寫博客可以根據(jù)自己的想法,想到哪寫到哪,但寫書必須有一定的章法。所以Anna 約書的事情,雖然在寫,但進(jìn)展很慢,一拖再拖。2016 年上半年的時(shí)候,Anna 看我進(jìn)展太慢,就問我是否愿意先翻譯一本書。 我說可以試一試,但她給我看的書,并不怎么吸引我,就問還有沒有其他的書,她說有。 然后從列表中一眼看到了這本書。著手翻譯之前,也特意咨詢了一下Lunar 大神,她說她一個(gè)星期可以翻譯一章。但我開始翻譯之后,發(fā)現(xiàn)里面的工作量太大了,遇到不太好翻譯的段落,一下午也就只能翻譯1 頁。我的時(shí)間也太過于碎片化,一周根本翻譯不完一章,而全書共有20 章,所以最終邀請(qǐng)了周捷和臧強(qiáng)磊加入到翻譯團(tuán)隊(duì)。
翻譯的工作斷斷續(xù)續(xù)進(jìn)行了大半年,然后就是校驗(yàn)工作。 其實(shí)內(nèi)心一直有顧慮,擔(dān)心翻譯得好,砸了原作者們的招牌,這些作者們都是行業(yè)里的前輩。 他們把個(gè)人的經(jīng)驗(yàn)沉淀下來,如果因?yàn)槲覀兎g得不好,而影響了知識(shí)的傳遞,那就是真的犯罪了。 因?yàn)镚ilbert Highet 曾經(jīng)說過:A badly written book is only a blunder. A bad translation of a good book is a crime(寫本爛書不過是件糗事,而把好書譯成爛書則是犯罪!)。
真正翻譯的那段時(shí)間,基本都是犧牲睡眠時(shí)間來進(jìn)行的。可能是因?yàn)槲覀(gè)人的習(xí)慣,在晚上10 點(diǎn)到凌晨2 點(diǎn)這個(gè)時(shí)間段的效率特別高,夜深人靜,沒有其他雜事來打擾。有時(shí)候一個(gè)句子,要琢磨很久,有些句子,看完之后,能明白作者想表達(dá)的意思, 但是想用通順的中文表達(dá)出來,卻很困難。 而且這里面還有美語思維的問題。 比如原作者在表達(dá)一個(gè)意思時(shí),用了他們很習(xí)慣的方法,但是我們的語言中沒有這種文化,如果直譯,句子就會(huì)顯得特別生硬。在這些具體的細(xì)節(jié)琢磨的過程中,度過了一個(gè)又一個(gè)安靜的夜晚。
比如現(xiàn)在,寫著寫著就又到了凌晨1 點(diǎn)。 一個(gè)人的書房,一盞臺(tái)燈,還有那悠揚(yáng)的Canon 相伴,這樣的生活也很愜意。 每個(gè)人對(duì)生活的理解都不一樣,而我就是希望我的人生過的更有意義一些,正如我博客的座右銘所說:人的一生應(yīng)該是這樣度過的:當(dāng)他回首往事的時(shí)候,他不會(huì)因?yàn)樘摱饶耆A而悔恨,也不會(huì)因?yàn)槁德禑o為而羞恥;這樣,在臨死的時(shí)候,他就能夠說:我的整個(gè)生命和全部精力,都已經(jīng)獻(xiàn)給世界上最壯麗的事業(yè).....
當(dāng)然,每個(gè)人的時(shí)間都是有限的,每天都只有24 小時(shí)。 當(dāng)你選擇做一件事的時(shí)候,就做不了其他事情,這里首先要感謝我夫人給予我的支持。因?yàn)樗母冻龊屠斫猓也庞袝r(shí)間安安靜靜的在書房里做我的事情。其次要感謝2 個(gè)小伙伴:臧強(qiáng)磊和周捷,感謝你們犧牲很多的休息時(shí)間來一起完成本書的翻譯工作。
一個(gè)人活著的意義,不能以生命長短作為標(biāo)準(zhǔn),而應(yīng)該以生命的質(zhì)量和厚度來衡量。我從事了10 年Oracle 數(shù)據(jù)庫的工作,也希望能把自己對(duì)數(shù)據(jù)庫的理解沉淀下來,做一點(diǎn)有意義的事情。 在這條道路上我會(huì)一直走下去。 但因?yàn)闀r(shí)間和個(gè)人精力的原因,在本書的翻譯和校驗(yàn)過程中,雖然我們花費(fèi)了很多的時(shí)間,但仍然難免會(huì)出現(xiàn)一些錯(cuò)誤。如果您在閱讀的過程中發(fā)現(xiàn)這些錯(cuò)誤,請(qǐng)郵件告知我們,郵箱:ahdba@qq.com。 在此表示感謝。
最后感謝所有朋友們的支持與理解,希望你們也能從本書中獲益。
戴明明/Dave
寫于合肥
2017 年12 月9 日
譯者序二
轉(zhuǎn)眼之間,從事Oracle 相關(guān)工作已有五年時(shí)間。這五年間有兩個(gè)人對(duì)我的工作影響很大,
在此表示感謝。
首先感謝我的大哥,在我大學(xué)期間就一直鼓勵(lì)引導(dǎo)我學(xué)習(xí)Oracle 知識(shí)。因?yàn)樗矎氖翺racle 相關(guān)的工作,一是有這方面的經(jīng)驗(yàn),二是看到了Oracle 數(shù)據(jù)庫在當(dāng)今世界的巨大市場(chǎng)和前景。如今在Oracle 領(lǐng)域工作了五年時(shí)間,更加肯定了當(dāng)初的選擇是對(duì)的。其次感謝Dave,對(duì)我的Oracle 生涯有著重要的影響。Dave 在我剛工作時(shí)就已經(jīng)是Oracle領(lǐng)域的大神了。很多知識(shí)都是從他的博客上學(xué)習(xí)的,對(duì)我學(xué)習(xí)Oracle 提供了莫大的幫助。另外,也是Dave 給了我這個(gè)機(jī)遇,參與到本書的翻譯工作中,更是完成了我的一個(gè)夢(mèng)想,再次感謝。隨著大數(shù)據(jù)時(shí)代的到來和普及,數(shù)據(jù)毫無疑問是一個(gè)必不可少的角色,其重要性不用多說,甚至關(guān)系到一個(gè)公司的安危。而數(shù)據(jù)庫則承擔(dān)了保護(hù)數(shù)據(jù)和有效運(yùn)用數(shù)據(jù)的角色。由于Oracle 是當(dāng)今關(guān)系型數(shù)據(jù)庫中的王者,因此我們有必要學(xué)習(xí)并運(yùn)用好它。
本書是由國外幾位Oracle 領(lǐng)域的大師所編寫的,運(yùn)用各種工具來處理運(yùn)維中可能遇到的各種性能故障問題,并結(jié)合具體案例提供有效的解決辦法,其中也包含了一些Oracle 12c 的新特性的介紹和運(yùn)用,但是內(nèi)容絕不僅限于此。無論你是從事Oracle 相關(guān)工作多年的老手,還是剛進(jìn)入Oracle 領(lǐng)域工作的新人,本書都是學(xué)習(xí)進(jìn)階的上佳選擇。在翻譯過程中還要感謝我的同事,在工作上對(duì)我提供的幫助。感謝Dave,對(duì)我翻譯工作的巨大幫助,不僅要核對(duì)自己的翻譯內(nèi)容,還要校驗(yàn)我的翻譯內(nèi)容是否恰當(dāng)準(zhǔn)確。實(shí)際上,翻譯本書對(duì)我來說是一個(gè)很大的挑戰(zhàn):一是由于編寫本書的作者都是這個(gè)領(lǐng)域的前輩,涉及的知識(shí)面廣,很多都是新的知識(shí)點(diǎn)。二是由于本人水平有限,雖然后期進(jìn)行了反復(fù)的校驗(yàn),但是書中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。
最后,謹(jǐn)以本書獻(xiàn)給從事Oracle 數(shù)據(jù)庫,和想要從事Oracle 相關(guān)工作的朋友們,共勉!
臧強(qiáng)磊
2017 年12 月于合肥
拿到這本書的英文原文,已有近一年的時(shí)間了,是在一個(gè)非常機(jī)緣巧合的契機(jī)下,幾位好友經(jīng)過簡單的溝通或者說是一拍即合,就開始各自的拜讀和譯文進(jìn)程。說實(shí)話,對(duì)于翻譯IT技術(shù)類籍,一直以來非常謹(jǐn)慎,一來是因?yàn)槲冶旧碓谧龅谌竭\(yùn)維的工作,日常工作飽和度非常大,很難保障大量固定的譯文時(shí)間,擔(dān)心無法滿足出版書發(fā)行進(jìn)度的同時(shí)更不希望辱沒原文。其次更為重要的是,乍一看市面上關(guān)于這方面的書籍已經(jīng)很多了,不希望再做一些對(duì)讀者沒有切實(shí)幫助和實(shí)際意義的事情。但是當(dāng)我認(rèn)真閱讀完這本由多位國外技術(shù)大神的合力巨著后,我被書籍中遍布每個(gè)章節(jié)的大量干貨所深深吸引,區(qū)別于市面上很多其他書籍,這本書最大的特點(diǎn)是沒有任何基礎(chǔ)知識(shí)的贅述,各個(gè)章節(jié)都是開門見山地深入敵后,直接探討更深層次的問題根因、診斷方法和解決方案。這樣的寫作方式是非常難得的,因?yàn)槭忻嫔铣霭娴暮芏鄷歼是從基礎(chǔ)談起,有一定基礎(chǔ)的讀者在閱讀的時(shí)候往往總是會(huì)選擇直接跳過甚至只挑選部分段落。所以這本書籍的內(nèi)容安排顯得尤為高效,更適合一些有一定技術(shù)積累的讀者朋友,幫助他們進(jìn)一步凝練和提高。也是在這樣的前提下,我們積極地開始了這本書籍的翻譯工作,唯一的想法就是希望能夠幫助更多希望效獲取干貨的朋友們,譯文的每一個(gè)章節(jié)都對(duì)大家切實(shí)有用,這是我們莫大的動(dòng)力和榮幸。由于這本書是由多名國外技術(shù)大牛合著完成,各自的寫作風(fēng)格也不盡相同,翻譯過程中我們?cè)诒U霞夹g(shù)準(zhǔn)確性的前提下,盡可能地風(fēng)格統(tǒng)一地進(jìn)行了文辭修飾,以期望本書中文版在讀者閱讀時(shí)更具流暢性和思維連貫性。因?yàn)槲覀儓?jiān)信翻譯工作不僅僅是語義的轉(zhuǎn)換,更重要的是要注入更為本地化的閱讀習(xí)慣和思維方式。當(dāng)然,譯文中一定存在不完美的地方,請(qǐng)讀者朋友們給予諒解和指正,聯(lián)系郵箱:ahdba@qq.com。
譯者序三
譯者序三 ∣ VII
最后,感謝家人給予我們的大力支持,在枯燥和耗時(shí)的翻譯過程中,尤其得到愛人Cherry以及兩個(gè)小寶貝的理解,犧牲了大量本該陪伴他們的周末和假期時(shí)光。感謝一同翻譯此書的小
伙伴們,這是大家共同努力的結(jié)果。感謝出版社對(duì)我們翻譯時(shí)間上的寬限與包容。還要感謝原書的作者們,是你們寫出了這么優(yōu)秀的文字,才激發(fā)了我們的翻譯熱情。最后感謝讀者朋友們
的理解和支持,希望你們喜歡本書并從中受益。
周捷/Jet
寫于合肥
2017 年12 月10 日
前言
數(shù)據(jù)庫管理員的生活正變得越來越有挑戰(zhàn)性,艱苦的工作條件也迅速成為常態(tài)。DBA 面臨的問題是,在某些情況下可能會(huì)導(dǎo)致組織和單位每分鐘損失數(shù)百萬美元,甚至可能導(dǎo)致公司的數(shù)據(jù)庫基礎(chǔ)設(shè)施癱瘓。雖然這些情況不太可能發(fā)生,但是為了避免和阻止它們,DBA 需要提前做好準(zhǔn)備。本書的指導(dǎo)原則是展示如何盡可能快地修復(fù)可能會(huì)影響生產(chǎn)環(huán)境的嚴(yán)重的數(shù)據(jù)庫問題。本書通過檢查在任意Oracle 數(shù)據(jù)庫中隨時(shí)可能發(fā)生的真實(shí)例子來指導(dǎo)讀者完成必要的步驟,以解決手頭的問題。您可以使用本書來解決一些可能會(huì)遇到的大問題,而不是浪費(fèi)時(shí)間去試圖尋找導(dǎo)致數(shù)據(jù)庫異常問題的解決方案。即使沒有從本書找到解決當(dāng)前問題的方法,您也將學(xué)到如何快速地在網(wǎng)絡(luò)上搜索到問題的解決方案。本書背后的基本思想是,當(dāng)在生產(chǎn)環(huán)境中遇到嚴(yán)重的Oracle 數(shù)據(jù)庫問題時(shí),本書會(huì)在黑暗中為您提供光明。除一般的實(shí)踐外,本書還探討了一些常見的Oracle 數(shù)據(jù)庫問題及其快速解決方案,并以簡易的形式解釋了這些問題。對(duì)于Oracle DBADMA(Database Machine Administrator),本書將作為一本實(shí)用的技術(shù)指南,用于Oracle 數(shù)據(jù)庫中執(zhí)行日常的故障排除、調(diào)優(yōu)和問題解決。
本書的作者是著名的、經(jīng)驗(yàn)豐富的Oracle ACE、ACE Director 和Expert 團(tuán)隊(duì),本書的目標(biāo)是成為一本結(jié)合現(xiàn)實(shí)環(huán)境實(shí)際操作的例子和復(fù)雜的Oracle 數(shù)據(jù)庫場(chǎng)景故障診斷的問題解決手冊(cè)本書展示了如何:
y 選擇捷徑解決影響較大的問題 ;
y 使用從現(xiàn)場(chǎng)專家那里學(xué)到的可靠的工作技巧,讓工作更有效率;
y 制定自己的應(yīng)急計(jì)劃;
前言
前言 ∣ XV
y 執(zhí)行例行的主動(dòng)維護(hù),以確保環(huán)境的穩(wěn)定性;
y 使用行業(yè)標(biāo)準(zhǔn)的實(shí)踐工具和腳本,以找到更好的解決方案。
Tariq Farooq 是一名Oracle 技術(shù)專家、架構(gòu)師和問題解決者,在世界上最大的一些組織得非常復(fù)雜的環(huán)境中從事各種Oracle 技術(shù)工作已經(jīng)超過24 年。Mike Ault 于1980 年開始使用計(jì)算機(jī),自1990 年以來,Mike 作為顧問,一直在使用Oracle 的行業(yè)工作。Paulo Portugal 作為Oracle DBA,有超過15 年的IT 經(jīng)驗(yàn)。他是Oracle 11g OCM, Oracle 9i、 10g、 11g 和12c OCP,Oracle 10g 和11g 認(rèn)證專家,Oracle DBA 10g 認(rèn)證Linux 管理員,Oracle Exadata認(rèn)證實(shí)施專家。
戴明明,網(wǎng)名:Dave,Oracle ACE-A,ACOUG 核心成員,浙江應(yīng)用中間件與數(shù)據(jù)庫用戶組核心成員,CSDN 認(rèn)證專家。9年DBA經(jīng)驗(yàn),在Oracle 高可用方面有一定的經(jīng)驗(yàn)積累。 擅長Oracle數(shù)據(jù)庫診斷、性能調(diào)優(yōu),熱衷于Oracle 技術(shù)的研究與分享。曾在CSDN博客撰寫博客1000余篇(http://blog.csdn.net/tianlesoftware)。2012年度CSDN博客十大博客之星。
第1 章 LOB 段性能的診斷與調(diào)優(yōu)...........................................................1
1.1 LOB 數(shù)據(jù)類型的介紹 ......................................................................................... 1
1.1.1 解決LOB 問題:一個(gè)真實(shí)的案例 ....................................................... 2
1.1.2 另一個(gè)真實(shí)案例:HW 分析 .................................................................. 4
1.1.3 BASICFILE LOB :更完美的解決方案 ................................................ 7
1.2 BASICFILE 與SECUREFILE LOB ................................................................... 7
1.2.1 LOB 新舊類型的差異 ............................................................................ 8
1.2.2 遷移BASICFILE LOB 到SECUREFILE LOB .................................. 10
1.3 PCTFREE 對(duì)LOB 的影響 ................................................................................ 12
1.4 解決糟糕的INSERT 性能 ................................................................................ 15
1.5 總結(jié) .................................................................................................................... 15
第2 章 處理undo 表空間損壞.............................................................. 16
2.1 undo 管理概述 ................................................................................................... 16
2.1.1 UNDO_RETENTION 的重要性 .......................................................... 16
2.1.2 優(yōu)化UNDO_RETENTION .................................................................. 17
2.2 DTP、XA 和回滾段 .......................................................................................... 18
2.3 undo 表空間損壞的恢復(fù) ................................................................................... 20
2.3.1 預(yù)防、檢測(cè)和修復(fù)損壞 ....................................................................... 20
2.3.2 處理內(nèi)存損壞 ....................................................................................... 21
2.3.3 處理邏輯損壞 ....................................................................................... 24
2.3.4 解決介質(zhì)損壞 ....................................................................................... 24
2.4 總結(jié) .................................................................................................................... 27
目錄 ?O XVII
第3 章 處理全局緩存緩沖區(qū)忙等待事件................................................. 28
3.1 緩沖區(qū)忙等待事件概述 .................................................................................... 28
3.2 使用ORAchk 工具 ........................................................................................... 29
3.2.1 安裝ORAchk ........................................................................................ 29
3.2.2 ORAchk 執(zhí)行結(jié)果:示例輸出 ............................................................ 30
3.3 查找GC 緩沖區(qū)忙等待事件 ............................................................................. 32
3.3.1 用ADDM 查找事件的信息 ................................................................. 33
3.3.2 用AWR 查找等待事件的信息 ............................................................ 33
3.3.3 用ASH 查找等待事件的信息 ............................................................. 35
3.4 查找GC 緩沖區(qū)忙等待事件的原因 ................................................................. 36
3.4.1 使用ASH 視圖查找等待會(huì)話 ............................................................. 36
3.4.2 快速查找性能瓶頸 ............................................................................... 38
3.5 解決GC 緩沖區(qū)忙等待 ..................................................................................... 40
3.6 總結(jié) .................................................................................................................... 41
第4 章 自適應(yīng)游標(biāo)共享.......................................................................42
4.1 ACS 工作算法 ................................................................................................... 42
4.1.1 綁定敏感與范圍謂詞 ........................................................................... 43
4.1.2 綁定敏感與等式謂詞和直方圖 ........................................................... 45
4.1.3 綁定敏感與分區(qū)鍵 ............................................................................... 46
4.2 ACS 的使用 ....................................................................................................... 48
4.2.1 監(jiān)控ACS 的綁定感知 .......................................................................... 51
4.2.2 BUCKET_ID 和COUNT 的關(guān)系 ........................................................ 52
4.2.3 標(biāo)記游標(biāo)為綁定感知 ........................................................................... 55
4.3 游標(biāo)綁定感知 ................................................................................................... 61
4.4 一個(gè)真實(shí)案例 .................................................................................................... 64
4.5 總結(jié) .................................................................................................................... 69
第5 章 使用SPM 穩(wěn)定查詢響應(yīng)時(shí)間..................................................... 70
5.1 入門指南 ............................................................................................................ 70
5.2 創(chuàng)建SQL 計(jì)劃基線 ......................................................................................... 73
5.2.1 自動(dòng)捕獲計(jì)劃 ....................................................................................... 73
5.2.2 從游標(biāo)緩存加載計(jì)劃 ........................................................................... 76
5.3 偽造基線 ............................................................................................................ 77
XVIII ?O Oracle數(shù)據(jù)庫問題解決方案和故障排除手冊(cè)
5.4 Oracle 優(yōu)化器和SPM 的交互........................................................................... 81
5.4.1 當(dāng)CBO 計(jì)劃與SQL 計(jì)劃基線匹配時(shí) ................................................ 82
5.4.2 當(dāng)CBO 計(jì)劃與SQL 計(jì)劃基線不匹配時(shí) ............................................ 84
5.4.3 當(dāng)SQL 計(jì)劃基線不可復(fù)制時(shí) .............................................................. 89
5.5 SQL 計(jì)劃基線的復(fù)制性 .................................................................................... 93
5.5.1 重命名索引 ........................................................................................... 93
5.5.2 修改索引類型 ....................................................................................... 95
5.5.3 向索引中添加尾列 ............................................................................... 96
5.5.4 反向索引 ............................................................................................... 97
5.6 NLS_SORT 與SQL 計(jì)劃基線的復(fù)制性 ........................................................ 98
5.7 ALL_ROWS 與FIRST_ROWS ...................................................................... 100
5.8 自適應(yīng)游標(biāo)共享與SPM ................................................................................. 104
5.8.1 Oracle 11.2.0.3.0 中的ACS 和SPM .................................................. 105
5.8.2 Oracle 12.1.0.1.0 中的ACS 和SPM .................................................. 109
5.9 總結(jié) .................................................................................................................. 112
第6 章 DDL 優(yōu)化技巧和技術(shù)............................................................. 114
6.1 DDL 優(yōu)化的概念 ............................................................................................. 114
6.2 DDL 優(yōu)化的機(jī)制 ............................................................................................. 117
6.2.1 表基數(shù)