剑破冰山—Oracle开发艺术 前言
前言
?
長久以來,Oracle管理類的書籍遍地開花,并涌現(xiàn)出了一批優(yōu)秀的實戰(zhàn)作品,但在Oracle開發(fā)方面,卻多數(shù)都是基礎性的語法書籍,很少有較為深入的實戰(zhàn)性的作品問世。久而久之,大多數(shù)人認為Oracle開發(fā)就是select、insert之類的DML語句最多再有點集合操作外加觸發(fā)器、函數(shù)之類的存儲過程,但這就好像冰山一樣,粗略的一看,只是看到冰山露出水面的尖角而已。而我們知道,冰山在水面下的部分,遠比其水面上的部分要巨大得多。要想探究水面下的冰山,其中之一的方法就是分而治之深入研究,跟隨七位有多年豐富Oracle開發(fā)經(jīng)驗的作者的指引,欣賞他們各自的拿手好戲,學習他們的思路與方法,破開冰山深入其中,從而提升自己的Oracle開發(fā)水平。
?
本書是一本通過講解Oracle數(shù)據(jù)庫開發(fā)案例來說明Oracle數(shù)據(jù)庫功能特性以及編程思路和設計方法的書籍。通過對每個案例的詳細分析和講解,使讀者了解對同一類開發(fā)任務應如何做并能夠領會為何這么做,達到融會貫通的目的。
?
本書主要面向中、高級用戶,所以讀者最好具有一定的Oracle數(shù)據(jù)庫使用基礎和程序設計基礎(例如,熟悉基本SQL語句和任何一種過程語言),最好有一定的程序設計經(jīng)驗。但初級用戶也能從中學到很多有用的東西,包括設計思想和技巧等。通過本書的學習,相信讀者的Oracle開發(fā)水平會上一個新的臺階。
?
本書的案例內容涉及面比較廣泛,包括編程規(guī)范、表結構設計、表壓縮、分析函數(shù)以及高級查詢,從常規(guī)數(shù)據(jù)處理的設計到各類行列轉換技巧,從Oracle的各種實用工具的用法到問題診斷、優(yōu)化等步驟都進行了講解。另外,還針對Oracle某些容易錯的陷阱作了介紹,并提出了相應的解決辦法,對某些操作提出了提高效率的措施并進行了驗證。
?
在眾多內容中,本書也有所側重,力求將作者理解最深入的部分介紹給讀者。例如動態(tài)SQL,PL/SQL塊的使用、影響執(zhí)行計劃的因素、減少日志生成以及并行技術等。選擇這些作為側重點的原因有4個方面:第一,目前市面上類似書籍對這些方面的內容涉及不多,而且不夠深入;第二,這些內容在通常的程序設計中使用非常頻繁;第三,這些內容能使讀者更加了解Oracle系統(tǒng)的工作機制;第四,消除很多讀者的認識誤區(qū),例如,認為Oracle數(shù)據(jù)庫的SQL只是在數(shù)據(jù)查詢方面很強大,并因此將SQL僅僅定位在查詢語言上。事實上,通過閱讀本書,讀者將會發(fā)現(xiàn) Oracle的SQL功能是如此強大。在開發(fā)中,很多過去必須依靠過程語言實現(xiàn)的功能,比如循環(huán)、行間運算,通過分析函數(shù)、遞歸子查詢等,SQL基本上都能實現(xiàn)。而且,利用SQL能使開發(fā)工作事半功倍,極大地提高開發(fā)效率和效率。
?
本書精選了10多個有獨特的設計思想和編寫技巧的案例來進行分析講解。出版社網(wǎng)站提供包含所有案例的源程序下載,讀者可復制這些代碼到自己的系統(tǒng)中,隨時查看程序的運行結果,以加深對代碼的理解。
?
我們7位Oracle技術專家來自北京、加拿大、上海、福建、海南、河北等地,在電信、制造、統(tǒng)計、航空、金融、證券等行業(yè)工作多年,工作領域包括項目管理、系統(tǒng)架構、數(shù)據(jù)庫、數(shù)據(jù)倉庫和數(shù)據(jù)挖掘等。
?
本書共分20章。
蘇旭暉(newkid)是一名定居境外的資深程序員,也是ITPUB上最為活躍的熱心網(wǎng)友之一,非常關注國內Oracle數(shù)據(jù)庫領域,在百忙之際還為我們送來了大禮:第18章“11gR2的新特性:遞歸子查詢”,讓讀者有機會使用Oracle提供的最新的技術開發(fā)項目。他更認真審核了我們每個人的文章,指出了很多錯誤和不完善的地方,為本書的完成發(fā)揮了重要的作用。
王保強(bq_wang)編著了第1章、第10章、第11章和第20章。丁俊(dingjun123)編著了第4章、第5章、第6章和第7章。梁敬彬(wabjtam123)編著了第2章、第3章、第13章、第14章、第15章、第16章和第17章。懷曉明(lastwinner)編著了第12章。賈書民編著了第7章。盧濤(〇〇)編著了第8章、第19章,并對第2章、第7章的部分內容作了補充。
各章的主要內容如下:
?
第1章“大話數(shù)據(jù)庫編程規(guī)范”通過風趣的語言講解了Oracle開發(fā)過程中的書寫規(guī)范、命名規(guī)范、變量命名、注釋規(guī)范、語法規(guī)范、腳本規(guī)范的一些規(guī)則和建議。
第2章“Oracle開發(fā)常用工具及使用”的“AWR工具與性能優(yōu)化”一節(jié)描述了AWR的基本功能和使用步驟,并通過幾個經(jīng)典案例的演示讓讀者加深了印象,同時證實該工具的強大。“SQL_TRACE/10046事件”一節(jié)描述了如何通過該工具了解SQL的解析過程、執(zhí)行計劃、綁定變量、遞歸調用等詳細信息。最后通過系列10046事件跟蹤的成功案例來闡述該如何一步一步打開各扇SQL困惑大門。“計時和剖析工具”一節(jié)主要介紹了利用DBMS_PROFILER包分析PL/SQL代碼的方法和步驟,并根據(jù)剖析結果對代碼進行精細地調整。
第3章“探索MERGE方法”介紹了MERGE存在的原因、具備的特性及那些注意點,通過實例講述了MERGE用于復雜更新時的優(yōu)勢所在,希望讀者能記住這些經(jīng)典的方法,給自己的項目開發(fā)帶來便利。
第4章 神秘的NULL和令人討厭的CHAR分兩部分,第1部分通過大量的實例分析NULL的理論和使用,使讀者對NULL了然于胸,從而更好地使用NULL。第2部分通過對CHAR類型多角度的分析,講述特殊的字符類型CHAR的使用和注意點。這兩個知識點是Oracle開發(fā)中很重要的知識點,也是出問題很多的知識點,希望通過本章的學習,讀者能夠對這兩個知識點熟練掌握。
第5章 報表開發(fā)之擴展GROUP BY,這屬于高級SQL方面的知識,在報表開發(fā)中是很常見的,本章通過對擴展GROUP BY各個知識點的講解,并通過實例分析,講述如何高效地實現(xiàn)數(shù)據(jù)的多維分析統(tǒng)計,從而為決策者提供強大的報表支持。
第6章 探索Oracle自動類型轉換,這是Oracle開發(fā)中很重要的知識點,往往也是Oracle開發(fā)人員容易忽視或不完全知曉的知識點,本章通過對各種規(guī)則以及實例的講述,使讀者對隱式類型轉換有更深刻的認識,從而有助于檢查錯誤和開發(fā)高效的程序。
第7章 Where In List問題解析,通過對一個常見應用的探討,分析如何通過多種方法解決問題,重點講解如何對問題進行多角度分析,從提出問題到解決問題的過程,希望讀者能夠從這個實例中領會到一般復雜問題的分析和解決過程。
第8章“例說表結構設計和大數(shù)據(jù)量數(shù)據(jù)處理技術”通過各種不同實現(xiàn)的比較講述了一些表設計應遵循的規(guī)則,并分析了開發(fā)數(shù)據(jù)加載和卸載、數(shù)據(jù)匯總應用時可供采用的各種方法的特點。本章側重利用數(shù)據(jù)庫本身提供的SQL功能完成數(shù)據(jù)加工,而第19章側重使用過程語言開發(fā)。二章的例子有部分重疊,讀者可鑒別閱讀。
第9章“數(shù)據(jù)審核”講述了在Oracle中對表中數(shù)據(jù)進行高效列間審核和行間審核的各種方法,包括靜態(tài)SQL,PL/SQL、動態(tài)SQL,PL/SQL的使用方法和技巧。
第10章“趣談Oracle分析函數(shù)”講述了分析函數(shù)在BI場景中的一些應用以及自定義聚集函數(shù)的實現(xiàn)。
第11章“Oracle層次查詢”介紹了基本的層次查詢語法SELECT...START WITH... CONNECT BY ...語法、以及SYS_CONNECT_BY_PATH和WMSYS.WM_CONCAT函數(shù)的應用。
第12章 號段選取 主要利用層次查詢和分析函數(shù),通過對常見的號段選取的四種情況進行剖析解答,并通過 擴展環(huán)節(jié)拓展了這幾種情況的應用范圍,循序漸進帶你全面掌握此類問題的攻克方法。
第13章“分析SQL執(zhí)行計劃的關注點”并未對各種調優(yōu)知識進行特別深入的描述,而是將最實用部分提煉出告之讀者,力求讀者在讀完本章后能面對紛繁復雜的執(zhí)行計劃而保持清晰的頭腦,以最敏銳的視角去關注最需了解的信息,從而能迅速準確抓出主要矛盾,快速解決問題。
第14章“Oracle開發(fā)誤區(qū)探索”來源于日常工作中開發(fā)人員所經(jīng)歷的各個易錯環(huán)節(jié),具有較強的隱蔽性和欺騙性,希望讀者在閱讀完本章后能借鑒經(jīng)驗,在項目開發(fā)中少犯錯。
第15章“PL/SQL開發(fā)性能漫談”主要從重視解析、關注調用、簡潔為王、細致入微四個角度入手,結合詳細的案例說明和讀者共同探索PL/SQL開發(fā)優(yōu)化的方法和思想。
第16章“管道函數(shù)的學習與實戰(zhàn)應用” 結合詳細的示例描述了管道函數(shù)的特性、注意點、使用管道函數(shù)的場合等知識點。適當?shù)氖褂霉艿篮瘮?shù)技術將給項目開發(fā)帶來很大的便利。
第17章“巧用鎖特性避免重復啟動同一程序”來源于筆者項目中一次未考慮周全而導致系統(tǒng)數(shù)據(jù)錯誤的經(jīng)驗教訓,文中描述的技術方案是將鎖機制和異常捕獲巧妙結合,完美的解決了筆者的問題,并成功將該技術廣泛的應用到各個項目中。
第18章介紹11GR2的新功能:遞歸WITH子查詢。本章中的大部分例子看起來像是趣味數(shù)學題,似乎實用性不強,讀者們不妨視之為工作之余放松腦筋的益智類游戲,并從中得到某些啟發(fā)。也許在你解決下一個工作中的難題時,遞歸的思想就會大放異彩!
第19章“不可能的任務,挑戰(zhàn)Oracle”講解了用Oracle內部和第三方過程語言實現(xiàn)數(shù)據(jù)立方體的方法及提高效率的優(yōu)化方法,說明了在特定條件下,不用SQL,而采用高級語言編程解決高性能要求問題的必要性和可能性。
第20章“動態(tài)SQL擴展”通過一些翔實的案例講解了動態(tài)SQL的不同應用場景。
?
書中案例的基本運行環(huán)境是Oracle 10g R2,除非有特殊說明,在Oracle 9i中也能運行。個別Oracle 11g的新特性都專門指出。
?
本書在很多案例的重要部分都有提示、注意等特殊說明。目的是為了加深讀者的印象,避免不必要的錯誤,以使讀者能夠更高效地利用Oracle強大的功能和開發(fā)工具。
?
感謝 ITPUB 網(wǎng)站的創(chuàng)始人黃志洪(tigerfish) 為本書寫序,他在推動中國Oracle 數(shù)據(jù)庫的發(fā)展上功不可沒。本書正是在他的倡議和幫助下完成的。
感謝 楊廷琨(yangtingkun)、羅海雄(rollingpig)、張涵(zhangfengh)、楊向勇(yxyup)和 侯圣文(secooler),他們都是國內頂尖的Oracle 專家,感謝他們審核了書稿,并提出了寶貴意見。
感謝 ITPUB 的王蓓×××(貝貝),在本書的出版過程中,她做了大量的協(xié)調工作,才保證這本書的順利出版。
感謝梁敬弘博士對梁敬彬的章節(jié)作的仔細修改。
感謝電子工業(yè)出版社的張月萍策劃和許艷編輯,是她們的努力讓本書更具可讀性和完整性。
由于作者水平有限,書中難免還存在一些錯誤和不當之處,敬請批評指正。
?
編者
2010年8月
轉載于:https://blog.51cto.com/baoqiangwang/419812
總結
以上是生活随笔為你收集整理的剑破冰山—Oracle开发艺术 前言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 走向.NET架构设计—第四章—业务层分层
- 下一篇: 抢先体验 Windows PowerSh